来自书籍:防线-企业Linux安全运维理念和实战


Iptables一般规则如下:

Iptables [-t table] command [match] target

一般,一条iptables规则包含五个元素:

表
命令
链
匹配
动作


1、表:

-t table 允许使用标准表之外的任何表。

有三种可用的表选项: filternatmangle。该选项不是必选的,如果未指定表,默认是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值;