真正有效的防御是分层识别、精准拦截、主动隐藏,重点拦截异常TCP标志(如FIN+URG+PSH、全零)、封禁高危ICMP类型(如type13/14)、联动内核rp_filter防IP欺骗,并明确iptables无法防御ARP等二层攻击。

iptables 不能单靠“一刀切”禁 ping 或封端口来防探测,真正有效的防御是分层识别、精准拦截、主动隐藏——重点抓异常 TCP 标志、过滤高危 ICMP 类型、联动内核参数防 IP 欺骗,并避开 ARP 等二层协议的误区。
拦截异常 TCP 标志组合,阻断隐蔽扫描
正常通信只用有限合法标志(如 SYN、SYN+ACK、FIN+ACK),而 nmap 的 FIN/Xmas/Null 扫描依赖非法组合试探端口。iptables 可在连接建立前就丢弃这类包:
- 拒绝仅含 FIN 的包:iptables -I INPUT -p tcp --tcp-flags ALL FIN -j DROP
- 拒绝 FIN+URG+PSH(Xmas Tree):iptables -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
- 拒绝全零(Null 扫描)和全一标志:iptables -I INPUT -p tcp --tcp-flags ALL NONE -j DROP、iptables -I INPUT -p tcp --tcp-flags ALL ALL -j DROP
- 禁止 SYN+FIN 同时置位(违反 RFC):iptables -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
这些规则必须用 -I INPUT 插入链首,确保优先于服务放行规则执行;若想让扫描器误判为“主机不可达”,可在同类规则后加静默丢弃:iptables -I INPUT -p tcp -j DROP(注意位置:白名单 ACCEPT 之后、REJECT/DROP 规则之前)。
精细化控制 ICMP,放行必要类型,封禁高危行为
完全禁 ICMP 会破坏 traceroute、路径 MTU 发现等基础功能。应保留 type 3(Destination Unreachable)、type 11(Time Exceeded)、type 12(Parameter Problem),并严格限制易被滥用的类型:
- 显式放行三类必要 ICMP:iptables -A INPUT -p icmp --icmp-type 3 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(同理配 type 11/12)
- 封禁 timestamp 请求/响应(type 13/14)和 address-mask 请求/响应(type 17/18):iptables -A INPUT -p icmp --icmp-type 13 -j DROP(依次替换数字)
- 只允许指定运维 IP 发起 echo-request:iptables -I INPUT -p icmp --icmp-type echo-request -s 192.168.1.50 -j ACCEPT,紧接 iptables -I INPUT -p icmp --icmp-type echo-request -j DROP
- 用 length 模块过滤畸形包,例如拒绝固定 32 字节的 ICMP:iptables -A INPUT -p icmp -m length --length 32 -j DROP
配合内核参数防 IP 欺骗,不依赖 iptables 做底层过滤
iptables 本身无法验证源 IP 真实性,必须启用内核反向路径检查(rp_filter)和关闭源路由:
- 开启宽松反向路径检查:echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter,同时对主网卡(如 eth0)也启用
- 禁用 IPv4 源路由:echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
- 补充 iptables 封禁明显非法源地址(仅对外网接口):iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP、iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP、iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP 等
这些设置比单纯写 iptables 规则更早介入数据包处理流程,是防欺骗的第一道防线。
认清边界:哪些探测 iptables 根本拦不住
ARP 欺骗、DNS 欺骗、DHCP 欺骗等二层或应用层行为,iptables 无法干预——它工作在 IP 层,看不见 ARP 帧、解析不了 HTTP URI 或 DNS 查询内容。
- ARP 防御要靠静态绑定、DAI(交换机功能)、arpwatch 监控,而非 iptables
- 中间件路径扫描(如 /manager/html、/wp-login.php)需靠 WAF 或应用日志联动,iptables 只能辅助识别高频连接、异常 TCP 标志等行为指纹
- 混杂模式嗅探是网卡能力,iptables 无法禁止,只能通过权限管控(如 setcap)、进程审计、VLAN 划分来抑制
把 iptables 当作网络层的“守门人”,而不是万能过滤器,才能让它真正发挥实效。

















