如何使用“ 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,但是這一模塊非常簡單,快速且易於使用。 因此,如果您有任何問題,建議或反饋,請在下面的評論框中寫下。

Sidebar