前言
iptables策略详解跳转blog:iptables常用策略
防火墙会按照从上到下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
实验环境(两台设备之间进行交互时)
CentOS:CentOS-Stream-9-latest-aarch64-dvd1 【parallels desktop17 虚拟机】
CentOS的 iptables版本:iptables v1.8.8 (nf_tables)
CentOS wireshark 客户端版本:Version 3.4.10
macOS: macOS Monterey. M1, 2020, ARM64 【物理机】
实验思路
在CentOS上面进行iptables的策略部署,使用macOS发送数据包来进行策略的测试。在CentOS上抓包,对进入的数据包分析。
IP配置
macOS | CentOS |
---|---|
192.168.117.2 | 10.211.55.12 |
未配置防火墙策略时网路连接情况
CentOS采用共享网络模式
CentOS和macOS之间可以相互ping通
实验环境(三台设备之间交互,需要NAT server转发时)
采用SNAT环境。见blog:iptables配置SNAT实现共享上网
IP配置
macOS | centOS | Ubuntu |
---|---|---|
172.20.10.2 | 外网网卡:172.20.10.1 内网网卡: 10.37.129.1 | 10.37.129.6 |
常用的策略管理
查看路由信息
1 | sudo iptables -t nat -L |
查看iptables已经设置的策略
1 | sudo iptables -L |
列出规则的行号
1 | sudo iptables -nL --line-number |
删除特定的行规则
1 | 删除INPUT链中,第二条规则 |
删除全部规则
1 | 删除nat表里所有规则 |
永久写入
1 | service iptables save |
实验策略
拒绝进入防火墙的所有ICMP协议数据包
1
sudo iptables -I INPUT -p icmp -j REJECT
-I
默认将规则添加到第一行- macOS 无法ping通
允许防火墙转发除ICMP协议以外的所有数据包
1
sudo iptables -A FORWARD -p icmp -j REJECT
配置这条规则之前,可以ping通MACOS(web server)。配置之后就无法ping通了。因为拒绝了icmp包
拒绝转发来自10.37.129.7主机的数据。允许转发来自10.37.129.0/24网段的数据
开一台新的虚拟机kali,IP设置为
10.37.129.7
,网关设置为10.37.129.1
1
sudo iptables -I FORWARD -s
只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。
1
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
1
iptables -A INPUT -p tcp --dport 22 -j DROP
禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机
1
iptables -I INPUT -p icmp --icmp-type 8/0 -j REJECT
禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包
1
iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP