iptables-规则和常用匹配的管理
1、什么是规则
数据包的过滤基于规则。而规则由匹配条件+动作组成
2、iptables命令介绍
2.1、语法
iptables [-t表名] 选项 [链名] [规则] [动作] ,操作规则时的考量点: 1)、要实现什么功能:判断添加到哪个表上; 2)、报文流经的路线:判断添加到哪个链上;
2.2、参数介绍
iptables,选项 含义 示例 -t, --table 指定要操作的表(默认filter) iptables -t filter -A, --append 追加一条规则至链的末尾 iptables -t filter -A INPUT -I, --insert 插入一条规则至链的顶部 iptables -t filter -I INPUT -D, --delete 指定删除一条规则 iptables -t filter -D INPUT 1 -R, --replace 替换选定链中的规则 iptables -t filter -R INPUT -S, --list-rules 打印选定链中的所有规则 iptables -t filter -S -F, --flush 清空链中的所有规则 iptables -t filter -F -Z, --zero 将所有链中的数据包和字节计数器归零 iptables -t filter -Z -N, --newchain 创建自定义名称规则链 iptables -N New_Rules -E, --renamechain 给自定义链修改名称 iptables -E Old_Rules New_Rules -X, --deletechain 删除自定义链 iptables -X Rules_Name -P, --policy 给链设定默认策略 iptables -t filter -P DROP
3、iptables安装
yum install iptables-services -y systemctl start iptables systemctl enable iptables
4、规则管理
4.1、查询规则
]# iptables -t filter -L -n -v --line-numbers -t 指定表明 -L 查看详情 -n 不反解 -v 详细信息 -line-numbers 显示规则编号
4.2、修改规则
4.2.1、需求
修改规则,拒绝其他任何主机 ping 通本机。
4.2.2、查询当前的规则
]# iptables -t filter -L -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 # 编号为2 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
...
4.2.3、修改规则
iptables -t filter -R INPUT 2 -p icmp -j DROP
4.2.4、查询修改后规则
]# iptables -t filter -L -n --line-numbers Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
4.3、删除规则
4.3.1、需求
删除icmp规则
4.3.2、方法一:根据规则的编号去删除规则
iptables -t filter -D INPUT 2
4.3.3、方法二:根据具体的匹配条件与动作删除规则
iptables -t filter -D INPUT -p icmp -j DROP
4.4、添加规则
4.4.1、允许其他任何主机 ping 通本机
iptables -t filter -I INPUT -p icmp -j ACCEPT
4.5、保存规则
4.5.1、默认规则持久化保存位置
/etc/sysconfig/iptables
4.5.2、保存规则
iptables-save >/etc/sysconfig/iptables
4.6、恢复规则
iptables-restore </etc/sysconfig/iptables
5、iptables基本匹配
5.1、iptables匹配参数
条件参数 含义 [!] -p, --protocol protocol 指明需要匹配的协议,如icmp、udp、tcp [!] -s, --source address[/mask][,...] 指定匹配源地址,如有多个可以逗号分隔 [!] -d, --destinationaddress[/mask][,...] 指定匹配目标地址,如有多个可以逗号分隔 [!] --source-port,--sport port[:port] 指定源端口 [!] --destination-port,--dport port[:port] 指定目标端口 [!] -i, --in-interface name 接收数据包的接口名称 [!] -o, --out-interface name 发送数据包的接口名称 -m, --match match 执行需要使用的匹配项,属于扩展匹配 -j, --jump target 执行匹配规则后的动作、ACCEPT、DROP、REJECT等
5.2、iptables匹配场景
5.2.1、仅允许 10.0.0.10 访问 10.0.0.200 服务器的 80 端口、其他地址全部拒绝
iptables -t filter -I INPUT -s 10.0.0.10 -d 10.0.0.200 -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -d 10.0.0.200 -p tcp --dport 80 -j DROP
5.2.2、所有来访问本机的协议,属于TCP协议的我们通通都放行
iptables -t filter -I INPUT -p tcp -j ACCEPT
iptables -t filter -A INPUT -j DROP
5.2.3、凡是由本机发出的TCP协议报文,都允许出去,其他协议不行
iptables -I OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -j DROP
5.2.4、禁止其他主机从 eth0 像本机发送 ping 请求
iptables -t filter -i eth0 -p icmp -j DROP
5.2.5、允许从本机发送 ping 请求,其他任何协议都不允许
iptables -I OUTPUT -p icmp -j ACCEPT
iptables -I OUTPUT -j DROP