fail2ban能夠監視你的系統日誌,而後匹配日誌的錯誤信息(正則式匹配)執行相應的屏蔽動做(通常狀況下是調用防火牆iptables屏蔽),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火牆屏蔽這個IP,並且能夠發送e-mail通知系統管理員,是一款很實用、很強大的軟件!php
fail2ban由python語言開發,基於logwatch、gamin、iptables、tcp-wrapper、shorewall等。若是想要發送郵件通知道,那還須要安裝postfix或sendmail。python
添加密碼策略,增長密碼複雜度nginx
修改ssh登陸端口web
禁止root登陸bash
配置fail2ban,拒絕失敗鏈接app
下載地址:http://www.fail2ban.org/wiki/index.php/Downloadsssh
安裝要求:tcp
Required:
- [Python2 >= 2.6 or Python >= 3.2](http://www.python.org) or [PyPy](http://pypy.org)模塊化
安裝:post
tar xvfj fail2ban-0.9.4.tar.bz2 cd fail2ban-0.9.4 python setup.py install cp files/debian-initd /etc/init.d/fail2ban update-rc.d fail2ban defaults service fail2ban start 添加開機啓動 chkconfig --add fail2ban chkconfig --list fail2ban 啓動 /etc/init.d/fail2ban start fail2ban-client status ssh-iptables
安裝完成後,服務配置目錄爲:/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 #啓動腳本文件
ssh遠程登陸5分鐘內3次密碼驗證失敗,禁止用戶IP訪問1小時,
一分鐘後解除限制。
[DEFAULT] #全局設置
ignoreip = 127.0.0.1 #忽略的IP列表,不受設置限制(白名單)
bantime = 3600 #屏蔽時間,單位:秒
findtime = 300 #這個時間段內超過規定次數會被ban掉
maxretry = 3 #最大嘗試次數
backend = auto #日誌修改檢測機制(gamin、polling和auto這三種)
[ssh-iptables] #針對各服務的檢查配置,如設置bantime、findtime、maxretry和全局衝突,服務優先級大於全局設置
enabled = true #是否激活此項(true/false)
filter = sshd #過濾規則filter的名字,對應filter.d目錄下的sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp] #動做的相關參數
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] #觸發報警的收件人
logpath = /var/log/secure #檢測的系統的登錄日誌文件
maxretry = 5 #最大嘗試次數
service fail2ban restart
鏈接三次失敗,第四次
[root@redbull ~]# ssh root@192.168.128 ssh: connect to host 192.168.128 port 22: Connection refused [root@redbull fail2ban]# fail2ban-client status ssh-iptables Status for the jail: ssh-iptables |- Filter | |- Currently failed: 0 | |- Total failed: 20 | `- File list: /var/log/secure `- Actions |- Currently banned: 2 |- Total banned: 3 `- Banned IP list: 192.168.5.128 192.168.5.131
監控pop、http等服務:
[pop3] enabled = true filter = courierlogin action = iptables[name=pop3, port=110, protocol=tcp] logpath = /var/log/maillog bantime = 1800 findtime = 300 maxretry = 30 [webmail] enabled = true filter = webmail action = iptables[name=httpd, port=http, protocol=tcp] logpath = /var/log/maillog bantime = 900 findtime = 300 maxretry = 5
fail2ban讀取nginx日誌禁止非法ip訪問
在fail2ban配置文件(/etc/fail2ban/fail2ban.conf)中添加如下記錄: [yunvn-get-dos] enabled = true port = http,https filter = nginx-bansniffer action = iptables[name=IT300, port=http, protocol=tcp] #sendmail-whois[name=IT300, dest=xxxxx@qq.com, sender=xxxxxx@163.com] logpath = /home/wwwlogs/access.log maxretry = 300 findtime = 60 bantime = 3600
修改/etc/fail2ban/action.d/iptables.conf actionban = iptables -I INPUT -p all -s -j DROP actionunban = iptables -D INPUT -p all -s -j DROP