要使用 CentOS 的 iptables 阻止特定 IP 地址,可以按照以下步驟操作。請注意,執行這些命令需要具有 root 權限或使用 sudo
。
臨時阻止(重啟后失效):
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
說明:
-A INPUT
:在 INPUT 鏈追加規則。-s 192.168.1.100
:指定要阻止的源 IP 地址。-j DROP
:丟棄匹配的數據包。永久阻止(重啟后仍然有效):
CentOS 7 及以上版本使用 firewalld
作為默認防火墻,推薦使用 firewalld
來管理防火墻規則。如果需要使用 iptables
持久化規則,可以安裝 iptables-services
并保存規則。
# 安裝 iptables-services
sudo yum install iptables-services
# 啟動并啟用 iptables 服務
sudo systemctl start iptables
sudo systemctl enable iptables
# 添加規則
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
# 保存規則
sudo service iptables save
對于 CentOS 6 或其他不支持 iptables-services
的版本,可以使用 service iptables save
命令,但具體方法可能因系統而異。
臨時阻止:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
sudo iptables -A INPUT -s 192.168.1.101 -j DROP
sudo iptables -A INPUT -s 192.168.1.102 -j DROP
使用通配符或范圍(例如,阻止 192.168.1.100 到 192.168.1.110):
sudo iptables -m iprange --src-range 192.168.1.100-192.168.1.110 -j DROP
臨時阻止:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.0-192.168.1.255 -j DROP
sudo iptables -L -n -v
如果需要刪除特定的規則,可以使用 iptables -D
命令。例如,刪除阻止 192.168.1.100
的規則:
sudo iptables -D INPUT -s 192.168.1.100 -j DROP
firewalld
進行更靈活的管理(推薦)firewalld
提供了更直觀和動態的方式來管理防火墻規則,并支持區域(zone)的概念。
查看 firewalld 狀態:
sudo firewall-cmd --state
查看所有開放端口:
sudo firewall-cmd --list-all
阻止單個 IP:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
重新加載 firewalld 配置:
sudo firewall-cmd --reload
刪除規則:
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
備份現有規則: 在修改 iptables 規則之前,建議備份當前的規則,以便在需要時恢復。
sudo iptables-save > /etc/iptables/rules.v4
順序重要性: iptables 規則是按順序匹配的,確保更具體的規則放在前面,以避免被更通用的規則覆蓋。
測試規則: 在應用規則后,使用 ping
或 telnet
等工具測試目標 IP 是否已被成功阻止。
權限: 修改 iptables 規則通常需要 root 權限,確保使用 sudo
或以 root 用戶身份執行相關命令。
持久化方法: 不同的 CentOS 版本可能有不同的持久化方法,推薦使用 firewalld
進行管理,尤其是在 CentOS 7 及以上版本中。
通過以上步驟,您應該能夠在 CentOS 系統中使用 iptables 或 firewalld 成功阻止指定的 IP 地址。如有進一步的問題,歡迎繼續提問!