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攻击判定
根据你提供的信息,以下是对该情况的分析和建议:
-
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地址未解析完成。
-
ARP攻击的迹象:
- ARP攻击通常表现为网络中设备ARP表项的频繁变化或异常MAC地址。
- 在你的情况下,10.162.0.1的MAC地址未解析完成(
<incomplete>
),这可能是网络问题或ARP攻击的迹象。
-
使用arptables进行防御:
- arptables是一个用于管理ARP包过滤的工具,可以用来防御ARP攻击。
- 你可以通过设置规则来限制ARP包的流量,确保只有合法的ARP包能够通过。
修改Arp规则过滤报文
以下是如何使用arptables进行基本防御的步骤:
-
安装arptables:
sudo apt-get install arptables
-
设置基本规则:
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
- 查看当前的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)
-
保存规则:
sudo arptables-save > /etc/arptables.rules
-
开机自动加载规则:
在/etc/rc.local
文件中添加以下内容:arptables-restore < /etc/arptables.rules
但由于ubuntu24不存在/etc/rc.local,要想开机执行arptables规则,有两种方法
开机执行arptables规则
方法1——将开机更改arptables规则写入系统服务
如果你的 Ubuntu 系统中没有 /etc/rc.local
,你可以使用 systemd
创建一个自定义服务来在系统启动时执行 arptables-restore
命令。以下是具体步骤:
创建 Systemd 服务
-
创建服务文件:
使用文本编辑器创建一个新的服务文件,例如
arptables.service
:sudo nano /etc/systemd/system/arptables.service
-
添加服务配置:
在文件中添加以下内容:
[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
。 -
保存并退出:
按
CTRL + X
,然后按Y
确认保存,最后按Enter
退出编辑器。
启用和启动服务
-
启用服务:
运行以下命令以启用服务,使其在系统启动时自动运行:
sudo systemctl enable arptables.service
-
启动服务(可选):
如果你想立即启动服务并测试它,可以运行:
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)!