Fail2ban详细教程,解决网站被扫描、CC攻击、ssh暴力破解、防爬虫等问题
最近網(wǎng)站總是被高頻度掃描,導(dǎo)致數(shù)據(jù)庫連接過多,打開頁面報“Error establishing a database connection“錯誤。最開始寫了個監(jiān)控網(wǎng)站的腳本,一旦發(fā)現(xiàn)網(wǎng)站打不開,重啟數(shù)據(jù)庫就好了。但是這幾天網(wǎng)站掛掉的頻率越來越高,不得不開始尋找新的辦法了。
對于網(wǎng)站被惡意掃描、暴力破解、CC 攻擊這一系列攻擊,都有相似的特征,即高頻率發(fā)請求導(dǎo)致主機資源使用率飆高。對于這些問題,必須要做兩件事,一個是識別惡意發(fā)請求的 IP,并封禁;二個是實現(xiàn)網(wǎng)站緩存、靜態(tài)化等功能減少數(shù)據(jù)庫查詢。今天介紹下識別頻繁發(fā)請求的 IP 并封 IP 的工具。
調(diào)研了 cckiller、Wordfence Security、fail2ban 這三個工具,最終選擇了 fail2ban。
fail2ban、cckiller、Wordfence Security 對比分析
首先是 cckiller,是國內(nèi)大佬實現(xiàn)的 linux 輕量級 cc 防御工具。是根據(jù)當(dāng)前 http 連接數(shù)計算并發(fā)量,如果某個 ip 的并發(fā)量大于某個值則在 iptables 中封禁該 ip。是個不錯的工具,但有兩個小問題。一個是只能根據(jù)某個時刻計算并發(fā)量封 IP,不能計算某個時間段的總請求數(shù)來封 IP;二個是兼容性不太好,適合在 centos 上運行,但個人習(xí)慣用 ubuntu。
其次是 Wordfence Security,wordpress 安全插件。據(jù)說可以根據(jù)某個時間段訪問網(wǎng)站總次數(shù)超過閾值后,封禁該 IP。但是問題較多,該插件比較龐大,只為了這個功能安裝插件不劃算;沒有漢化;該功能好像要付費才能用的更流暢。簡單試了下,不太合適。
最終選擇了 fail2ban,有以下優(yōu)點。
fail2ban 功能特色
根據(jù)實時日志,統(tǒng)計請求數(shù)量,如果某個時間段,某種請求超過了閾值,就可以封禁該 IP
支持 yum/apt 一鍵安裝。
配置簡單,配置文件幾行配置就能實現(xiàn)需求
支持多種監(jiān)控。簡單舉幾個例子??梢宰x取 ssh 的登錄日志,如果某個 ip 在某個時間段登錄失敗次數(shù)過多,則封該 ip;讀取 apache 訪問日志,如果某個 ip 在某個時間段防問次數(shù)過多,則封該 ip
支持郵件通知。
Fail2ban 安裝步驟&使用教程
使用場景:操作系統(tǒng)是 ubuntu,web 服務(wù)器為 apache。將 3 分鐘內(nèi)請求數(shù)量超過 300 次的 ip 視為惡意掃描 IP 直接封禁。(其他操作系統(tǒng)和 web 服務(wù)器配置流程基本一樣)
安裝 fail2ban
fail2ban 配置原理介紹
主要是配置/etc/fail2ban/jail.conf 文件
ssh 日志監(jiān)控
enabled=true,表示開啟監(jiān)控
filter 在/etc/fail2ban/filter.d/sshd.conf 中定義,主要定義了找到錯誤日志的正則
Logpath ssh 日志存放路徑
默認(rèn) findtime 為 600 秒
錯誤次數(shù)閾值為 6 次。
該配置意思為:實時監(jiān)控 ssh 登錄日志(/var/log/auth.log),如果某個 ip 在 600 秒內(nèi)登錄錯誤了 6 次(根據(jù) filter 正則判斷),則封禁該 IP
apache 日志監(jiān)控
enabled=true,表示開啟監(jiān)控
filter 在/etc/fail2ban/filter.d/ php-url-fopen.conf 中定義,主要定義了匹配訪問日志的正則。其中 fail2ban 默認(rèn)的正則有點問題,需要稍微修改下,修改后如下
Logpath apache 日志存放路徑
findtime 為 180 秒
訪問次數(shù)閾值為 200 次。
該配置意思為:實時監(jiān)控 apache 訪問日志(/var/log/apache2/access.log),如果某個 ip 在 180 秒內(nèi)訪問了 200 次(根據(jù) filter 正則判斷),則封禁該 IP
Fail2ban 管理&常用命令
使用三方 smtp 服務(wù)器發(fā)送通知郵件
由于騰訊云的 25 端口有限制不能使用系統(tǒng)自帶的 sendmail,需要調(diào)用三方的 stmp 服務(wù)器,如 163 服務(wù)器,并使用端口為 465 的 ssl 協(xié)議發(fā)送郵件。配置如下
安裝 mail ,apt-get install heirloom-mailx
修改/etc/nail.rc(ubuntu16.04 為/etc/s-nail.rc、centos 為/etc/mail.rc)
添加
發(fā)郵件測試
echo “郵件內(nèi)容”.|mail -v -s “郵件標(biāo)題” xxxx@qq.com
jail.conf 中 mta 改為 mail,即可
?
總結(jié)
以上是生活随笔為你收集整理的Fail2ban详细教程,解决网站被扫描、CC攻击、ssh暴力破解、防爬虫等问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机软考培训网校,计算机软考培训中心
- 下一篇: Postman Forbidden (