使用 badIPs.com 保護你的伺服器,並通過 Fail2ban 報告惡意 IP
這篇指南向你介紹使用 badips 濫用追蹤器和 Fail2ban 保護你的伺服器或計算機的步驟。我已經在 Debian 8 Jessie 和 Debian 7 Wheezy 系統上進行了測試。
什麼是 badIPs?
BadIps 是通過 fail2ban 報告為不良 IP 的列表。
這個指南包括兩個部分,第一部分介紹列表的使用,第二部分介紹資料提交。
使用 badIPs 列表
定義安全等級和類別
你可以通過使用 REST API 獲取 IP 地址列表。
- 當你使用 GET 請求獲取 URL:https://www.badips.com/get/categories 後,你就可以看到服務中現有的所有不同類別。
- 第二步,決定適合你的等級。 參考 badips 應該有所幫助(我個人使用
scope = 3
): - 如果你想要編譯一個統計資訊模組或者將資料用於實驗目的,那麼你應該用等級 0 開始。
- 如果你想用防火牆保護你的伺服器或者網站,使用等級 2。可能也要和你的結果相結合,儘管它們可能沒有超過 0 或 1 的情況。
- 如果你想保護一個網路商店、或高流量、賺錢的電子商務伺服器,我推薦你使用值 3 或 4。當然還是要和你的結果相結合。
- 如果你是偏執狂,那就使用 5。
現在你已經有了兩個變數,通過把它們兩者連線起來獲取你的連結。
http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}
注意:像我一樣,你可以獲取所有服務。在這種情況下把服務的名稱改為 any
。
最終的 URL 就是:
https://www.badips.com/get/list/any/3
建立指令碼
所有都完成了之後,我們就會建立一個簡單的指令碼。
1、 把你的列表放到一個臨時檔案。
2、 在 iptables 中建立一個鏈(只需要建立一次)。(LCTT 譯註:iptables 可能包括多個表,表可能包括多個鏈,鏈可能包括多個規則)
3、 把所有連結到該鏈的資料(舊條目)刷掉。
4、 把每個 IP 連結到這個新的鏈。
5、 完成後,阻塞所有連結到該鏈的 INPUT / OUTPUT /FORWARD 請求。
6、 刪除我們的臨時檔案。
為此,我們建立指令碼:
cd /home/<user>/
vi myBlacklist.sh
把以下內容輸入到檔案。
#!/bin/sh
### based on this version http://www.timokorthals.de/?p=334
### adapted by Stéphane T.
_ipt=/sbin/iptables ### iptables 路徑(應該是這個)
_input=badips.db ### 資料庫的名稱(會用這個名稱下載)
_pub_if=eth0 ### 連線到網際網路的裝置(執行 $ifconfig 獲取)
_droplist=droplist ### iptables 中鏈的名稱(如果你已經有這麼一個名稱的鏈,你就換另外一個)
_level=3 ### Blog(LCTT 譯註:Bad log)等級:不怎麼壞(0)、確認壞(3)、相當壞(5)(從 www.badips.com 獲取詳情)
_service=any ### 記錄日誌的服務(從 www.badips.com 獲取詳情)
### 獲取不良 IPs
wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }
### 設定我們的黑名單 ###
### 首先清除該鏈
$_ipt --flush $_droplist
### 建立新的鏈
### 首次執行時取消下面一行的註釋
# $_ipt -N $_droplist
### 過濾掉註釋和空行
### 儲存每個 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
### 刪除你的臨時檔案
rm $_input
exit 0
完成這些後,你應該建立一個定時任務定期更新我們的黑名單。
為此,我使用 crontab 在每天晚上 11:30(在我的延遲備份之前) 執行指令碼。
crontab -e
23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS
別忘了更改指令碼的許可權:
chmod + x myBlacklist.sh
現在終於完成了,你的伺服器/計算機應該更安全了。
你也可以像下面這樣手動執行指令碼:
cd /home/<user>/
./myBlacklist.sh
它可能要花費一些時間,因此期間別中斷指令碼。事實上,耗時取決於該指令碼的最後一行。
使用 Fail2ban 向 badIPs 報告 IP 地址
在本篇指南的第二部分,我會向你展示如何通過使用 Fail2ban 向 badips.com 網站報告不良 IP 地址。
Fail2ban >= 0.8.12
通過 Fail2ban 完成報告。取決於你 Fail2ban 的版本,你要使用本章的第一或第二節。
如果你 fail2ban 的版本是 0.8.12 或更新版本。
fail2ban-server --version
在每個你要報告的類別中,新增一個 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 之前,你需要新建一個 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 中,你可以像前面那樣啟用每個類別,也可以全域性啟用它:
cd /etc/fail2ban/
vi jail.conf
[DEFAULT]
...
banaction = iptables-multiport
badips
現在重啟 fail2ban - 從現在開始它就應該開始報告了。
service fail2ban restart
你的 IP 報告統計資訊
最後一步 - 沒那麼有用。你可以建立一個金鑰。 但如果你想看你的資料,這一步就很有幫助。
複製/貼上下面的命令,你的控制檯中就會出現一個 JSON 響應。
wget https://www.badips.com/get/key -qO -
{
"err":"",
"suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",
"key":"5f72253b673eb49fc64dd34439531b5cca05327f"
}
到 badips 網站,輸入你的 “key” 並點選 “statistics”。
現在你就可以看到不同類別的統計資訊。
(題圖:Pixabay , CC0)
via: https://www.howtoforge.com/tutorial/protect-your-server-computer-with-badips-and-fail2ban/
作者:Stephane T 譯者:ictlyh 校對:wxy
相關文章
- 通過Fail2ban保護你的雲伺服器AI伺服器
- 一鍵遮蔽惡意IP!保護你的伺服器免受攻擊伺服器
- 使用SRI保護你的網站免受第三方CDN惡意攻擊網站
- 使用 fail2ban 保護 frp 服務AIFRP
- 實戰:使用TCP/IP篩選保護伺服器安全TCP伺服器
- 防止獨立IP被其它惡意域名惡意解析
- 新指南保護家庭電腦免於惡意軟體入侵(轉)
- 人工智慧惡意使用報告:預測、預防和緩解人工智慧
- 印度Srikrishna委員會提交資料保護報告並提出具體建議
- 伺服器在使用過程中如何保護資料伺服器
- [譯] 通過安全瀏覽保護 WebViewWebView
- 如何在 Linux 上用 Fail2Ban 保護伺服器免受暴力攻擊LinuxAI伺服器
- AV-Comparatives:2019年9月惡意軟體防護報告
- Facebook季度安全報告:假冒ChatGPT的惡意軟體激增ChatGPT
- OpenAI等機構聯合釋出《人工智慧惡意使用》報告OpenAI人工智慧
- [譯]如何通過7個簡單步驟保護您的Linux伺服器Linux伺服器
- 使用jwt來保護你的介面服務JWT
- 使用 Let's Encrypt 保護你的網站網站
- 使用GnuPG保護你的備份資料
- 剖析Facebook惡意軟體通過Chrome擴充傳播的流程Chrome
- Windows10系統禁用“預先啟動反惡意軟體保護”功能的方法Windows
- iOS移動應用安全加固:保護您的App免受惡意攻擊的重要步驟iOSAPP
- Webroot:報告顯示97%的惡意軟體都是特製的——資訊圖Web
- 使用OAuth保護REST API並使用簡單的Angular客戶端OAuthRESTAPIAngular客戶端
- 是防毒軟體”失職“還是惡意軟體太”狡猾“?惡意軟體可繞過Android防護系統防毒Android
- Android漏洞允許黑客通過NFC傳播惡意軟體Android黑客
- 使用shiro保護你的springboot應用Spring Boot
- DNS伺服器保護方法:幾點保護DNS伺服器的有效方法小結DNS伺服器
- 實戰:使用IPSec保護伺服器安全伺服器
- Win10系統怎麼禁用“預先啟動反惡意軟體保護”功能Win10
- 微軟釋出《安全情報報告20卷》精簡報告:90%惡意網頁發現於Flash微軟網頁
- 保護你的 PL/SQL 程式碼!SQL
- AVL:2014年Android惡意程式碼發展報告Android
- 中國信通院:2020年小程式個人資訊保護研究報告(附下載)
- 使用Hashids來保護你的資料庫主鍵資料庫
- 科普系列之-使用Windows的NTFS保護你的敏感資料Windows
- 使用 WebAuthn 告別密碼:線上身份保護的未來Web密碼
- 研究顯示45%的惡意軟體有效負載通過微軟Office巨集傳送負載微軟