服务器ssh密码验证错误次数太多进行iptables屏蔽

额 早就想写这么个脚本了。这次有点时间写了一下,借助shell下的工具和python还是可以很快写好。

发现总有人爆破我ssh密码,我修改了端口还是跑。是盯上了还是怎么。如果关闭密码登录会好,但是每次换电脑就要添加公key,感觉还是密码方便一点。

# coding: utf-8import osimport timedef lo():    ban_ip_list = []    output = os.popen("""grep "Failed password for root" /var/log/auth.log | awk {'print $11'} | uniq -c | sort -rn""")    for l in output.readlines():        count, ip = l.split()        if int(count) > 5 and ip not in ban_ip_list:            ban_ip_list.append(ip)    print ban_ip_list    iptables_ban_ip_list = []    output = os.popen("""iptables -L -n|grep "DROP" | awk {'print $4'} """)    for l in output.readlines():        iptables_ban_ip_list.append(l.split()[0])    print iptables_ban_ip_list    iplist = list(set(ban_ip_list) - set(iptables_ban_ip_list))    print iplist    for ip in iplist:        os.popen("""iptables -I INPUT -s {} -j DROP """.format(ip))#iptables -L -n --line-numbers#iptables -D INPUT 8while 1:    lo()    time.sleep(1)    break

代码还可以改进,比如后边set了 前边就不用判断ip在不在列表里了。我是用服务器上另一个脚本用vim复制后按思路写的。功能跑通就不想改了。加入crontab搞定。以后有时间改成只屏蔽10分钟,这样实用性就强一点了。想法就是要记录下错误时间,错误时间加十分钟就是解禁时间。

服务器ssh密码验证错误次数太多进行iptables屏蔽

相关文章:

你感兴趣的文章:

标签云: