一個簡單的禁止ssh暴力登陸Python腳本

查看/var/log/secure 文件能夠看到不少認證失敗的Failure的ip登陸信息。因此根據secure日誌文件查看失敗的ip若是超過3次,那麼就把此ip寫入/etc/hosts.deny文件,禁止此ip登陸。python

收集 /var/log/secure 裏面的信息,如果某個IP 連接次數超過設定的次數 ,則把此ip記錄到/etc/hosts.deny裏面禁止登陸。bash

#!/usr/bin/env python

# -*- coding: utf-8 -*-

with open('/etc/hosts.deny') as f:    #獲取已經禁止的IP

    deny = f.read().split('\n')

with open('/var/log/secure') as f:    #獲取全部的記錄

    log = f.read().split('\n')

ipset = [ ]    #建立一個空的列表

for l in log:

    if 'Failed password' in l:

        ip = l.split(' from ')[1].split(' port ')[0]    #從記錄中取得IP

        ipset.append( "sshd:" + ip )    #以sshd:ip 這種形式保存在列表中

a=set(ipset)     #建立一個IP的集合

for j in a:

    if ipset.count(j) > 3:   #判斷輸錯密碼的次數

        with open('/etc/hosts.deny', 'a') as f:    #打開文件

            if j not  in deny:      #去重判斷,若是不在已經存在的禁止IP中就寫入

                f.write(j + '\n')
複製代碼
相關文章
相關標籤/搜索