如何使用“ ipset”阻止來自一個國家的IP地址
先前我們已經了解了如何使用GeoIP來限制或允許特定的國家/地區,但是在本文中,我們將研究如何使用帶有IPTables的ipset模塊來阻止較大的IP範圍。 IPset是基於命令行的實用程序,用於管理稱為IP的基礎並駐留在Linux內核中。 IP Set可以在路徑中存儲IP地址,網絡端口號(TCP / UDP),MAC地址,接口名稱或它們的組合,在組合寫入和撥號時提供閃電般的速度。 它是Linux中的一個關聯的Iptables防火牆應用程序,它使我們可以設置規則來快速輕鬆地阻止一組IP地址。 在這裡,我們將看到如何將ipset模塊與IPTables一起使用以及如何在Linux機器上阻止大範圍的IP地址。
更新我們的系統
首先,我們需要在Linux機器上升級軟件包,以便我們擁有最新的軟件包。 為了更新我們的系統,我們需要確保我們以sudo或超級用戶身份登錄。 為了登錄sudo,我們將運行以下命令:
$ sudo -s
進入後,讓我們繼續更新和升級我們的系統。
基於Debian的系統
# apt update && apt upgrade
基於Redhat的系統
# yum update
安裝IPset
大多數Linux發行版(如Ubuntu,Debian)都預先安裝了ipset。 但是某些發行版(如Centos)尚未預安裝,我們必須在其上安裝。 我們可以根據您使用的發行版運行以下命令來安裝ipset。
基於Debian的系統
# apt install ipset
基於Redhat的系統
# yum install ipset
創建IP集
現在我們已經在機器上安裝了ipset,我們將繼續創建IP集。 在這裡,我們必須創建一個ipset,其中包含我們準備阻止或限制的網絡子網。 因此,首先我們需要獲取準備添加到IP集中的子網列表。 為了獲得最新的子網,我們將使用最受歡迎的網站之一https://www.countryipblocks.net。 在這裡可以從https://www.countryipblocks.net/country_selection.php獲取子網列表。 在這裡,我們選擇了中國的幾個子網作為測試目的。
1.0.1.0/24 1.0.2.0/23 1.0.8.0/21 1.0.32.0/19 1.1.0.0/24 1.1.2.0/23 1.10.8.0/23 1.202.0.0/15 5.10.68.240/29 5.10.70.40/30 5.10.72.16/29
這是我們將在本文中阻止的子網的示例,但是在現實世界中,我們將擁有大量的子網。 因此,我們將使用任何腳本/編程語言並按如下所示創建命令列表。
# ipset create countryblock nethash # ipset add countryblock 1.0.1.0/24 # ipset add countryblock 1.0.2.0/23 # ipset add countryblock 1.0.8.0/21 # ipset add countryblock 1.1.0.0/24 # ipset add countryblock 1.1.2.0/23 # ipset add countryblock 1.10.8.0/23 # ipset add countryblock 1.202.0.0/15 # ipset add countryblock 5.10.68.240/29 # ipset add countryblock 5.10.70.40/30 # ipset add countryblock 5.10.72.16/29
IP撥號應用
現在我們的IP集已準備就緒,我們將使用IPTables中的ipset模塊將這些IP集應用為阻止狀態。
# iptables -A INPUT -m set --match-set countryblock src -j DROP
上面的命令阻止來自IP子網在上面生成的稱為countryblock的集合中定義的範圍的流量。 因此,其中列出的所有IP地址都將被阻止。
這樣,我們可以使用IPTables中的ipset模塊阻止某些塊。 我們可以創建不同國家/地區的IP集,以便我們可以根據需要應用它們。 當我們需要阻止來自特定國家或地區的某些流量時,這種方法非常有效,而且還可以根據需要允許IP範圍。 它們有大量的防火牆模塊和iptables,但是這一模塊非常簡單,快速且易於使用。 因此,如果您有任何問題,建議或反饋,請在下面的評論框中寫下。