2012年9月27日 星期四

Fail2ban----防止暴力密碼猜測

Ubuntu下安裝:
sudo apt-get update
sudo apt-get install fail2ban

fail2ban的設定檔位置在/etc/fail2ban,有以下項目:
1.jail.conf(jail.local)
 主要設定檔,定義filter與action的對應
2.fail2ban.conf
  fail2ban的設定檔,設定logtarget、socket、loglevel等
3.filter.d/
  存放fail2ban過慮條件的資料夾,目錄內已經預設多種過濾條件
4.action.d/
  存放fail2ban阻擋動作的檔案設定

jail.conf的設定:
設定檔分為全域設定與個別設定;
全域設定:為預設的設定值,開頭名稱為DEFAULT,全域設定與個別設定衝突時,以個別設定為主

ignoreip = 127.0.0.1/8 # 忽略不限制的ip
  
bantime  = -1 # ip被阻擋的時間,單位:秒,-1表示永久阻擋
  
findtime  = 600 # 觸發的時間區間
  
maxretry = 3 # 最高嘗試錯誤的次數,實際上當設定為3時,當第4次錯誤後才會被阻擋!

backend = auto #選擇用哪一種方式去檢查要偵測的檔案是否有異動,可設定pyinotify,gamin,polling或auto。

個別設定,就是啟動要監視的服務,以ssh為例,要修改的位置如下:
[ssh] #開頭名稱可以自定 enabled = true #trur:啟用,false:停用 port = ssh #服務使用的port filter = sshd #監看的程序名稱
action = iptables[name=SSH,port=22,protocol=tcp] #指定達成條件後要執行的動作,若服務使用標準port,這一項設定可以省略,若服務使用的port不是標準port,須透過這項設定來指定服務使用的port logpath = /var/log/auth.log #需監看的記錄檔 maxretry = 3 #最高嘗試錯誤的次數
設定完須重新啟動fail2ban!

查看fail2ban2的阻擋狀態
sudo fail2ban-client status ssh  #指定的服務名稱須和jail.conf內的設定一致
Status for the jail: ssh
|- filter
|  |- File list:        /var/log/auth.log
|  |- Currently failed: 0
|  `- Total failed:     0
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     0

sudo fail2ban-client status postfix
Status for the jail: postfix
|- filter
|  |- File list:        /var/log/mail.log
|  |- Currently failed: 1
|  `- Total failed:     6
`- action
   |- Currently banned: 0
   |  `- IP list:
   `- Total banned:     1