自学内容网 自学内容网

Ubuntu防火墙管理(六)——ARP防火墙过滤防御&自定义系统服务

起因

在ubuntu24.04中检查arp表,输出异常

arp -a

? (10.162.242.142) 位于 74:3a:20:b9:e8:02 [ether] 在 wlp2s0
? (10.162.0.1) 位于 在 wlp2s0
ubuntu环境中,这是否表示ARP攻击,本地网关为10.162.0.1,可用arptables防御吗?

GPT分析与ARP攻击判定

根据你提供的信息,以下是对该情况的分析和建议:

  1. ARP表项解释

    • ? (10.162.242.142) 位于 74:3a:20:b9:e8:02 [ether] 在 wlp2s0:这表示IP地址为10.162.242.142的设备在MAC地址为74:3a:20:b9:e8:02的网络接口wlp2s0上。
    • ? (10.162.0.1) 位于 <incomplete> 在 wlp2s0:这表示IP地址为10.162.0.1的设备(通常是本地网关)的MAC地址未解析完成。
  2. ARP攻击的迹象

    • ARP攻击通常表现为网络中设备ARP表项的频繁变化或异常MAC地址。
    • 在你的情况下,10.162.0.1的MAC地址未解析完成(<incomplete>),这可能是网络问题或ARP攻击的迹象。
  3. 使用arptables进行防御

    • arptables是一个用于管理ARP包过滤的工具,可以用来防御ARP攻击。
    • 你可以通过设置规则来限制ARP包的流量,确保只有合法的ARP包能够通过。

修改Arp规则过滤报文

以下是如何使用arptables进行基本防御的步骤:

  1. 安装arptables

    sudo apt-get install arptables
    
  2. 设置基本规则

sudo arptables -A INPUT --src-ip 10.162.0.1 --src-mac 74:3a:20:b9:e8:02 -j ACCEPT
sudo arptables -P INPUT DROP
  1. 查看当前的ARP规则
   sudo arptables -L

结果如下:

$ sudo arptables -L
Chain INPUT (policy DROP)
-j ACCEPT -s _gateway --src-mac 74:3a:20:b9:e8:02

Chain OUTPUT (policy ACCEPT)
  1. 保存规则

    sudo arptables-save > /etc/arptables.rules
    
  2. 开机自动加载规则
    /etc/rc.local文件中添加以下内容:

    arptables-restore < /etc/arptables.rules
    

但由于ubuntu24不存在/etc/rc.local,要想开机执行arptables规则,有两种方法

开机执行arptables规则

方法1——将开机更改arptables规则写入系统服务

如果你的 Ubuntu 系统中没有 /etc/rc.local,你可以使用 systemd 创建一个自定义服务来在系统启动时执行 arptables-restore 命令。以下是具体步骤:

创建 Systemd 服务

  1. 创建服务文件

    使用文本编辑器创建一个新的服务文件,例如 arptables.service

    sudo nano /etc/systemd/system/arptables.service
    
  2. 添加服务配置

    在文件中添加以下内容:

    [Unit]
    Description=Restore arptables rules
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/sbin/arptables-restore < /etc/arptables.rules
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    

    这里的 After=network.target 确保在网络服务启动后再执行 arptables-restore

  3. 保存并退出

    CTRL + X,然后按 Y 确认保存,最后按 Enter 退出编辑器。

启用和启动服务

  1. 启用服务

    运行以下命令以启用服务,使其在系统启动时自动运行:

    sudo systemctl enable arptables.service
    
  2. 启动服务(可选):

    如果你想立即启动服务并测试它,可以运行:

    sudo systemctl start arptables.service
    

验证服务状态

你可以通过以下命令检查服务的状态,确保它已成功启动:

$ sudo systemctl status arptables.service
/etc/systemd/system# sudo systemctl status arptables.service
● arptables.service - Restore arptables rules
     Loaded: loaded (/etc/systemd/system/arptables.service; enabled; preset: enabled)
     Active: active (exited) since Mon 2024-12-09 22:59:44 CST; 8s ago
   Main PID: 43281 (code=exited, status=0/SUCCESS)
        CPU: 2ms

12月 09 22:59:44 star systemd[1]: Starting arptables.service - Restore arptables rules...
12月 09 22:59:44 star systemd[1]: Finished arptables.service - Restore arptables rules.

查看日志

如果需要查看服务的输出或错误信息,可以使用以下命令:

journalctl -u arptables.service

方法2——用netfilter-persistent

netfilter-persistent 是一个更通用的工具,旨在管理与 Linux 内核中的 Netfilter 框架相关的所有类型的规则,包括 iptables、ip6tables(用于 IPv6)和 arptables(用于 ARP).

安装iptables-persistent,会顺带安装netfilter-persistent

sudo apt install iptables-persistent

保存当前规则

sudo netfilter-persistent save
  • 这条指令的作用是将当前的 iptables 和 arptables 规则保存到配置文件中,以便在系统重启后能够自动恢复这些规则。

重新加载iptables、arptables规则

sudo netfilter-persistent reload#
  • 命令的作用是重新加载已保存的 iptables 和 arptables 规则。这意味着它会从配置文件中读取规则并应用到当前的防火墙设置中。
  • 当你修改了防火墙规则文件(例如,添加、删除或更改规则)后,可以使用 netfilter-persistent reload 命令来立即应用这些更改。

开机启动nftables服务

  • netfilter-persistent作用于nftables的配置文件
  • 因此相当于把规则借助于nftables服务来执行
  • 所以要保证nftables服务正常执行
sudo systemctl enable nftables
sudo systemctl start nftables

可查看

sudo systemctl status nftables

原文地址:https://blog.csdn.net/shuia64649495/article/details/144355516

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!