iptables此功能是通过端口撞击开放基于连接IP地址的被撞击端口序列的敏感端口。
更多有关端口撞击的信息请查看:http://www.portknocking.org/
此功能要求您在限定时间内列出随机选出的未使用的端口(至少3个)。上述端口不能使用而且不能出现在TCP_IN (UDP_IN for udp 数据包)。将要被开放的端口也不能出现在TCP_IN (UDP_IN for udp 数据包)。
未加载ipt_recent此iptables模块的服务器不能使用该功能。通常情况下适用于Monolithic内核服务器。VPS服务器管理员要咨询其VPS主机供应商该服务器是否有iptables模块。
默认情况下,ipt_recent只记录最后100个IP地址。可以在/proc/net/ipt_recent/*
查看被跟踪的IP地址。
PORTKNOCKING设置句法:
PORTKNOCKING是用逗号隔开的一列,包括:
openport;protocol;timeout;kport1;kport2;kport3[...;kportN]
所以,端口撞击设置PORTKNOCKING = "22;TCP;20;100;200;300;400" 表示:
访问端口100, 200, 300 和 400时,开放端口22TCP至新连接IP地址20秒钟(即用SYN数据包撞击)每次撞击不超过20秒。20秒后依然可以访问端口22,直到该连接中断,不过不再允许新的连接。
更多关于ipt_recent的信息请查看iptables man页面,地址是http://snowman.net/projects/ipt_recent/
注意:在使用该模块时,IP地址不显示在iptables链上。您需要查看每个模块文档的/proc/net/ipt_recent/* 文件才能看到不同撞击阶段的IP地址。
重启csf重置ipt_recent表同时移除所有的碰撞。