直接封禁恶意探测报文的关键是分层过滤:先禁用icmp回显(类型8)隐藏主机存在,再限制异常连接速率,最后结合ip信誉与请求特征(如空ua、敏感路径)在应用层拦截,避免盲目全阻断影响运维。

直接封掉恶意探测报文,关键不是“全阻断”,而是精准识别并拦截高频、无意义、带攻击意图的探测行为。盲目关闭所有非加密连接或禁用协议,反而会干扰正常运维和业务访问。真正有效的做法是分层过滤:先屏蔽基础探测信号(如ICMP回显),再限制异常连接行为(如SYN扫描、端口遍历),最后结合IP信誉与请求特征做应用层拦截。
禁Ping:从ICMP层面隐藏服务器存在
攻击者常靠ping快速筛出活跃主机,禁Ping等于让服务器在扫描器里“消失”。注意:这不是封端口,而是禁用ICMP类型8(Echo Request)。Linux下用iptables:
sudo iptables -A INPUT -p icmp --icmp-type 8 -j DROP
Windows防火墙中需新建入站规则,协议选“ICMPv4”,具体类型填“8”。别忘了保留类型3(目标不可达)和类型11(超时),否则会影响故障排查。
拦截端口扫描类流量
全端口扫描(如nmap -sS)、半开连接探测、TCP空包/非法标志位包,都有固定模式。可配置状态检测+速率限制:
• 拒绝每秒新建连接超过20个的IP:
sudo iptables -A INPUT -p tcp -m state --state NEW -m limit --limit 20/sec --limit-burst 50 -j ACCEPT
• 超出即丢弃:
sudo iptables -A INPUT -p tcp -m state --state NEW -j DROP
firewalld用户可用rich rule配合source-zone限制,避免影响已建立连接。
阻断常见恶意探测报文特征
很多扫描工具发包有明显痕迹,比如User-Agent为空、URI含/.git/、/phpmyadmin/、/wp-admin/等敏感路径、Host头为IP而非域名、HTTP版本异常(如HTTP/0.9)。WAF或nginx层可直接拦截:
• nginx配置示例:
if ($http_user_agent = "") { return 444; }
if ($request_uri ~* "(?:\.git|\.svn|\.htaccess|phpmyadmin|wp-login\.php)") { return 444; }
不依赖WAF硬件,普通云服务器也能实现初步过滤。
联动IP信誉库自动封禁
单靠规则难覆盖新型扫描源,建议接入实时IP威胁情报。例如用curl定期拉取公开黑名单(如FireHOL IPset列表),再导入iptables:
wget -qO- https://raw.githubusercontent.com/firehol/blocklist-ipsets/master/firehol_level3.netset | awk '/^[0-9]/ {print "iptables -A INPUT -s "$1" -j DROP"}' | sh
生产环境建议用fail2ban监控auth.log、nginx日志,对反复404、爆破后台、高频UA缺失的IP自动封禁24小时以上。











