iptables:阻止SSH字典攻击
Internet上的计算机难免遭受各类攻击,比如SSH字典攻击。如果你自信自己的密码足够强大,那么你也必须忍受系统日志中大量的“SSH Failed”记录。如果你习惯经常查看日志,那么这些记录会干扰你作出正确判断。Lesca尝试过各类方法,终于找到一种极为简单奏效的方法——利用iptables的recent模块:
# Prevent SSH Attack iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name SSH -j DROP # Enable Normal SSH Connection iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
这条规则已经在服务器上跑了一个月,阻止了大部分攻击。它会统计一分钟内与本机22端口(SSH端口)的新建连接数,如果某IP一分钟内达到3次,就忽略之后的连接。
另外如果你的默认INPUT策略是DROP,那么我们还需要明确告诉iptables“如果一分钟内没有连续连接超过3次,那么就允许连接”。
最后提醒大家一点,“允许连接”和“阻止攻击”的顺序不能颠倒,否则等于没有过滤。iptables非常“忠诚”,它严格按照规则办事,所以你不应该假设它理解你的意图。
References:
[1] Block brute force attacks with iptables
[2] SSH Dictionary Attack Prevention with iptables
版权声明
本文出自 Lesca 技术宅,转载时请注明出处及相应链接。
本文永久链接: https://www.lesca.cn/archives/block-ssh-dictionary-attack-with-iptables.html
ET
2012-05-11 at 22:20
哈,好方法~
willy
2012-05-18 at 22:31
其实我发现大多数ssh扫描是机器人干的。所以一般把ssh的端口从默认的22改成别的端口就会防止大多数扫描了
lesca
2012-05-18 at 22:46
确实如此。是个好方法!只是如果有普通用户可能带来不便。
willy
2012-05-18 at 23:48
哈哈,我改了ssh默认端口以后,系统日志里面干干净净,完全没有不请自来的ssh连接了。
lesca
2012-05-21 at 10:45
突然想到改了ssh端口后iptables防火墙又得重新设了。。