深入分析Linux防火墙
2006-07-04 12:38:10 来源:WEB开发网一个链(chain)其实就是众多规则(rules)中的一个检查清单(checklist)。每一条链中可以有一条或数条规则,每一条规则都是这样定义的“如果数据包头符合这样的条件,就这样处理这个数据包”。当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件: 如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足则继续检查下一条规则。最后,如果该数据包不符合该链中任一条规则的话,系统就会根据该链预先定义的策略(policy)来处理该数据包。
而一个iptables命令基本上包含如下五部分:希望工作在哪个表上、希望使用该表的哪个链、进行的操作(插入,添加,删除,修改)、对特定规则的目标动作和匹配数据包条件。
基本的语法为:iptables -t table -Operation chain -j target match(es)(系统缺省的表为"filter")
基本操作如下:
-A 在链尾添加一条规则
-I 插入规则
-D 删除规则
-R 替代一条规则
-L 列出规则
基本目标动作,适用于所有的链:
ACCEPT 接收该数据包
DROP 丢弃该数据包
QUEUE 排队该数据包到用户空间
RETURN 返回到前面调用的链
foobar 用户自定义链
基本匹配条件,适用于所有的链:
-p 指定协议(tcp/icmp/udp/...)
-s 源地址(ip address/masklen)
-d 目的地址(ip address/masklen)
-i 数据包输入接口
-o 数据包输出接口
匹配条件扩展:
TCP-----匹配源端口,目的端口,及tcp标记的任意组合,tcp选项等。
UPD-----匹配源端口和目的端口
ICMP----匹配ICMP类型
MAC-----匹配接收到的数据的mac地址
更多精彩
赞助商链接