fail2ban防止暴力破解-防止nginx伺服器web目錄被黑客掃描
1. 背景
剛買了阿里雲伺服器,準備用來部署自己的一些站點。結果剛把lnmp環境搭建好,才一天的時間就被來自不同地域IP不斷的掃描web站點目錄,這運氣怕是沒幾個人能遇到了,幸好之前有熟悉過防止暴力破解fail2ban服務。下面就來介紹一下這款服務軟體。寫這篇部落格參加以下文章:
http://www.361way.com/fail2ban-nginx/1825.html 參考-匹配RUL規則。
https://www.cnblogs.com/wangxiaoqiangs/p/5630325.html 參考-安裝教程
https://blog.csdn.net/shuchengzhang/article/details/50931123
https://blog.csdn.net/w958660278/article/details/80592928 參考-fail2ban從黑名單中移除IP
http://www.zsythink.net/archives/1199 參考-iptables配置規則
http://www.fail2ban.org/wiki/index.php/Main_Page 參考-官網文件
2. fail2ban的簡單介紹
Fail2ban 能夠監控系統日誌,匹配日誌中的錯誤資訊(使用正則表示式),執行相應的遮蔽動作(支援多種,一般為呼叫 iptables ),是一款很實用、強大的軟體。
如:攻擊者不斷嘗試窮舉 SSH 、SMTP 、FTP 密碼等,只要達到預設值,fail2ban 就會呼叫防火牆遮蔽此 IP ,並且可以傳送郵件通知系統管理員。
功能、特性:
1、支援大量服務:sshd 、apache 、qmail 等
2、支援多作動作:iptables 、tcp-wrapper 、shorewall 、mail notifications 等
3、logpath 選項中支援萬用字元
4、需要 Gamin 支援(Gamin 用於監控檔案和目錄是否更改)
5、如果需要郵件通知,則系統事先要確保能夠正常傳送郵件
3. fail2ban的安裝、配置檔案介紹
3.1 安裝
# 安裝epel-release
yum -y install epel-release
# 安裝fail2ban
yum -y install fail2ban
3.2 檔案目錄結構
/etc/fail2ban ## fail2ban 服務配置目錄
/etc/fail2ban/action.d ## iptables 、mail 等動作檔案目錄
/etc/fail2ban/filter.d ## 條件匹配檔案目錄,過濾日誌關鍵內容
/etc/fail2ban/jail.conf ## fail2ban 防護配置檔案
/etc/fail2ban/fail2ban.conf ## fail2ban 配置檔案,定義日誌級別、日誌、sock 檔案位置等
4. fail2ban的配置檔案介紹
4.1 fail2ban.conf配置檔案
shell > grep -v ^# /etc/fail2ban/fail2ban.conf
[Definition]
loglevel = 3 ## 定義日誌級別,預設
logtarget = /var/log/fail2ban.log ## 定義 fail2ban 日誌檔案
socket = /var/run/fail2ban/fail2ban.sock ## sock 檔案存放位置,預設
pidfile = /var/run/fail2ban/fail2ban.pid ## pid 檔案存放位置,預設
4.2 jail.conf 防護配置
shell > grep -v ^# /etc/fail2ban/jail.conf
[DEFAULT] ## 全域性設定,優先順序最小
ignoreip = 127.0.0.1/8 ## 不受限制的 IP ,多組用空格分割
bantime = 600 ## 非法 IP 被遮蔽時間(秒),-1 代表永遠封鎖
findtime = 600 ## 設定多長時間(秒)內超過 maxretry 限制次數即被封鎖
maxretry = 3 ## 最大嘗試次數
backend = auto ## 日誌修改檢測機制(gamin 、polling 、auto 三種)
usedns = warn
[ssh-iptables] ## 分類設定(基於 SSHD 服務的防護)
enabled = true ## 是否開啟防護,false 為關閉
filter = sshd ## 過濾規則 filter 名稱,對應 filter.d 目錄下的 sshd.conf
action = iptables[name=SSH, port=ssh, protocol=tcp] ## 動作引數
logpath = /var/log/secure ## 檢測系統登陸日誌檔案
maxretry = 5 ## 最大嘗試次數
更多項………………
4.3 配置防止nginx伺服器web目錄被黑客掃描
在jail.conf檔案末尾加以下內容
shell > vim /etc/fail2ban/jail.conf
[nginx]
enabled = true
port = http,https
filter = nginx
action = iptables[name=nginx, port=http, protocol=tcp]
logpath = /www/lnmp/log/nginx/access.log
bantime = 3600
findtime = 60
maxretry = 5
在etc/fail2ban/filter.d目錄下新增nginx.conf檔案並追加以下內容:
shell > vim /etc/fail2ban/filter.d/nginx.conf
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* 404 .*$
ignoreregex =
5. fail2ban跳過的坑
5.1 fail2ban無法啟動起來
檢查配置檔案格式是否正確
fail2ban-regex /www/lnmp/log/nginx/access.log /etc/fail2ban/filter.d/nginx.conf
根據啟動資訊查詢啟動原因,入坑(nginx日誌檔案路徑配置錯誤)
fail2ban-client start
5.2 如何刪除fail2ban中已被禁用的黑名單IP
fail2ban-配置
格式:
fail2ban-client set 服務規則 unbanip IP地址
例子:
fail2ban-client set nginx unbanip 8.8.8.8
iptaables 刪除對應的規則
# 按編號列出規則資訊
shell > iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-nginx tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain f2b-nginx (1 references)
num target prot opt source destination
1 REJECT all -- 8.8.8.8 0.0.0.0/0 reject-with icmp-port-unreachable
2 REJECT all -- 9.9.9.9 0.0.0.0/0 reject-with icmp-port-unreachable
3 RETURN all -- 0.0.0.0/0 0.0.0.0/0
# iptables 刪除標識 規則名稱 該規則下的編號
shell > iptables -D f2b-nginx 1