近日在查看Nginx的訪問日誌中,發現了大量404請求,仔細研究一番發現有人正在試圖爆破網站。 我剛上線你就企圖攻擊我?????? 這怎麼能忍。。 於是乎 查資料後得知有一個神奇的工具 fail2ban 可以配合 iptables 自動封IP iptables 是Centos6 的一種防火牆策略,在 ...
近日在查看Nginx的訪問日誌中,發現了大量404請求,仔細研究一番發現有人正在試圖爆破網站。
我剛上線你就企圖攻擊我?????? 這怎麼能忍。。
於是乎 --- 查資料後得知有一個神奇的工具 fail2ban 可以配合 iptables 自動封IP
iptables 是Centos6 的一種防火牆策略,在Centos7 中已被 Firewall所取代
本次實驗系統為Centos6
不說了開乾
1. 下載並安裝fail2ban
1 cd /usr/loca/src 2 wget https://github.com/fail2ban/fail2ban/archive/0.9.4.tar.gz 3 tar -zxf 0.9.4.tar.gz 4 mv 0.9.4 fail2ban-094 5 cd fail2ban-094 6 ./setup.py
2. 目錄結構
1 /etc/fail2ban # fail2ban 服務配置目錄 2 /etc/fail2ban/action.d # iptables 、mail 等動作文件目錄 3 /etc/fail2ban/filter.d # 條件匹配文件目錄,過濾日誌關鍵內容 4 /etc/fail2ban/jail.conf # fail2ban 防護配置文件 5 /etc/fail2ban/fail2ban.conf # fail2ban 配置文件,定義日誌級別、日誌、sock 文件位置等 6 7 cd /etc/fail2ban # 進入配置文件所在的目錄 8 cp jail.conf jail.local # 備份配置文件
3. 配置防護
首先編寫封禁訪問nginx 404狀態碼的ip地址的配置規則
1 vim /etc/fail2ban/filter.d/nginx.conf 2 3 [Definition] 4 failregex = <HOST> -.*- .*HTTP/1.* 404 .*$ 5 ignoreregex =
保存後測試配置文件相對於日誌是否正確
1 fail2ban-regex /home/wwwlogs/access.log /etc/fail2ban/filter.d/nginx.conf
然後將封禁規則加入配置文件
1 vim /etc/fail2ban/jail.conf # 文件尾部寫入 2 3 [nginx] 4 enabled = true 5 port = http,https 6 filter = nginx # 規則文件的名字 7 action = iptables[name=nginx, port=http, protocol=tcp] 8 # sendmail-whois[name=tomcat, dest=[email protected]] 發送郵件功能 9 logpath = /home/wwwlogs/access.log # 日誌路徑 10 bantime = 14400 # 封禁的時間 11 findtime = 3 # 在幾秒內 12 maxretry = 2 # 有幾次
4. 啟動
1 /etc/init.d/iptables start 2 /etc/init.d/fail2ban start 或 fail2ban-client start
5. 查看狀態等命令
1 fail2ban-client start # 啟動 2 fail2ban-client reload # 重載 3 fail2ban-client stop # 停止 4 fail2ban-client status # 查看狀態 5 fail2ban-client set nginx addignoreip 180.158.35.30 # 將ip加入nginx監獄的白名單 6 fail2ban-client set nginx delignoreip 180.158.35.30 # 將ip移除nginx監獄的白名單 7 fail2ban-client set nginx banip IP地址 # 手工ban 8 fail2ban-client set nginx unbanip IP地址 # 手工解
6. 查看fail2ban的日誌
fail2ban的日誌預設在 /var/log/fail2ban.log
日誌中記錄著Ban IP的記錄和UnBan IP的記錄
也有修改配置文件重載後的記錄
cat /var/log/fail2ban
7. 小結
fail2ban 還有許多強大的功能待研究,在 /etc/fail2ban/filter.d 中,有許多模板可以學習並使用
雖說把非法請求封禁一段時間看似安全些,但只要有對外的埠就不能保證伺服器的絕對安全。多瞭解不同工具的組合使用,才會使伺服器更加安全。