Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

CentOS 7/8 禁用/啟用 Ping (ICMP) 及 iptables/firewalld 防火牆放行配置

編輯:關於伺服器

Ping (ICMP Echo Request/Reply) 是網絡連通性測試基礎工具,但也可能被用於主機發現、拒絕服務攻擊 (Ping of Death、ICMP Flood)。本文提供 CentOS 7/8 臨時/永久禁用 Ping、防火牆 (iptables/firewalld) 精確放行 ICMP 的配置方法,並說明安全與可用性的平衡建議。

方法一:內核參數控制 (臨時生效,重啟失效)

# 禁用 Ping (拒絕所有 ICMP Echo Request)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# 啟用 Ping (允許 ICMP Echo Request)
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# 查看當前狀態
cat /proc/sys/net/ipv4/icmp_echo_ignore_all  # 0=開啟, 1=關閉

方法二:sysctl 永久生效 (重啟保持)

# 1. 編輯配置文件
vi /etc/sysctl.d/99-icmp.conf
# 添加以下行:
net.ipv4.icmp_echo_ignore_all = 1  # 0=允許, 1=禁止

# 2. 應用配置
sysctl --system
# 或 sysctl -p /etc/sysctl.d/99-icmp.conf

# 3. 驗證
sysctl net.ipv4.icmp_echo_ignore_all

方法三:iptables 防火牆精確控制 (推薦生產環境)

優於內核參數:可針對特定 IP/網段、限制速率、記錄日誌。

# 1. 允許特定管理 IP Ping (假設管理網段 10.0.0.0/8)
iptables -I INPUT -s 10.0.0.0/8 -p icmp --icmp-type echo-request -j ACCEPT

# 2. 限制速率防 ICMP Flood (每秒最多 5 個, 突發 10 個)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s --limit-burst 10 -j ACCEPT

# 3. 拒絕其餘 ICMP Echo Request (可選: REJECT 返回不可達, DROP 靜默丟棄)
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT --reject-with icmp-host-prohibited

# 4. 保存規則 (CentOS 7 iptables-service)
service iptables save
# 或 iptables-save > /etc/sysconfig/iptables

# 5. 重啟服務
systemctl restart iptables

方法四:firewalld (CentOS 7/8 默認) 配置

# 1. 臨時允許 Ping (運行時生效, 重啟失效)
firewall-cmd --add-icmp-block-inversion  # 反轉邏輯: 默認拒絕, 白名單允許
firewall-cmd --add-icmp-block=echo-request  # 這句其實是阻斷, 需配合 inversion
# 正確做法: 使用 rich rule
firewall-cmd --add-rich-rule='rule protocol value=icmp icmp-type name=echo-request limit value=5/s accept'

# 2. 永久生效 (--permanent)
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp icmp-type name=echo-request limit value=5/s accept'
firewall-cmd --reload

# 3. 查看當前 icmp 規則
firewall-cmd --list-all
# 或
firewall-cmd --get-icmptypes

ICMP 類型對照表 (常用)

類型名稱代碼用途建議策略
echo-request8Ping 請求限速放行管理 IP,其餘拒絕/限速
echo-reply0Ping 回應允許 (狀態防火牆自動放行相關回應)
destination-unreachable3目標不可達 (含端口不可達)必須允許 (PMTUD、連接錯誤通知依賴)
time-exceeded11TTL 過期 (Traceroute 依賴)允許
parameter-problem12參數問題允許
source-quench4源抑制 (已廢棄)可拒絕
redirect5重定向通常拒絕 (防重定向攻擊)

驗證測試

# 本機測試
ping -c 3 127.0.0.1

# 外部測試 (管理 IP)
ping -c 3 服務器IP

# 外部測試 (非管理 IP, 應被拒絕/超時)
ping -c 3 服務器IP

# 抓包分析
tcpdump -i eth0 -nn icmp

安全與可用性平衡建議

  1. 不建議完全禁用 ICMP:會導致 PMTUD (路徑 MTU 發現) 失效,引發大包傳輸黑洞;Traceroute 失效;負載均衡健康檢查失效。
  2. 採用「限速 + 白名單」策略:管理網段全放行,其餘限速 (如 5-10 pps),既保留連通性測試能力,又防 ICMP Flood。
  3. 邊界防火牆同步策略:雲廠商安全組、硬件防火牆同樣配置 ICMP 限速白名單。
  4. 監控 ICMP 異常流量:watch -n 1 'iptables -nvL | grep icmp' 觀察計數器暴增。

科學配置 ICMP 策略,是網絡層安全加固與業務連通性保障的平衡藝術。

Copyright © Windows教程網 All Rights Reserved