fail2ban防暴力破解介紹使用

wyzsk發表於2020-08-19
作者: 布魯 · 2014/09/19 14:21

0x00 介紹


fail2ban可以監視你的系統日誌,然後匹配日誌的錯誤資訊(正則式匹配)執行相應的遮蔽動作(一般情況下是呼叫防火牆iptables遮蔽),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會呼叫防火牆遮蔽這個IP,而且可以傳送e-mail通知系統管理員,是一款很實用、很強大的軟體!

fail2ban由python語言開發,基於logwatch、gamin、iptables、tcp-wrapper、shorewall等。如果想要傳送郵件通知道,那還需要安裝postfix或sendmail。

fail2ban在pycon2014中演講,是一個相對成熟的第三方軟體。附上大會ppt部分內容:fail2ban-pycon2014.pdf。

百度盤:http://pan.baidu.com/s/1qWBHHBe

0x01安裝


1) apt-get 安裝

apt-get install fail2ban log watch gamin

2) yum安裝

yum install fail2ban logwatch gamin

3) 原始碼安裝

http://www.fail2ban.org/wiki/index.php/Downloads

目前有兩個版本:

stable    0.8.14 
beta       0.9.0

根據需要下載編譯安裝。

0x02 配置


安裝完成後配置檔案在目錄/etc/fail2ban/中:

/etc/fail2ban/fail2ban.conf  #fail2ban的配置檔案
/etc/fail2ban/jail.conf #阻擋設定檔案
/etc/fail2ban/filter.d/ #具體過濾規則檔案目錄 
/etc/fail2ban/action.d/ #具體過濾規則檢測到後採取相對應措施的目錄 

fail2ban預設有許多已經寫好的規則,如ssh、ftp、proftpd等常見應用軟體的支援,只需要設定enable屬性為true即可啟動,這裡就不闡述了。

0x03 監控nginx日誌


假設nginx預設日誌路徑為/var/log/nginx/access_log,需要防止駭客暴力破解HTTP FORM登陸,此登陸檢測連結為

http://test.com/login_check.do

根據分析正常登陸一般不超過三四次,並且登陸時間一般也不超過一分鐘;因此,規定檢測週期為1分鐘,最大嘗試登陸次數為10次;在規定時間內超過指定次數則被認為是駭客在嘗試暴力破解。

具體設定方法如下:

1) 首先在jail.conf檔案下追加以下內容:

[nginx]    ;規則名字
enabled = true ;是否戶用
port = http,https ;監控埠
filter = nginx    ;需要過濾匹配規則
logpath = /var/log/nginx/access_log; 日誌路徑
findtime =60    ;檢測週期 單位秒 以下一樣
bantime =300    ;iptable封禁IP時間
maxretry =10    ;最大嘗試次數
action = iptables[name=nginx, port=http, protocal=tcp] ;發現暴力破解採取iptalbes封禁IP的措施
sendmail[name=nginx, [email protected]]    ;發現暴力破解後採取sendmail傳送郵件的措施,需要注意的是:iptables和sendmail必須對齊,要不然會發生錯誤;不要問我為什麼會知道,我先哭會兒-_-!!!

2)然後建立 /etc/fail2ban/filter.d/nginx.conf檔案,並新增以下內容:

[Definition]
failregex =<HOST>.*-.*-.*POST.*/login_check.do.* HTTP\/1.*http://test.com.*$ ;需要匹配日誌發現攻擊行為的正則,<HOST>為fail2ban內建變數匹配IP,不可修改
ignoreregex =    ;需要忽略的正則

完成上述步驟就可以執行命令/etc/init.d/fail2ban restart重啟了。檢視iptables有fail2ban-nginx的規則和收到sendmail傳送fail2ban已經啟動的郵件就說明OK了。

不過運維的同學可能知道,sendmail傳送郵件延遲很多,並不好用,使用mutt代替sendmail是個不錯的選擇。安裝mutt的過程就不在時闡述了,這裡介紹我修改使用mutt傳送action的配置檔案。

1)首先建立一個/etc/fail2ban/action.d/mutt.conf檔案,然後新增以下內容:

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
#
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart = printf %%b "Hi,\n
The jail <name> has been started successfully.\n
Regards,\n
Fail2Ban"|mutt -s "[Fail2Ban] <name>: started on `uname -n`"<dest>
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop = printf %%b "Hi,\n
The jail <name> has been stopped.\n
Regards,\n
Fail2Ban"|mutt -s "[Fail2Ban] <name>: stopped on `uname -n`"<dest>
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck =
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionban = printf %%b "Hi,\n
The IP <ip> has just been banned by Fail2Ban after
<failures> attempts against <name>.\n
Regards,\n
Fail2Ban"|mutt -s "[Fail2Ban] <name>: banned <ip> from `uname -n`"<dest>
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: See jail.conf(5) man page
# Values: CMD
#
actionunban =
[Init]
# Default name of the chain
#
name = default
# Destination/Addressee of the mutt
#
dest = root

2)然後在jail.conf檔案下新增以下內容:

action = mutt[name=nginx, [email protected]]   

[email protected]名詞是筆者自己翻譯,可能表達的意思並不精確,請大牛們手下留情。有不對的地方歡迎指出,有興趣的同學也歡迎交流。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章