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=關閉
# 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
優於內核參數:可針對特定 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
# 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
| 類型名稱 | 代碼 | 用途 | 建議策略 |
|---|---|---|---|
| echo-request | 8 | Ping 請求 | 限速放行管理 IP,其餘拒絕/限速 |
| echo-reply | 0 | Ping 回應 | 允許 (狀態防火牆自動放行相關回應) |
| destination-unreachable | 3 | 目標不可達 (含端口不可達) | 必須允許 (PMTUD、連接錯誤通知依賴) |
| time-exceeded | 11 | TTL 過期 (Traceroute 依賴) | 允許 |
| parameter-problem | 12 | 參數問題 | 允許 |
| source-quench | 4 | 源抑制 (已廢棄) | 可拒絕 |
| redirect | 5 | 重定向 | 通常拒絕 (防重定向攻擊) |
# 本機測試
ping -c 3 127.0.0.1
# 外部測試 (管理 IP)
ping -c 3 服務器IP
# 外部測試 (非管理 IP, 應被拒絕/超時)
ping -c 3 服務器IP
# 抓包分析
tcpdump -i eth0 -nn icmp
watch -n 1 'iptables -nvL | grep icmp' 觀察計數器暴增。科學配置 ICMP 策略,是網絡層安全加固與業務連通性保障的平衡藝術。