额 早就想写这么个脚本了。这次有点时间写了一下,借助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分钟,这样实用性就强一点了。想法就是要记录下错误时间,错误时间加十分钟就是解禁时间。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

1 Responses so far.

  1. 小小 说:

    heh

Leave a Reply