应禁用ICMP时间戳请求(Type 13)和回复(Type 14),并阻断Traceroute依赖的ICMP超时(Type 11)和端口不可达(Type 3, Code 3)报文,仅放行必要ICMP类型如destination-unreachable(Type 3)和time-exceeded(Type 11)用于网络诊断,避免一刀切屏蔽全部ICMP。

Linux 防火墙不能直接“识别攻击意图”,但能通过精准拦截探测行为特征,让服务器在扫描者眼中“不可见、不可测、不可绘”。关键不是等攻击发生再响应,而是提前切断探测链路——从禁Ping、限ICMP、收端口、拦扫描四个层面构筑静默边界。
禁Ping隐身:让服务器从批量扫描中消失
绝大多数扫描器第一步就是发ICMP Echo Request(ping)确认主机是否在线。屏蔽它,等于撤掉扫描地图上的第一个坐标点:
- firewalld用户执行:firewall-cmd --add-icmp-block=echo-request --permanent && firewall-cmd --reload
- 如需保留内网运维可ping权限,加源限制:firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" icmp-type="echo-request" accept' --permanent
- iptables用户用:iptables -A INPUT -p icmp --icmp-type 8 -j DROP(注意:别漏掉-I INPUT 1确保规则优先级)
精细化ICMP管控:阻断Traceroute与时间戳探测
Traceroute依赖ICMP Time Exceeded(Type 11)和Port Unreachable(Type 3, Code 3),而ICMP时间戳(Type 13/14)可能泄露系统时间——这两类报文对业务几乎无用,却极易被滥用:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- firewalld封禁关键类型:firewall-cmd --add-icmp-block=time-exceeded --permanent、firewall-cmd --add-icmp-block=port-unreachable --permanent、firewall-cmd --add-icmp-block=timestamp-request --permanent
- 重启后验证:firewall-cmd --list-icmp-blocks 应显示三项均已生效
- 避免一刀切禁所有ICMP(如丢弃Destination Unreachable会影响路径MTU发现),只筛高风险子类型
收缩暴露面:关服务比封端口更彻底
扫描器最常扫21/22/23/80/443/3306/3389等端口。单纯防火墙拒接,仍会返回RST包暴露端口“存在”;真正有效的是让端口根本没监听:
- 查真实监听服务:ss -tuln | grep ':22\|:80\|:443',确认只有SSH和HTTPS在跑
- 停用无用服务:systemctl stop telnet.socket && systemctl disable telnet.socket(同理处理rpcbind、avahi-daemon等)
- 防火墙仅放行必需端口:firewall-cmd --add-service=ssh --permanent、firewall-cmd --add-service=https --permanent,再firewall-cmd --set-default-zone=drop(默认拒绝所有入站)
主动识别扫描行为:用脚本+限速实现轻量联动
静态规则防不住动态扫描。可借助系统原生命令快速识别高频探测并干预:
- 对HTTP端口启用连接速率限制:firewall-cmd --add-rich-rule='rule family="ipv4" port port="80" protocol="tcp" limit value="5/s" reject' --permanent(1秒超5个新连接即拒)
- 定时检测异常连接IP(每2分钟):netstat -tn | awk '$NF=="SYN_RECV" {print $5}' | cut -d: -f1 | sort | uniq -c | awk '$1 > 20 {print $2}' | while read ip; do firewall-cmd --permanent --add-source=$ip --zone=block; done
- 配合自动解封(30分钟后移除):firewall-cmd --remove-source=$ip --zone=block写入清理脚本,由cron触发
不复杂但容易忽略:防御探测的本质是信息最小化——少回一个包、少开一个端口、少暴露一行版本号,攻击者就少获得一分情报。防火墙不是万能盾牌,而是让网络边界回归“沉默”的第一道工序。

















