使用badIPs.com保護(hù)你的服務(wù)器,并通過(guò)Fail2ban報(bào)告惡意IP
這篇指南向你介紹使用 badips 濫用追蹤器(abuse tracker)和 Fail2ban 保護(hù)你的服務(wù)器或計(jì)算機(jī)的步驟。我已經(jīng)在 Debian 8 Jessie 和 Debian 7 Wheezy 系統(tǒng)上進(jìn)行了測(cè)試。
什么是 badIPs?
BadIps 是通過(guò) fail2ban 報(bào)告為不良 IP 的列表。
這個(gè)指南包括兩個(gè)部分,***部分介紹列表的使用,第二部分介紹數(shù)據(jù)提交。
使用 badIPs 列表
定義安全等級(jí)和類別
你可以通過(guò)使用 REST API 獲取 IP 地址列表。
- 當(dāng)你使用 GET 請(qǐng)求獲取 URL:https://www.badips.com/get/categories 后,你就可以看到服務(wù)中現(xiàn)有的所有不同類別。
- 第二步,決定適合你的等級(jí)。 參考 badips 應(yīng)該有所幫助(我個(gè)人使用 scope = 3):
- 如果你想要編譯一個(gè)統(tǒng)計(jì)信息模塊或者將數(shù)據(jù)用于實(shí)驗(yàn)?zāi)康?,那么你?yīng)該用等級(jí) 0 開(kāi)始。
- 如果你想用防火墻保護(hù)你的服務(wù)器或者網(wǎng)站,使用等級(jí) 2??赡芤惨湍愕慕Y(jié)果相結(jié)合,盡管它們可能沒(méi)有超過(guò) 0 或 1 的情況。
- 如果你想保護(hù)一個(gè)網(wǎng)絡(luò)商店、或高流量、賺錢的電子商務(wù)服務(wù)器,我推薦你使用值 3 或 4。當(dāng)然還是要和你的結(jié)果相結(jié)合。
- 如果你是偏執(zhí)狂,那就使用 5。
現(xiàn)在你已經(jīng)有了兩個(gè)變量,通過(guò)把它們兩者連接起來(lái)獲取你的鏈接。
- http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}
注意:像我一樣,你可以獲取所有服務(wù)。在這種情況下把服務(wù)的名稱改為 any。
最終的 URL 就是:
- https://www.badips.com/get/list/any/3
創(chuàng)建腳本
所有都完成了之后,我們就會(huì)創(chuàng)建一個(gè)簡(jiǎn)單的腳本。
1、 把你的列表放到一個(gè)臨時(shí)文件。
2、 在 iptables 中創(chuàng)建一個(gè)鏈(chain)(只需要?jiǎng)?chuàng)建一次)。(LCTT 譯注:iptables 可能包括多個(gè)表(tables),表可能包括多個(gè)鏈(chains),鏈可能包括多個(gè)規(guī)則(rules))
3、 把所有鏈接到該鏈的數(shù)據(jù)(舊條目)刷掉。
4、 把每個(gè) IP 鏈接到這個(gè)新的鏈。
5、 完成后,阻塞所有鏈接到該鏈的 INPUT / OUTPUT /FORWARD 請(qǐng)求。
6、 刪除我們的臨時(shí)文件。
為此,我們創(chuàng)建腳本:
- cd /home/<user>/
- vi myBlacklist.sh
把以下內(nèi)容輸入到文件。
- #!/bin/sh
- ### based on this version http://www.timokorthals.de/?p=334
- ### adapted by Stéphane T.
- _ipt=/sbin/iptables ### iptables 路徑(應(yīng)該是這個(gè))
- _input=badips.db ### 數(shù)據(jù)庫(kù)的名稱(會(huì)用這個(gè)名稱下載)
- _pub_if=eth0 ### 連接到互聯(lián)網(wǎng)的設(shè)備(執(zhí)行 $ifconfig 獲?。?nbsp;
- _droplist=droplist ### iptables 中鏈的名稱(如果你已經(jīng)有這么一個(gè)名稱的鏈,你就換另外一個(gè))
- _level=3 ### Blog(LCTT 譯注:Bad log)等級(jí):不怎么壞(0)、確認(rèn)壞(3)、相當(dāng)壞(5)(從 www.badips.com 獲取詳情)
- _service=any ### 記錄日志的服務(wù)(從 www.badips.com 獲取詳情)
- ### 獲取不良 IPs
- wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }
- ### 設(shè)置我們的黑名單 ###
- ### 首先清除該鏈
- $_ipt --flush $_droplist
- ### 創(chuàng)建新的鏈
- ### ***運(yùn)行時(shí)取消下面一行的注釋
- # $_ipt -N $_droplist
- ### 過(guò)濾掉注釋和空行
- ### 保存每個(gè) ip 到 $ip
- for ip in `cat $_input`
- do
- ### 添加到 $_droplist
- $_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "
- $_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP
- done
- ### ***,插入或者追加到我們的黑名單列表
- $_ipt -I INPUT -j $_droplist
- $_ipt -I OUTPUT -j $_droplist
- $_ipt -I FORWARD -j $_droplist
- ### 刪除你的臨時(shí)文件
- rm $_input
- exit 0
完成這些后,你應(yīng)該創(chuàng)建一個(gè)定時(shí)任務(wù)定期更新我們的黑名單。
為此,我使用 crontab 在每天晚上 11:30(在我的延遲備份之前) 運(yùn)行腳本。
- crontab -e
- 23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS
別忘了更改腳本的權(quán)限:
- chmod + x myBlacklist.sh
現(xiàn)在終于完成了,你的服務(wù)器/計(jì)算機(jī)應(yīng)該更安全了。
你也可以像下面這樣手動(dòng)運(yùn)行腳本:
- cd /home/<user>/
- ./myBlacklist.sh
它可能要花費(fèi)一些時(shí)間,因此期間別中斷腳本。事實(shí)上,耗時(shí)取決于該腳本的***一行。
使用 Fail2ban 向 badIPs 報(bào)告 IP 地址
在本篇指南的第二部分,我會(huì)向你展示如何通過(guò)使用 Fail2ban 向 badips.com 網(wǎng)站報(bào)告不良 IP 地址。
Fail2ban >= 0.8.12
通過(guò) Fail2ban 完成報(bào)告。取決于你 Fail2ban 的版本,你要使用本章的***或第二節(jié)。
如果你 fail2ban 的版本是 0.8.12 或更新版本。
- fail2ban-server --version
在每個(gè)你要報(bào)告的類別中,添加一個(gè) action。
- [ssh]
- enabled = true
- action = iptables-multiport
- badips[category=ssh]
- port = ssh
- filter = sshd
- logpath = /var/log/auth.log
- maxretry= 6
正如你看到的,類別是 SSH,從 https://www.badips.com/get/categories 查找正確類別。
Fail2ban < 0.8.12
如果版本是 0.8.12 之前,你需要新建一個(gè) action。你可以從 https://www.badips.com/asset/fail2ban/badips.conf 下載。
- wget https://www.badips.com/asset/fail2ban/badips.conf -O /etc/fail2ban/action.d/badips.conf
在上面的 badips.conf 中,你可以像前面那樣激活每個(gè)類別,也可以全局啟用它:
- cd /etc/fail2ban/
- vi jail.conf
- [DEFAULT]
- ...
- banaction = iptables-multiport
- badips
現(xiàn)在重啟 fail2ban - 從現(xiàn)在開(kāi)始它就應(yīng)該開(kāi)始報(bào)告了。
- service fail2ban restart
你的 IP 報(bào)告統(tǒng)計(jì)信息
***一步 - 沒(méi)那么有用。你可以創(chuàng)建一個(gè)密鑰。 但如果你想看你的數(shù)據(jù),這一步就很有幫助。
復(fù)制/粘貼下面的命令,你的控制臺(tái)中就會(huì)出現(xiàn)一個(gè) JSON 響應(yīng)。
- wget https://www.badips.com/get/key -qO -
- {
- "err":"",
- "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",
- "key":"5f72253b673eb49fc64dd34439531b5cca05327f"
- }
到 badips 網(wǎng)站,輸入你的 “key” 并點(diǎn)擊 “statistics”。
現(xiàn)在你就可以看到不同類別的統(tǒng)計(jì)信息。
(題圖:Pixabay , CC0)