查看/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')
複製代碼