四表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