利用iptables防止ssh暴力破解

之前一直没有关注过登陆日志,用 cat /var/log/auth.log命令查看的时候,centos对应cat /var/log/secure满屏满屏的"Failed password for root XXX.XXX.XXX.XXX",等了十多秒都没停下来,用ctrl + c终止后,查看auth.log文件大小,居然有67m,网上搜索了一下,用grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more 这个命令查看了有多少ip在暴力破解我的ssh,又是满屏满屏的。
找了两条防暴力破解的命令

1
2
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

第一句是说,对于外来数据,如果是 TCP 协议,目标端口号是 22,网络接口是 eth0,状态是新连接,那么把它加到最近列表中。

第二句是说,对于这样的连接,如果在最近列表中,并且在 60 秒内达到或者超过四次,那么丢弃该数据。其中的-m是模块的意思。
也就是说,如果有人从一个 IP 一分钟内连接尝试四次 ssh 登录的话,那么它就会被加入黑名单,后续连接将会被丢弃。

我在使用的时候,43.229.53.47这个ip 正在尝试ssh登录,使用了之后查看日志,果然停止了,效果还是很明显,使用之前,每分钟日志记录都在增加。

其他安全设置例如修改ssh端口,禁止root用户登录,禁止密码登录也可以让vps更安全,可参考这里.