《自寫程序防止Linux FTP爆力破解》

 最近發現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個參數跟據你實際需求修改.

 

  1. #Basic steup  
  2. deny_port= '21'  服務端口
  3. log_path = '/var/log/messages' FTP日誌文件位置
  4. ip_count= '30' 累計驗證失敗多次,進行封殺
  5. aut_message = tm[4:10]+ '.*pure-ftpd.*failed.*' 抓取FTP日誌失敗驗證信息
  6. 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 手動運行該腳本,如果發現如下報錯,是因爲日誌文件內容中沒有登錄失敗信息,這個報錯可以忽略!

  1. Traceback (most recent call last): 
  2.   File "./deny_port.py", line 49in <module> 
  3.     D.iptables() 
  4.   File "./deny_port.py", line 40in iptables 
  5.     for ip in self.ip_list.readlines(): 
  6. AttributeError: port instance has no attribute 'ip_list' 

3:vi /etc/crontab 在計劃任務裏面,創建每隔1分鐘運行一次

  1. * * * * * root /shell/deny_port.py 

 

三:測試腳本是否成功

怎麼測試呢,5個基本參數中ip_count 數字改小,我這裏改成ip_count= '1'

然後使用FTP故意輸錯密碼,讓它驗證下,

然後等一分鐘,使用iptables --list 看看是否被封殺了

在重新登錄FTP試試,連登錄信息沒木有了,完全屏蔽了

好了就到這裏了,祝大家好運!最後附下原代碼

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章