来自书籍:防线-企业Linux安全运维理念和实战
Iptables一般规则如下:
Iptables [-t table] command [match] target
一般,一条iptables规则包含五个元素:
表 命令 链 匹配 动作
1、表:
-t table 允许使用标准表之外的任何表。
有三种可用的表选项: filter、nat、mangle。该选项不是必选的,如果未指定表,默认是filter表。
Filter表用于信息包过滤,包含INPUT、OUTPUT、FORWARD 链; Nat表用于要转发的信息包,包含:PREROUTING、OUTPUT、POSTROUTING链; Managle表用于信息包及头内进行了任何更改的过滤,包含一些规则来标记用于高级路由的信息包及PREROUTING和OUTPUT链。
2、命令
-A(--append):添加一条规则到链的末尾; -D(--delete):删除指定规则或指定编号的规则; -P(--policy):设置链的默认策略; -N(--new-chain):用命令中所指定的名称创建一个新链; -F(--flush):删除指定链中所有规则,如果未指定链名,删除所有链中所有规则; -L(--list):列出指定链中的所有规则; -R(--replace):替换指定链中一条匹配的规则; -X(--delete-chain):删除指定的用户定义链,若未指定,删除所有用户链; -C(--check):检查数据包是否与指定规则匹配; -Z(--zero):将指定链中所有规则的byte计数器清零。
3、链
Filter(默认链):INPUT、OUTPUT、FORWARD Nat:PREROUTING、OUTPUT、POSTROUTING
4、匹配
-p(--protocol):匹配协议(TCP、UDP、ICMP)等协议,可以用逗号分隔三种协议,添加多个。ALL是默认匹配,用于所有协议,可以使用”!”表示不匹配; -s(--source):根据信息包的源IP地址来进行匹配。可以进行范围匹配,”!”表示不匹配。默认源匹配与所有地址匹配。 -d(--destination):根据信息包的目的地址匹配,可以进行范围匹配,”!”表示不匹配。 --sport:指定匹配规则的源端口或端口范围; --dport:指定匹配规则的目的端口或端口范围; -i:匹配单独的网络接口或某种类型的接口;
5、目标(动作)
ACCEPT:规则匹配时,会允许通过; DROP:规则完全匹配时,会阻塞信息包,并不对其进行进一步处理; REJECT:与DROP类似,也会阻塞信息包,但是不会再服务器和客户机上留下死socket。另外,REJECT会将错误信息发回给信息包的发送方。 RETURN:规则完全匹配时,RETURN目标会让该规则匹配的信息包停止遍历包含该规则的链; LOG:将有关信息记录日志; TOS:改写数据包的TOS值;