天天看點

使用 badIPs.com 保護你的伺服器,并通過 Fail2ban 報告惡意 IP

這篇指南向你介紹使用 badips 濫用追蹤器abuse tracker和 fail2ban 保護你的伺服器或計算機的步驟。我已經在 debian 8 jessie 和 debian 7 wheezy 系統上進行了測試。

什麼是 badips?

這個指南包括兩個部分,第一部分介紹清單的使用,第二部分介紹資料送出。

<a target="_blank"></a>

你可以通過使用 rest api 擷取 ip 位址清單。

第二步,決定适合你的等級。 參考 badips 應該有所幫助(我個人使用 <code>scope = 3</code>):

如果你想要編譯一個統計資訊子產品或者将資料用于實驗目的,那麼你應該用等級 0 開始。

如果你想用防火牆保護你的伺服器或者網站,使用等級 2。可能也要和你的結果相結合,盡管它們可能沒有超過 0 或 1 的情況。

如果你想保護一個網絡商店、或高流量、賺錢的電子商務伺服器,我推薦你使用值 3 或 4。當然還是要和你的結果相結合。

如果你是偏執狂,那就使用 5。

現在你已經有了兩個變量,通過把它們兩者連接配接起來擷取你的連結。

<code>http://www.badips.com/get/list/{{service}}/{{level}}</code>

注意:像我一樣,你可以擷取所有服務。在這種情況下把服務的名稱改為 <code>any</code>。

最終的 url 就是:

<code>https://www.badips.com/get/list/any/3</code>

所有都完成了之後,我們就會建立一個簡單的腳本。

1、 把你的清單放到一個臨時檔案。

2、 在 iptables 中建立一個鍊chain(隻需要建立一次)。(lctt 譯注:iptables 可能包括多個表tables,表可能包括多個鍊chains,鍊可能包括多個規則rules)

3、 把所有連結到該鍊的資料(舊條目)刷掉。

4、 把每個 ip 連結到這個新的鍊。

5、 完成後,阻塞所有連結到該鍊的 input / output /forward 請求。

6、 删除我們的臨時檔案。

為此,我們建立腳本:

<code>cd /home/&lt;user&gt;/</code>

<code>vi myblacklist.sh</code>

把以下内容輸入到檔案。

<code>#!/bin/sh</code>

<code>### based on this version http://www.timokorthals.de/?p=334</code>

<code>### adapted by stéphane t.</code>

<code></code>

<code>_ipt=/sbin/iptables    ### iptables 路徑(應該是這個)</code>

<code>_input=badips.db       ### 資料庫的名稱(會用這個名稱下載下傳)</code>

<code>_pub_if=eth0           ### 連接配接到網際網路的裝置(執行 $ifconfig 擷取)</code>

<code>_droplist=droplist     ### iptables 中鍊的名稱(如果你已經有這麼一個名稱的鍊,你就換另外一個)</code>

<code>_level=3               ### blog(lctt 譯注:bad log)等級:不怎麼壞(0)、确認壞(3)、相當壞(5)(從 www.badips.com 擷取詳情)</code>

<code>_service=any           ### 記錄日志的服務(從 www.badips.com 擷取詳情)</code>

<code>### 擷取不良 ips</code>

<code>wget -qo- http://www.badips.com/get/list/${_service}/$_level &gt; $_input || { echo "$0: unable to download ip list."; exit 1; }</code>

<code>### 設定我們的黑名單 ###</code>

<code>### 首先清除該鍊</code>

<code>$_ipt --flush $_droplist</code>

<code>### 建立新的鍊</code>

<code>### 首次運作時取消下面一行的注釋</code>

<code># $_ipt -n $_droplist</code>

<code>### 過濾掉注釋和空行</code>

<code>### 儲存每個 ip 到 $ip</code>

<code>for ip in `cat $_input`</code>

<code>do</code>

<code>### 添加到 $_droplist</code>

<code>$_ipt -a $_droplist -i ${_pub_if} -s $ip -j log --log-prefix "drop bad ip list "</code>

<code>$_ipt -a $_droplist -i ${_pub_if} -s $ip -j drop</code>

<code>done</code>

<code>### 最後,插入或者追加到我們的黑名單清單</code>

<code>$_ipt -i input -j $_droplist</code>

<code>$_ipt -i output -j $_droplist</code>

<code>$_ipt -i forward -j $_droplist</code>

<code>### 删除你的臨時檔案</code>

<code>rm $_input</code>

<code>exit 0</code>

完成這些後,你應該建立一個定時任務定期更新我們的黑名單。

為此,我使用 crontab 在每天晚上 11:30(在我的延遲備份之前) 運作腳本。

<code>crontab -e</code>

<code>23 30 * * * /home/&lt;user&gt;/myblacklist.sh #block bad ips</code>

别忘了更改腳本的權限:

<code>chmod + x myblacklist.sh</code>

現在終于完成了,你的伺服器/計算機應該更安全了。

你也可以像下面這樣手動運作腳本:

<code>./myblacklist.sh</code>

它可能要花費一些時間,是以期間别中斷腳本。事實上,耗時取決于該腳本的最後一行。

在本篇指南的第二部分,我會向你展示如何通過使用 fail2ban 向 badips.com 網站報告不良 ip 位址。

通過 fail2ban 完成報告。取決于你 fail2ban 的版本,你要使用本章的第一或第二節。

如果你 fail2ban 的版本是 0.8.12 或更新版本。

<code>fail2ban-server --version</code>

在每個你要報告的類别中,添加一個 action。

<code>[ssh]</code>

<code>enabled = true</code>

<code>action = iptables-multiport</code>

<code>badips[category=ssh]</code>

<code>port = ssh</code>

<code>filter = sshd</code>

<code>logpath = /var/log/auth.log</code>

<code>maxretry= 6</code>

<code>wget https://www.badips.com/asset/fail2ban/badips.conf -o /etc/fail2ban/action.d/badips.conf</code>

在上面的 badips.conf 中,你可以像前面那樣激活每個類别,也可以全局啟用它:

<code>cd /etc/fail2ban/</code>

<code>vi jail.conf</code>

<code>[default]</code>

<code>...</code>

<code>banaction = iptables-multiport</code>

<code>badips</code>

現在重新開機 fail2ban - 從現在開始它就應該開始報告了。

<code>service fail2ban restart</code>

最後一步 - 沒那麼有用。你可以建立一個密鑰。 但如果你想看你的資料,這一步就很有幫助。

複制/粘貼下面的指令,你的控制台中就會出現一個 json 響應。

<code>wget https://www.badips.com/get/key -qo -</code>

<code>{</code>

<code>"err":"",</code>

<code>"suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",</code>

<code>"key":"5f72253b673eb49fc64dd34439531b5cca05327f"</code>

<code>}</code>

現在你就可以看到不同類别的統計資訊。

原文釋出時間為:2017-04-26

本文來自雲栖社群合作夥伴“linux中國”