iptables防止ssh 暴力破解

最近在IBM 免费提供的Bluemix虚拟机上玩*代理,查看日志的时候无意间发现很多坏蛋在暴力破解我的ssh,真是用心良苦,俺可是用的key来登录哦,那我也要阻止一下这种行为,一开始是单个ip的reject,后来grep了一下日志,发现有很多坏蛋都在搞破坏,就找到如下语句来阻止。

[root@/var/log/audit01:54]#grep fail /var/log/audit/audit.*|cut -d' ' -f11|cut -d'=' -f2|sort |uniq -c|sort -n -k1  -r
  14634 58.218.211.38
  10228 ?
   7621 "/usr/sbin/sshd"
   2055 222.186.56.5
   1423 59.45.79.51
    467 59.45.79.36
    426 94.182.163.75
    348 41.215.4.70
    332 222.186.52.158
    312 218.65.30.92
    183 103.31.80.226
    182 5.10.78.52
    174 mail.nairobiwater.co.ke
    156 91.201.236.114
    124 5.10.78.54
     99 195.225.58.153
     93 61.132.52.22
     91 34.4e.0a05.ip4.static.sl-reverse.com
     63 218.26.243.138
     62 36.4e.0a05.ip4.static.sl-reverse.com
     54 115.92.27.100
     46 jsjty.com
     45 45.64.97.51
     22 201.238.210.145
     21 213.136.91.9
     18 193.169.86.77
     15 62.212.73.196
     12 112.74.35.46
     12 109.169.48.140
     
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 登录的话,那么它就会被加入黑名单,后续连接将会被丢弃。