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次錯誤後才會被阻擋!

#選擇用哪一種方式去檢查要偵測的檔案是否有異動,可設定pyinotify,gamin,polling或auto。
backend = auto 個別設定,就是啟動要監視的服務,以ssh為例,要修改的位置如下:
[ssh] #開頭名稱可以自定 enabled = true #trur:啟用,false:停用 port = ssh #服務使用的port filter = sshd #監看的程序名稱
#指定達成條件後要執行的動作,若服務使用標準port,這一項設定可以省略,若服務使用的port不是標準
#port,須透過這項設定來指定服務使用的port
action = iptables[name=SSH,port=22,protocol=tcp] 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
====================================================
Ubuntu 18.04
/etc/fail2ban下,jail.conf是預設檔案,盡量不修改!可新增
jail.local,並在內設定需要的值,或者在/etc/fail2ban/jail.d內新增需要的設定檔,名稱必須是xxx.conf!
jail.local內容如下,也可將各服務單獨設定為一個.conf檔案,放於/etc/fail2ban/jail.d內
[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.0/24
bantime  = 600
findtime  = 600
maxretry = 3

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s

[dovecot]
enabled = true
port    = pop3,pop3s,imap,imaps,submission,465,sieve
#logpath = %(dovecot_log)s
logpath = /var/log/mail.log

[postfix-sasl]
enabled = true
port     = smtp,465,submission,imap3,imaps,pop3,pop3s
#logpath  = %(postfix_log)s
logpath = /var/log/mail.log


[postfix]
enabled = true
port     = smtp,465,submission
#logpath  = %(postfix_log)s
logpath = /var/log/mail.log

[postfix-rbl]
enabled = true
port     = smtp,465,submission
#logpath  = %(syslog_mail)s
logpath = /var/log/mail.log

手動封鎖ip

sudo fail2ban-client set 服務名稱 banip ip
手動解除封鎖的ip

sudo fail2ban-client set 服務名稱 unbanip ip
手動解除所有的封鎖ip
sudo fail2ban-client unban --all