我运行一个 CentOS 5.7 64 位服务器,它有一个奇怪的问题。
当我查看我的日志时,/var/log/secure
我注意到一个奇怪的 IP 正尝试使用许多奇怪的用户名连接到 ssh。
日志的输出:http://pastebin.com/raw.php?i=3uYjPrLL
我运行了已经阻止该 IP 的 fail2ban,并且我还通过 iptables 再次手动阻止了该 IP。
运行iptables -n -L
我得到了这个输出:
Chain fail2ban-SSH (1 references)
target prot opt source destination
DROP all -- 50.115.166.129 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
所以拦截已到位。Iptables 也在运行,我已经通过 iptables 拦截了许多 IP,这些拦截都运行正常。
但不知何故,这个 IP 却可以访问我的机器。有人知道这是怎么回事吗?
答案1
问题是您的fail2ban-SSH
链被应用于端口 22 的流量,而 sshd 并没有监听该端口。因此,fail2ban 会从身份验证日志中获取失败信息,并正确更新拒绝链。但 ssh 流量从未发送到该链,因此您的恶意攻击者(现在已被禁止与端口 22 通信)仍能够与 2222 上的 sshd 通信。
假设你正在使用标准 CentOS /etc/sysconfig/iptables
,你需要将当前部分中的行更改filter
为类似
-A INPUT -p tcp --dport 22 -j fail2ban-SSH
说
-A INPUT -p tcp --dport 2222 -j fail2ban-SSH
至于你的手动删除,你已经添加了它后那些字句
689M 126G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
和
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 state NEW
因此它永远不会被调用来限制端口 2222 的新流量或任何此类连接中的后续数据包,因为这些已经被允许。规则的顺序是必不可少的在 iptables 中,因为第一个决定性的匹配获胜。