我刚刚在 NetinVM(虚拟机内的一组虚拟机)中安装了 fail2ban
到目前为止一切顺利,我安装在一台特定的机器上(10.5.1.13),其中 ssh 位于 2222(全部在 root 上)
我从另一台机器(10.5.1.11)反复使用错误的密码 ssh 连接到第一台机器。
fail2ban 识别出“攻击”,并表示要禁止该 IP
fail2ban> status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 20
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 2
`- Banned IP list: 10.5.1.11
当我查看 iptables 时:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all -- dmzb.example.net anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
添加了此 REJECT 规则后,dmzb.emaple.net 的解析似乎正确:
$ ping dmzb.example.net
PING dmzb.example.net (10.5.1.11) 56(84) bytes of data.
64 bytes from dmzb.example.net (10.5.1.11): icmp_seq=1 ttl=64 time=0.940 ms
并将添加到 iptables 中的域名正确解析为“攻击者”的 IP
尽管如此,我仍然可以从“攻击者”的机器上进行 ssh 试验,获取密码请求,如果输入正确的密码,甚至可以进入。
更新: 按照建议,尝试过
$ iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-sshd tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all -- 10.5.1.11 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/0 0.0.0.0/0
ip 似乎是正确的,但仍然没有应用禁止。
答案1
在您的规则集中,您将 fail2ban 检查与端口 22 绑定,但在您编写的描述中,您的 ssh 实际上监听端口 2222。要检查它,请从iptables-save -c
或开始iptables -L -n -v
。检查相应规则的计数器。此外,tcpdump 对您来说也是非常有用的工具。