Iptables策略
一、四表五链
四表:
raw:: #主要做连接追踪
mangle: #对数据包进行修改,例如给数据包打标记MARK
nat: #主要修改数据包的地址和端口,例如源地址或目标地址
filter: #实现对数据包的过滤
五链:
PREROUTING #数据包进入路由之前
INPUT #目的地址为本机
FORWARD #实现转发
OUTPUT #原地址为本机,向外发送,不经过网卡
POSTROUTING #发送到网卡之前,源地址转换,在路由之后
二、语法
iptables [-t 要操作的表]<操作命令>[要操作的链][规则号码][匹配条件][-j 匹配后的动作]
小写 大写 大写 小写 大写
常见操作命令:
-L #查看,v详细,n不反解 --line-number
-A #追加,默认放置最后一条
-I #插入,默认插入第一条
-D #删除
-F #清空规则flush
-P #设置默认策略policy
匹配的条件:
-s #源地址
-d #目标地址
-p tcp|udp|icmp #协议
-i lo #input 从lo接口进入的数据包
-o eth0 #output 从eth0接口出去的数据包
-p tcp --dport 80 #目标端口是80,必须和-p tcp|udp 连用
-p udp --dport 53 #目标端口是53/udp
处理动作:
filter:
-j ACCEPT #允许
-j DROP #丢弃
-j REJECT #拒绝
-j LOG #写日志
nat:
-j SNAT #原地址转换 POSTROUTING
-j DNAT #目标地址转换 PREROUTING
state:
NEW #新生态
ESTABLISHED #连接态
RELATED #衍生态
INVALID #无效态
三、扩展匹配
-m icmp :
iptables -t filter -I INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT
#icmp状态匹配 ping 请求状态为echo-request(ping),回复状态为echo-reply(pong)
iptables -m icmp -h #查看匹配的类型
-m iprange :
iptables -t filter -I INPUT -m iprange --src-range 172.16.1.10-172.16.1.20 -j REJECT
#ip地址范围匹配
iptables -m iprange -h #查看匹配的ip格式
-m multiport :
iptables -t filter -I INPUT -p tcp -m multiport --dports 20,21,22,25,80,443 -j ACCEPT
#多端口匹配,不是同时匹配
iptables -m multiport -h #查看匹配的端口格式
-m tos: #ip协议头部type of service
iptables -t filter -I INPUT -p tcp --dport 22 -m tos --tos 0x10 -j REJECT
#仅拒绝ssh连接登录,不拒绝scp、rsync等传输文件
iptables -m tos -h #查看tos类型
-m tcp :
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST,ACK,FIN SYN --dport 80 -j ACCEPT
#检查SYN,RST,ACK,FIN四个标记位,但是只有SYN标记位,其他三个位都没有的才匹配
iptables -m tcp -h #查看标记为类型