我正在研究使用 iptables 最新模块来预防 SSH 暴力破解。
我想知道 --hitcount 如何收集它将使用的值?是字节、数据包、连接跟踪项目数还是其他?
答案1
--rcheck --hitcount
检查内部计数器的值,该计数器的值每命中一次同一 的-m recent --set
(或) 规则,计数器的值就会增加一。规则是在数据包的上下文中进行评估的,因此数据包的数量就是跟踪的数量。以下是从我的 CentOS 6 系统上的页面获取的:--update
--name
man
iptables
--hitcount hits
[...] 使用时,这将缩小匹配范围,仅当地址在列表中并且接收到的数据包大于或等于给定值时才会发生。
答案2
项目列表保存在 下的文件中/proc/net/xt_recent/...
。如果不使用该--name my-name
选项,则名称设置为DEFAULT
。
要查看最近的列表,只需使用ls
:
ls /proc/net/xt_recent
要查看其中一个文件的内容,您只需使用less
:
less -S /proc/net/xt_recent/DEFAULT
这些字段都有名称,因此应该很容易理解它们代表什么。日期是一个很大的数字,大约是标准 Unix 日期的 4 倍(我还没搞清楚他们是如何生成这个数字的)。
现在,如果您想知道它被点击了多少次,您需要计算从第 8 列开始的时间戳的数量。我使用以下awk
命令执行此操作:
awk '{out="";for(i=1;i<=7;i++){out=out" "$i};print out,"hitcount:",NF-7}' /proc/net/xt_recent/DEFAULT
它按原样打印前 7 列,然后显示总列数减 7(代表命中次数)。
附注:最大命中数为 255。我还没有看到过有关该数字的记录,但如果你尝试使用--hitcount 500
,它将不起作用。