1.到 http://www.fail2ban.org/wiki/index.php/Downloads
Packages -> swackware
資料夾的 fail2ban 是 swackware 12.1 使用的
此時點一直點選 Parent Directory 直到出現 slackware-13.0/ 的資料夾
再依序點選 slackware-13.0 -> system -> fail2ban -> 0.8.4
下載 fail2ban-0.8.4-noarch-1cv.txz 檔案
下載的檔案存放在 /tmp 資料夾
# cd /tmp
# pkgtools
選擇第一項
選擇Yes -> ok ,套件完成安裝
3.設定 jail.conf 檔
/etc/fail2ban/ 的內容:
fail2bad.conf fail2bad本身的設定檔
jail.conf 設定要判斷的程式的設定檔
action.d(目錄) 這是放fail2ban觸發的動作設定檔
filter.d(目錄) 這是放fail2ban分析log的規則檔
4.將 DNS 也加入 fail2bad 的規則
# vi /etc/named.conf
在最後面加入下列內容,然後存檔,重新啟動 Bindlogging { channel security_file { file "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; category security { security_file; }; }
5.編輯 jail.conf 設定檔
# vi /etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 127.0.0.1 192.168.1.0/24
(忽略的IP,中間要空一格)bantime = 86400
(Ban的時間(單位為秒))findtime = 600(這是監視的log時間區段,用來配合maxretry(單位為秒))
maxretry = 3
(針對來源在findtime設定的時間內,幾次失敗後要ban)backend = auto
(分為 gamin , polling ,auto ,選擇何種方式去偵測檔案是否有異動)# This jail corresponds to the standard configuration in Fail2ban 0.6. # The mail-whois action send a notification e-mail with a whois request # in the body. [ssh-iptables]
個別設定enabled = true
(啟動=true)(關閉=false)filter = sshd
(在 /etc/fail2ban/failter.d/內的判斷名稱)action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
要觸發的action.d動作檔名與參數上面的例子為: 使用iptables這動作檔並使用[ ]內的參數使用iptables阻擋,如果您的 SSH有改埠, 請在 port=ssh 改成您的埠 Port=12345
使用sendmail-whois這動作檔並使用[ ]內的參數將通知信寄到dest以及sender
logpath = /var/log/messages
(這個ssh服務的log檔位置,就是會顯示ssh登入失敗的那個檔案)maxretry = 5
(針對來源在findtime設定的時間內,幾次失敗後要ban) ..... 略 .....# These jails block attacks against named (bind9). By default, logging is off # with bind9 installation. You will need something like this: # # logging { # channel security_file { # file "/var/log/named/security.log" versions 3 size 30m; # severity dynamic; # print-time yes; # }; # category security { # security_file; # }; # }; # # in your named.conf to provide proper logging. # This jail blocks UDP traffic for DNS requests. [named-refused-udp] enabled = true filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=udp] sendmail-whois[name=Named, dest=you@ymail.com] logpath = /var/log/named/dns-security.log ignoreip = 168.192.0.1 # This jail blocks TCP traffic for DNS requests. [named-refused-tcp] enabled = true filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=tcp] sendmail-whois[name=Named, dest=you@ymail.com] logpath = /var/log/named/dns-security.log ignoreip = 168.192.0.1
6.啟動 fail2ban
# cd /etc/rc.d/
# chmod 755 rc.fail2ban
7.編輯 rc.local 以及rc.local_shutdown
# vi rc.local
加入/etc/rc.d/rc.fail2ban
# cd /etc/rc.d
# vi
rc.local_shutdown
加入/etc/rc.d/rc.fail2ban
8.啟動 .fail2ban
# rc.fail2ban start
======================
filter 的設定(filter.d/*.conf)
欲定義過濾條件,可以編輯 /etc/fail2ban/filter.d/*.(conf|local) 目錄下的檔案,如「sshd.conf」,後續於 jail.conf 中使用該 filter 則名為 sshd。每個 filter 設定檔中可分為以下幾個主要部分:
1.INCLUDES
可用來載入其他檔案的設定值,預設會自動引用 .local 檔案。
before
於設定檔載入前先引用此檔案。
after
於設定檔載入後再引用此檔案。
2.Definition
failregex
用來比對錯誤訊息的條件設定,使用 Python 的正規表示法語法。
ignoreregex
用來設定當符合此條件設定時,則忽略該行文字內容。
例如:
log顯示:
popa3d[123456]: connect from 59.105.191.124 (59.105.191.124)
條件表示:
failregex = popa3d(?:[d+])?: connect from S+ (<HOST>)
log顯示:
Info: auth(default): shadow(t1,211.20.219.236): Password mismatch
條件表示:
Info: auth(default): shadow(.*,<HOST>): Password mismatch
======================
action 的設定(action.d/*.conf)
定義動作內容,可以編輯 /etc/fail2ban/action.d/*.(conf|local) 目錄下的檔案,如「iptables.conf」,後續於 jail.conf 中使用該 action 則名為 iptables。每個 action 設定檔中可分為以下幾個主要部分:
INCLUDES
可用來載入其他檔案的設定值,預設可自動引用 .local 檔案。
Init
可用來預先定義變數,供 Definition 中使用。
Definition
1.actionstart:定義當 Fail2ban 啟動時,所要執行的指令,如初使化設定。
2.actionstop:定義當 Fail2ban 停止時,所要執行的指令。
3.actionban: 定義要阻擋某個 IP 時,所要執行的指令。
4.actionunban:定義要取消阻擋某個 IP 時,所要執行的指令。
5.actioncheck:定義於每次執行 actionban 或 actionunban 前,所要執行的指令,以判斷是否要執行 actionban 或 actionunban。