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、需求
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、需求
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、默认规则持久化保存位置
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