當我們需要限制某些不受歡迎的IP地址或整個網段訪問Linux服務器上的服務時,可以采取多種策略。以下兩種方法提供了有效的途徑來實現這一目標:
方法一:通過/etc/hosts.deny文件進行訪問控制
- 登錄到服務器:首先,您需要使用具有足夠權限的用戶賬戶登錄到您的Linux服務器。
- 編輯/etc/hosts.deny文件:使用您喜歡的文本編輯器(如vi、nano等)打開/etc/hosts.deny文件。
sudo vi /etc/hosts.deny
- 添加禁止規則:在文件中添加以下行以禁止特定IP或網段訪問ssh服務(或其他您想要限制的服務)。請注意,這里使用的IP地址和網段是示例,您需要根據實際情況進行替換。
sshd:203.XXX.XXX.189
sshd:203.XXX.XXX.0/24
第一行禁止了單個IP地址203.XXX.XXX.189
,而第二行則禁止了整個203.XXX.XXX.0/24
網段。
4. 保存并退出:保存您的更改并關閉文本編輯器。
5. 重啟服務:對于某些服務(如ssh),您可能需要重啟相關服務以使更改生效。但請注意,對于hosts.deny
和hosts.allow
文件,通常不需要重啟服務,更改會立即生效。然而,如果您的系統使用了xinetd
來管理服務,您可能需要執行以下命令:
sudo service xinetd restart
但請注意,現代系統通常不使用xinetd
來管理ssh,因此這一步可能不是必需的。確保了解您的系統配置。
方法二:使用iptables進行防火墻級別的訪問控制
- 登錄到服務器:同樣,首先使用具有足夠權限的用戶賬戶登錄到您的Linux服務器。
- 編輯規則文件或直接應用iptables規則:
您可以直接在命令行中輸入iptables規則,或者將它們添加到啟動腳本中(如/etc/rc.local
),以便在系統重啟時自動應用。但是,現代系統通常使用systemd
而不是/etc/rc.local
,因此更推薦的方法是創建自定義的systemd
服務單元文件或使用現有的管理工具(如firewalld
)。
以下是一些基本的iptables命令示例,用于禁止特定IP或網段的訪問:
sudo iptables -I INPUT -s 61.XXX.XXX.1 -j DROP
sudo iptables -I INPUT -s 61.XXX.XXX.0/24 -j DROP
sudo iptables -I INPUT -s 192.XXX.XXX.0/24 -p tcp –dport 80 -j DROP
這些命令分別禁止了單個IP、整個網段和特定網段對80端口的訪問。請根據您的需求替換IP地址和端口號。
3. 保存iptables規則:如果您直接應用了iptables規則,您需要確保這些規則在系統重啟后仍然有效。這可以通過安裝iptables-persistent
包或使用其他方法來實現,具體取決于您的Linux發行版。
4. 重啟服務器(如果需要):如果您更改了啟動腳本或安裝了新軟件包來保存iptables規則,您可能需要重啟服務器以使更改生效。但是,如果您只是直接應用了iptables規則,這一步通常不是必需的。
重要提示:在應用任何防火墻規則之前,請確保您已經仔細考慮了這些規則可能帶來的影響,并始終在生產環境之外的地方進行測試。錯誤地配置防火墻可能會導致您無法遠程訪問服務器或導致其他意外的服務中斷。