前言

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

常用的策略管理

查看路由信息

sudo iptables -t nat -L

查看iptables已经设置的策略

sudo iptables -L

列出规则的行号

sudo iptables -nL --line-number

删除特定的行规则

# 删除INPUT链中,第二条规则
sudo iptables -D INPUT 2

删除全部规则

# 删除nat表里所有规则
sudo iptables -t nat -F

永久写入

service iptables save

实验策略

  1. 拒绝进入防火墙的所有ICMP协议数据包

    sudo iptables -I INPUT  -p icmp -j REJECT
    
    • -I 默认将规则添加到第一行
    • macOS 无法ping通
  2. 允许防火墙转发除ICMP协议以外的所有数据包

    sudo iptables -A FORWARD -p icmp -j REJECT
    

    配置这条规则之前,可以ping通MACOS(web server)。配置之后就无法ping通了。因为拒绝了icmp包

  3. 拒绝转发来自10.37.129.7主机的数据。允许转发来自10.37.129.0/24网段的数据

    开一台新的虚拟机kali,IP设置为10.37.129.7,网关设置为 10.37.129.1

    sudo iptables -I FORWARD -s
    
  4. 只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。

    iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
    
    iptables -A INPUT -p tcp --dport 22 -j DROP
    
  1. 禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机

    iptables -I INPUT -p icmp --icmp-type 8/0 -j REJECT
    
  1. 禁止转发来自MAC地址为00:0C:29:27:55:3F的和主机的数据包

    iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP
    

评论