Categories: Linux筆記

fail2ban install to CentOS 防爆力破解工具


主機常常會被騷擾,除了硬體防火牆的基本防護外,我們應該檢查LOG裡的錯誤資訊,
多一層防護,多一層保障!那這邊就不得不介紹超好用的軟體 fail2ban ,
除了基本的SSH FTP,還可以檢查Apache!以防駭客宵小!!

簡介:
fail2ban可以監視你的系統LOG,然後根據LOG的錯誤資訊執行相應的阻擋動作(一般情況下是使用防火墻阻擋),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會應用防火墻阻擋這個IP,而且可以發送e-mail通知系統管理員,是一款很實用、很大的軟件!
功能和特性:
1、支持大量服務。如sshd,apache,qmail,proftpd,sasl等等
2、支持多種動作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(寄信通知)等等。
3、在logpath選項中支持通配符
4、需要Gamin支持(注:Gamin是用於監視文件和目錄是否更改的服務工具)
5、需要安裝python,iptables,tcp-wrapper,shorewall,Gamin。如果想要發寄信,那必需安裝postfix或sendmail


核心原理:
其實fail2ban就是用來監控,具體是應用iptables來實現動作!
好了,那下面來說說具體怎安裝、部署吧。
一、首先是服務安裝
首先設定yum源,這裡採用的是yum直接裝(也可源碼安裝)
vim /etc/yum.repos.d/CentOS-Base.repo
在最後新增:
1. [atrpms]
2. name=Red Hat Enterprise Linux $releasever – $basearch – ATrpms
3. baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
4. gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
5. gpgcheck=1
6. enabled=1
然後直接就yum裝:yum -y install fail2ban
安裝完成後,服務設定目錄:/etc/fail2ban
/etc/fail2ban/action.d #動作文件夾,內含默認文件。iptables以及mail等動作設定
/etc/fail2ban/fail2ban.conf #定義了fai2ban日誌級別、日誌位置及sock文件位置
/etc/fail2ban/filter.d #條件文件夾,內含默認文件。過濾日誌關鍵內容設置
/etc/fail2ban/jail.conf #主要設定文件,模塊化。主要設置用ban動作的服務及動作閥值
/etc/rc.d/init.d/fail2ban #動本文件
二、安裝後設定
首先來看看日誌文件的默認定義:
cat /etc/fail2ban/fail2ban.conf |grep -v ^#
1. [Definition]
2. loglevel = 3
3. logtarget = SYSLOG #我們需要做的就是把這行改成/var/log/fail2ban.log,方便用來記錄日誌資訊
4. socket = /var/run/fail2ban/fail2ban.sock
再來看看主設定默認生效的設定:
cat /etc/fail2ban/jail.conf |grep -v ^# |less
1. [DEFAULT] #全局設置
2. ignoreip = 127.0.0.1 #忽略的IP列表,不受設置限制(白名單)
3. bantime = 600 #阻擋時間,單位:秒
4. findtime = 600 #這個時間段內超過規定次數會被ban掉
5. maxretry = 3 #最大嘗試次數
6. backend = auto #日誌修改檢測機制(gamin、polling和auto這三種)
7.
8. [ssh-iptables] #針對各服務的檢查設定,如設置bantime、findtime、maxretry和全局衝突,服務優先級大於全局設置
9. enabled = true #是否啟用此項(true/false)
10. filter = sshd #過濾規則filter的名字,對應filter.d目錄下的sshd.conf
11. action = iptables[name=SSH, port=ssh, protocol=tcp] #動作的相關參數
12. sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] #觸發報警的收件人
13. logpath = /var/log/secure #檢測的系統的登錄日誌文件
14. maxretry = 5 #最大嘗試次數
PS:logpath(Centos5和Rhel5中)要寫成/var/log/secure,這個是系統登錄日誌,不能隨意設置
service fail2ban start #動服務即可(就用默認的主設定文件裡定義的)
service iptables start #fail2ban依賴預iptables #之前改過日誌路徑,不行的話就再重fail2ban
三、測試功能
測試機:192.168.30.251
fail2ban:192.168.29.253
在測試機上ssh 192.168.29.253,且連續輸入超過5次密碼不對(經測試有延遲,多試幾次),就會出現下圖,連接不上

fail2ban上會生日誌記錄:阻擋了此ip的續連

四、擴展說明
其實fail2ban的功能還是很豐富的,剛剛只是測試了它的防ssh暴力破解功能。
下面簡單提下我用的一些功能:
本人是用在寄信服務器上,所以會監控pop、http等服務,具體設定見下(不做示範了)
1. [pop3]
2. enabled = true
3. filter = courierlogin
4. action = iptables[name=pop3, port=110, protocol=tcp]
5. logpath = /var/log/maillog
6. bantime = 1800
7. findtime = 300
8. maxretry = 30
9.
10. [webmail]
11. enabled = true
12. filter = webmail
13. action = iptables[name=httpd, port=http, protocol=tcp]
14. logpath = /var/log/maillog
15. bantime = 900
16. findtime = 300
17. maxretry = 5

五.查閱
使用命令fail2ban-client status ssh-iptables查看阻止狀態
[root@dgocean ~]# fail2ban-client status ssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/secure
| |- Currently failed: 0
| `- Total failed: 3
`- action
|- Currently banned: 1
| `- IP list: 14.216.43.98
`- Total banned: 1

或者
fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh-iptables

yan

Share
Published by
yan