四表tables,五链 chain

tables:raw > mangle > nat > filter

chain:PREROUTING, INPUT, OUTPUT , FORWARD , POSTROUTING


iptables [-t tables] COMMAND CHAIN 匹配标准 -j target

查看命令

 

COMMAND :

    -A:添加为最后一条

    -I:默认添加为第一条,或者在CHAIN后指定位置。

    -D:删除第几条规则

    -R:修改第几条规则

    -L:查看iptables 规则,默认会解析成主机名,后面可以加一下选项:

        -n:不要解析成主机名

        -v:查看规则匹配次数

        --line-number:查看规则排列序号


  -j :target

    主要有:DROP,ACCEPT,REJECT,LOG

        LOG
        --log-prefix "STRING"


一、匹配标准:


一、通用匹配标准:

    -s:源地址

    -d:目标地址

    -p:协议

    -

二、扩展匹配标准:

1.隐含扩展:

        -p tcp :

            --dport,源端口--sport,目的端口

            --tcp-flags mask comp,通过flags位匹配。比如 --tcp-flags SYN,ACK,RST,FIN  SYN

2.显式扩展:

     -m 扩展名 特别选项

    ①     -m state --state 根据连接状态控制

                ip_conntrack ( 在centos6.0 是nf_conntrack ) 连接追踪模块

                TCP,UDP,ICMP

                通过修改内核参数:/proc/net/ip_conntrack,/proc/sys/net/ipv4/ip_conntrack_max ,/proc/sys/net/ipv4/netfilter。特别注意ip_conntrack_max ,会因为访问数超过最大数导致iptables限制正常的访问连接。

                NEW,ESTABLISHED,RELATED,INVALID 

   ②  -m multiport:可以使控制端口不连续

             --source-ports,--destination-ports,--ports

   ③  -m iprange:可以range端口

            --src-range , --dst-range

例子:允许INPUT口进入的流量,且IP为192.168.1.1-192.168.1.10 访问任意主机的22端口,连接状态为NEW,或者ESTABLISHED。

iptalbes -A INPUT -p tcp -m iprange --src-range 192.168.1.1-192.168.1.10 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

    ④ -m connlimit:连接数限制

        ! --connlimit-above n:一般与“!”一起合用,限制最大连接数。

  例子:限制192.168.1.1 主机22端口最大连接数超过3就丢弃。

iptables -A INPUT -d 192.168.1.1 -p tcp --dport 22 -m connlimit   --connlimit-above 3 -j DROP


    ⑤ -m string:根据内容字符串进行操作

         --algo {bm|kmp} 字符串检测算法,任选一

        --string "STRING" 所要匹配检测的字符串。

例子:从192.168.1.1地址访问的数据内容带 xxxx的全部丢弃。

iptables -I OUTPUT -s 192.168.1.1 -m string --algo kmp --string "xxxx" -j DROP