iptables的应用
2007-03-12 12:42:01 来源:WEB开发网但是再进行包过滤的时候,ip碎片会导致这样一个问题:当系统将大数据包划分成ip碎片传送时,第一个碎片含有完整的包头信息,但是后续的碎片只有包头的部分信息,比如源地址,目的地址。因此假如我们有这样一条规则:
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 192.168.2.100 --dport 80 -j ACCEPT
并且这时的FORWARD的策略(policy)为DROP时,系统只会让第一个ip碎片通过,而丢掉其余的ip碎片,因为第一个碎片含有完整的包头信息,可以满足该规则的条件,而余下的碎片因为包头信息不完整而无法满足规则定义的条件,因而无法通过。
我们可以通过--fragment/-f选项来指定第二个及其以后的ip碎片,比如以上面的例子为例,我们可以再加上这样一条规则来解决这个问题:
iptables -A FORWARD -f -s 192.168.1.0/24 -d 192.168.2.100 -j ACCEPT
但是需要注意的是,现在已经有好多进行ip碎片攻击的实例(比如向Win98 NT4/SP5,6 Win2K发送大量的ip碎片进行DoS攻击),因此允许ip碎片通过是有安全隐患的,对于这一点我们可以采用iptables的匹配扩展来进行限制,但是这又会影响服务质量,我们将在下面讨论这个问题。
7. 指定非
可以在某些选项前加上!来表示非指定值,比如“-s -! 192.168.1.1/32”表示除了192.168.1.1以外的ip地址,“-p -! tcp”表示除了tcp以外的协议。
8. TCP匹配扩展
通过使用--tcp-flags选项可以根据tcp包的标志位进行过滤,该选项后接两个参数:第一个参数为要检查的标志位,可以是SYN,ACK,FIN,RST,URG,PSH的组合,可以用ALL指定所有标志位;第二个参数是标志位值为1的标志。比如你要过滤掉所有SYN标志位为1的tcp包,可以使用以下规则:
更多精彩
赞助商链接