最近發現Linux掃描SSH,MYSQL,FTP進行用戶爆力破解越來越猖獗!特意寫了腳本程序來解決下,理論上說:只要是對外網絡應用服務,此腳本可以通用,因爲它的實現原理很簡單“通過程序讀取->帶登錄信息驗證的日誌文件->調用iptables直接進行封殺”
腳本下載地址:http://down.51cto.com/data/486912
我以FTP舉列,我使用Pure-ftp作爲FTP服務器,它日誌文件跟系統日誌文件綁定在一起:/var/log/messages 知道這些以後,我說下如何使用此腳本
一:修改腳本參數如下
1. vi deny_port 打開此腳本,找到#Basic steup對如下5個參數跟據你實際需求修改.
- #Basic steup
- deny_port= '21' 服務端口
- log_path = '/var/log/messages' FTP日誌文件位置
- ip_count= '30' 累計驗證失敗多次,進行封殺
- aut_message = tm[4:10]+ '.*pure-ftpd.*failed.*' 抓取FTP日誌失敗驗證信息
- list_path='/shell/ip_list.txt 記錄封殺IP列表目錄(此文件程序會自動創建)
注意:aut_message = tm[4:10]+ '.*pure-ftpd.*failed.* 這可能有些人迷糊,這怎麼改啊。
A: tm[4:10]代表當前時間,這個不需要改
B: .* 代表多個字符串
下面是我的失敗驗證信息格式,這句意思:tm[4:10](當前時間)+ '.*pure-ftpd.*(從pureftpd)failed.*(到failed及後面結尾) 明白了吧
Aug 20 21:44:54 localhost pure-ftpd: ([email protected]) [WARNING] Authentication failed for user [kkk]
說明:通過修改如上5個參數,可以得出結論是:當天同一個IP使用FTP登錄驗證失敗30次以上,進行IP封殺
二:使用腳本
1:chmod 700 deny_port.py 設置權限
2:./deny_port.py 手動運行該腳本,如果發現如下報錯,是因爲日誌文件內容中沒有登錄失敗信息,這個報錯可以忽略!
- Traceback (most recent call last):
- File "./deny_port.py", line 49, in <module>
- D.iptables()
- File "./deny_port.py", line 40, in iptables
- for ip in self.ip_list.readlines():
- AttributeError: port instance has no attribute 'ip_list'
3:vi /etc/crontab 在計劃任務裏面,創建每隔1分鐘運行一次
- * * * * * root /shell/deny_port.py
三:測試腳本是否成功
怎麼測試呢,5個基本參數中ip_count 數字改小,我這裏改成ip_count= '1'
然後使用FTP故意輸錯密碼,讓它驗證下,
然後等一分鐘,使用iptables --list 看看是否被封殺了
在重新登錄FTP試試,連登錄信息沒木有了,完全屏蔽了
好了就到這裏了,祝大家好運!最後附下原代碼