额 早就想写这么个脚本了。这次有点时间写了一下,借助shell下的工具和python还是可以很快写好。
发现总有人爆破我ssh密码,我修改了端口还是跑。是盯上了还是怎么。如果关闭密码登录会好,但是每次换电脑就要添加公key,感觉还是密码方便一点。
# coding: utf-8
import os
import time
def 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 8
while 1:
lo()
time.sleep(1)
break
代码还可以改进,比如后边set了 前边就不用判断ip在不在列表里了。我是用服务器上另一个脚本用vim复制后按思路写的。功能跑通就不想改了。加入crontab搞定。
以后有时间改成只屏蔽10分钟,这样实用性就强一点了。想法就是要记录下错误时间,错误时间加十分钟就是解禁时间。
上一篇: jquery post一个array
下一篇: java打jar包记录
heh