Security

阻止來自特定國家/地區的所有流量的相對簡單的方法?

  • September 21, 2016

我有一個在菲律賓沒有使用者的網路應用程序,但經常受到垃圾郵件發送者、卡片測試卡和其他不良活動的轟炸。我可以在日誌中看到他們在菲律賓擁有 IP,並且最初是通過 google.ph 或其他網站找到我的.ph網站。

我有很好的過濾器和安全檢查,所以它們並沒有造成太大的損害,但儘管如此,我真的厭倦了。他們用盡了頻寬,填滿了我的數據庫、濫用日誌和安全日誌,浪費了我的時間來命名帳戶等。

雖然絕大多數菲律賓公民不是垃圾郵件發送者,而且我不能僅僅阻止每個讓我煩惱的國家,但在這一點上,我認為解決方案只是阻止從菲律賓到我的 web 應用程序的所有流量。(我知道封殺整個國家的IP不是什麼好做法,問題也很多,但是對於這個國家,我想破例。)

(我知道他們可以欺騙他們的 IP 地址,但至少我可以讓他們為它工作一點。)

我知道那裡有一些 geoip 服務。任何人都知道任何免費或廉價的服務?或者任何其他方式來過濾來自特定國家的流量?

如果重要的話,我在 Apache 2 上執行 PHP。

您可以使用免費的 IP 定位 API(如 IPInfoDB http://ipinfodb.com/index.php)基於 IP 地址執行此操作。

與這裡的大多數其他海報不同,我不會告訴你這是一個壞主意,你不應該這樣做,它不會解決你的問題,或者你應該做其他事情。這是發生在我們身上的事情:

來自中國和韓國的人(或者在中國和韓國使用代理,無論如何)一直在煩我們。埠掃描、爬取我們的網站以尋找漏洞、進行登錄嘗試等。我試圖忽略它們(fail2ban 通常會處理它們),但在某些時候它們對我們的打擊如此之大,以至於它實際上變成了 DoS 攻擊。當您同時有數百個連接來自嘗試使用您的網路伺服器作為代理的人,嘗試通過 SSH 連接到您的電腦,嘗試隨機使用者名和密碼時,它往往會給網站帶來壓力。我最終厭倦了。

我們沒有從中國或韓國獲得任何合法流量;我們公司不在那裡銷售(我們是電子商務),所以沒有失去合法流量的風險,所以我認為提前阻止他們而不是等待他們成為雞巴更容易。

  1. 訪問http://ip.ludost.net/並下載他們的 IP<->國家數據庫。
  2. 提取所有中文和韓文IP地址範圍。
  3. 為 netfilter安裝了ipset 模組
  4. 為中國和韓國建構 ipset 轉儲(見下文)
  5. 向 iptables 添加了規則,以靜默丟棄這些集合中的任何流量。

就是這樣。我們的問題使用者消失了,網路負載和伺服器減少了,我們輕鬆度過了聖誕節。

注意 1:您可以使用正常 iptables(即沒有 ipset)來執行此操作,但它比使用 ipset 計算成本更高。

注意 2:這是轉儲的外觀(如果需要,ipset 將為您生成這些):

# Generated by ipset 2.3.3 on Sat Oct  4 18:02:57 2008
-N china nethash --hashsize 5184 --probes 4 --resize 50
-A china 203.207.128.0/17
-A china 221.176.0.0/13
-A china 58.154.0.0/15
-A china 114.54.0.0/15
...etc...

注意 3:我們使用 nethash,因為我們所有的範圍都儲存為 CIDR 塊。如果您不想將它們轉換為 CIDR,則可以改用 iptreemap,但我想如果您獲得大量流量,效率可能會降低。

引用自:https://serverfault.com/questions/22462