2026-06-27 08:35:00
iptables作为Linux下管理网络数据包的核心工具,其高级特性如recent模块和layer7模块可显著提升系统安全性,分别用于抵御DoS攻击和实现应用层协议过滤。
recent模块:抵御DoS攻击与连接限制recent模块通过记录客户端IP的访问行为,实现动态流量控制,尤其适用于抵御CC攻击(HTTP DoS)和SSH暴力破解。
单IP SSH连接并发限制使用connlimit模块限制单个IP的SSH并发连接数(示例为3次):
$ sudo iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP注意:此规则可能误杀NAT用户,需根据实际场景调整阈值。
时间窗口内的新连接限制通过recent模块限制单个IP在300秒内最多建立2个新SSH连接,超限后记录日志并拒绝访问:
# 记录新连接IP$ sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH# 超限后记录日志并拒绝$ sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG --log-prefix "SSH Attack: "$ sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP参数说明:
--set:记录源IP,若存在则更新时间戳。
--update:每次匹配时更新列表,需与--seconds和--hitcount联用。
--seconds 300 --hitcount 3:300秒内超过3次连接即触发规则。恢复机制:被限制IP在5分钟后自动恢复访问(依赖recent模块的动态清理机制)。
查看记录列表访问日志文件或内核模块数据:
$ cat /proc/net/xt_recent/SSH
layer7模块可识别应用层协议(如微信、QQ),实现精细嫌源猛化的七层过滤,但芹桥需重新编译内核和iptables。
编译与安装步骤
内裂穗核编译:
下载内核源码并解压:
$ sudo tar xf linux-2.6.32-*.tar.gz -C /usr/src打layer7补丁:
$ sudo patch -p1 < /root/netfilter-layer7-v2.23/kernel-2.6.32-layer7-2.23.patch启用layer7支持:
Networking support → Networking Options → Network packet filtering framework → Core Netfilter Configuration → "layer7" match support编译安装:
$ sudo make && sudo make modules_install && sudo make installiptables编译:
打layer7补丁并替换扩展文件:
$ sudo cp /root/netfilter-layer7-v2.23/iptables-1.4.3forward-for-kernel-2.6.20forward/* /root/iptables-1.4.20/extensions/配置并安装:
$ sudo ./configure --prefix=/usr --with-ksource=/usr/src/linux$ sudo make && sudo make install协议特征码安装:
$ sudo tar zxvf l7-protocols-2009-05-28.tar.gz && cd l7-protocols-2009-05-28 && sudo make install使用示例拒绝QQ协议流量:
$ sudo iptables -A FORWARD -m layer7 --l7proto qq -j REJECT依赖关系:xt_layer7.ko需加载nf_conntrack.ko模块后方可生效。
recent模块:
保护Web服务免受CC攻击:限制单个IP的HTTP请求频率。
防止SSH暴力破解:结合fail2ban实现动态封禁。
layer7模块:
企业内网管控:禁止特定应用层协议(如P2P、社交软件)。
云环境流量优化:识别并限制非业务协议流量。
通过合理配置recent和layer7模块,可显著提升Linux系统的安全性和流量管理能力,但需根据实际场景调整参数并监控效果。