面对层出不穷的网络探测与扫描行为,仅靠应用层软件或传统防火墙拦截往往力不从心,而借助操作系统内核级防护模块,在网络协议栈处理数据包的源头直接过滤和响应,才是最根本、最高效的防御手段。内核级防护模块不是某个具体软件,而是指操作系统内核对网络数据包处理路径上的安全机制,例如Linux的Netfilter框架以及基于它构建的iptables/nftables,它天生具备性能开销低、抗绕过能力强、响应更及时的优势。
常见网络探测请求的类型与识别特征
想拦截探测,先得认识探测,网络探测的本质是攻击者利用协议交互机制,向目标主机发送特定数据包,通过观察响应来推断主机状态、开放端口和运行服务,理解这些请求的指纹特征,是配置内核级防护规则的基础。
ICMP探测:最基础的“敲门声”
Ping命令是历史最悠久的探测方式,通过发送ICMP Echo Request报文判断主机是否存活,这类请求的特征非常明显:协议号固定为1,类型字段为8,且数据部分通常为固定模式,除了标准的Ping,Traceroute(路由追踪) 利用ICMP超时报告或端口不可达信息来描绘网络拓扑,攻击者常借助它绘制内网地图。
TCP端口扫描:主流的信息收集手段
多数服务依赖TCP协议,因此TCP扫描是探测的核心,常见手法包括:
- 全连接扫描(Connect Scan):完整完成三次握手,日志审计容易发现,但隐蔽性差。
- 半开扫描(SYN Scan):发送SYN包,收到SYN/ACK即判定端口开放,随后发送RST中断连接,全程不建立完整会话,穿透力和隐蔽性更强。
- FIN/NULL/XMAS扫描:发送不包含标志位或包含异常标志位的包,利用RFC 793规范在端口关闭时返回RST的机制判断状态,可绕过部分无状态防火墙。
UDP探测与IP协议探测
UDP扫描通过向目标端口发送空数据或特定载荷,若收到ICMP Port Unreachable错误则判定端口关闭,无响应则可能开放,攻击者还会扫描ICMP、IGMP等IP层协议号,寻找非标准协议的开放点,这类探测往往被传统应用层安全设备忽略。
内核防火墙和软件防火墙哪个好:核心防御层级的博弈

这是部署防护时绕不开的问题。软件防火墙(如Nginx的访问控制模块、应用层WAF)工作于用户态,处理逻辑依赖进程调度,而内核级防护模块直接嵌入协议栈,两者在拦截效率和安全性上存在本质差异。
性能开销的显著区别
内核Netfilter框架在数据包进入协议栈的PREROUTING(路由前) 和FORWARD(转发) 链时介入,处理发生在系统调用之前,无需上下文切换,业界共识认为,同等规则量下,内核态转发性能比用户态代理高出数倍,对流量密集的服务器而言,将CC攻击的拦截规则下沉到内核,可大幅释放CPU资源。
绕过风险与抗欺骗能力
用户态防火墙依赖应用层解析,攻击者可通过分片报文、TCP零窗口等技巧绕过,而内核级防护直接处理原始报文,可重组分片并校验校验和,能有效识别畸形包,内核防护模块与操作系统TCP/IP协议栈共享状态表,能精准感知连接状态,内核态记录的连接跟踪(conntrack)条目是应用层无法伪造的,这决定了它对SYN Flood等资源消耗型攻击的抵抗力更强。
Linux服务器被扫描怎么防护:基于Netfilter的落地配置
针对探测请求,Netfilter框架提供了挂载点与丰富的匹配条件,允许管理员根据流量特征动态放行或丢弃,下文以nftables(iptables的现代替代方案)为例,提供可直接验证的规则集。
拦截ICMP探测并限制速率
系统默认会响应Ping,通过限制速率可有效降低探测效率,在nftables配置文件中添加规则:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; }
# 丢弃超大ICMP包(防Ping of Death)
nft add rule inet filter input icmp type echo-request length > 1400 drop
# 限制Ping频率,每秒最多2个包,突发不超过4个
nft add rule inet filter input icmp type echo-request limit rate 2/second burst 4 packets accept
nft add rule inet filter input icmp type echo-request drop
需要留意的是,完全丢弃ICMP会影响MTU路径发现(PMTUD),导致大包传输故障。生产环境建议仅限制速率而非直接禁止,并保留ICMP type 3(目的不可达)中的fragmentation-needed报文。
防御TCP端口扫描与SYN Flood

半开扫描的防御核心是开启内核SYN Cookies机制,它在内核缓冲区耗尽时,通过加密Cookie换取握手信息,不占用连接队列。
sysctl -w net.ipv4.tcp_syncookies=1 sysctl -w net.ipv4.tcp_max_syn_backlog=1024
结合nftables对异常TCP标志的检测:
# 丢弃SYN且FIN同时置位的异常包 nft add rule inet filter input tcp flags & (fin|syn) == fin|syn drop # 丢弃NULL扫描(无任何标志位) nft add rule inet filter input tcp flags & (fin|syn|rst|ack) == 0 drop # 丢弃XMAS扫描(FIN+URG+PSH同时置位) nft add rule inet filter input tcp flags & (fin|urg|psh) == fin|urg|psh drop
这些规则利用TCP状态机的合法性校验,精准识别扫描行为,对正常业务流量零干扰。
通过连接跟踪模块动态封禁频繁探测源IP
对于持续性的定向探测,建议结合conntrack与Recent模块实现动态封禁,Recent模块会记录源IP的命中次数,超过阈值后自动拒绝,适用于SSH暴力破解和端口扫描场景:
nft add rule inet filter input tcp dport 22 ct state new meter ssh-scanner { ip saddr timeout 60s limit rate 5/minute } drop
该规则通过动态配额自动识别在60秒内尝试超过5次的IP并阻断,无需手动维护黑名单,是内核态防护中最智能化的模块之一。
内核参数调优与系统级加固:让防护模块运转更稳健
除了显式的规则配置,内核参数的微调决定了防护模块的稳定性和抗压上限,多数云服务器默认配置偏向通用性,需要根据业务模型调整。
TCP/IP协议栈的隐匿性优化
攻击者的探测成功率依赖内核的响应行为,调整以下参数可增加探测难度:
- 关闭ICMP重定向通告:
net.ipv4.conf.all.accept_redirects = 0,防止攻击者通过伪造重定向报文劫持路由。 - 禁用IP源路由:
net.ipv4.conf.all.accept_source_route = 0,阻止攻击者指定数据包回程路径,规避防火墙规则。 - 降低连接超时时间:
net.ipv4.tcp_fin_timeout = 30,缩短半连接状态残留时间,减少资源占用。
利用内核级审计日志回溯探测行为
配置防护规则后,需要验证有效性,内核的Netfilter日志模块(nfnetlink_log)可将匹配数据包记录至审计日志:

nft add rule inet filter input tcp flags & (fin|syn) == fin|syn log prefix "PORT_SCAN_ATTEMPT: " group 5
通过journalctl -k | grep PORT_SCAN_ATTEMPT实时查看拦截记录,根据统计,近半数的Web服务器每天遭受至少数千次端口扫描(据云安全厂商公开报告),内核日志是追溯攻击源和评估防护效果的核心依据。
Q&A:内核级防护拦截网络探测的常见问题
内核级防护能否完全替代云平台的安全组或DDoS高防?
不能,安全组部署在虚拟化层,DDoS高防部署在骨干网边缘,它们抵御的是超大流量型攻击,内核级防护聚焦于单机精确识别,三者属于纵深防御的不同层级,攻击流量超过带宽上限时,唯一有效的手段是上游清洗,内核模块能做的是在清洗流量到达时保障自身服务不崩溃。
配置nftables规则后,Nginx等应用层服务的访问日志中仍能观察到大量SYN请求,防护是否失效?
该现象正常,nftables的SYN代理或丢弃动作发生在协议栈入口,应用层无法感知被丢弃的请求,但TCP握手队列的统计计数会变化,可通过ss -lnt | grep SYN查看半连接数,若发现SYN队列仍有积压,需调整net.ipv4.tcp_abort_on_overflow参数为1,强制内核在队列溢出时直接发送RST而非静默丢弃。
如何测试内核防护规则的有效性,避免误伤正常用户?
使用Nmap工具从外部主机发起常规扫描,同时通过nft list ruleset实时观察计数器增量,若规则生效,计数器会迅速增长,对业务流量的影响测试,建议在低峰期模拟正常HTTP长连接,观察首包延迟是否超过20ms,若超时,需放宽limit rate参数或调整conntrack表项的超时阈值。
内核级防护的实质,是把安全能力前置到操作系统最底层,让每一个数据包在诞生之初就接受检阅,它并非一劳永逸的银弹,但却是构建可信主机不可或缺的地基。请务必在测试环境验证规则集,再应用到生产服务器,让每一次拦截都有据可循,每一次放行都心中有数。