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:02Chain 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 rulesLoaded: loaded (/etc/systemd/system/arptables.service; enabled; preset: enabled)Active: active (exited) since Mon 2024-12-09 22:59:44 CST; 8s agoMain PID: 43281 (code=exited, status=0/SUCCESS)CPU: 2ms12月 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp扭蛋机组件

做了一个uniapp的扭蛋机组件&#xff0c;可以前往下载地址下载 仅测试了vue2、3、h5页面微信小程序&#xff0c;理论支持全平台 使用方法简单&#xff0c;具有待机动效、抽奖中动效、掉落奖品动效&#xff0c;可以替换奖品图片&#xff0c;足以满足大部分抽奖页面需求。 示例图…

C#实现一个HttpClient集成通义千问-开发前准备

集成一个在线大模型&#xff08;如通义千问&#xff09;&#xff0c;来开发一个chat对话类型的ai应用&#xff0c;我需要先了解OpenAI的API文档&#xff0c;请求和返回的参数都是以相关接口文档的标准进行的 相关文档 OpenAI API文档 https://platform.openai.com/docs/api-…

用JavaScript实现一个贪吃蛇游戏

原理如下&#xff0c;贪吃蛇的蛇身就是一个数组&#xff0c;数组中的每个元素都是一个坐标&#xff0c;蛇身每次移动时都会在数组前插入一个新坐标&#xff0c;并在数组尾部删掉一条记录&#xff0c;吃到食物后数组的尾部记录就不删。如果移到屏幕边缘会从屏幕的另一边出现。好…

Unity RectTransUtility工具类

这个工具主要是用于动态生成UI的情况。项目中我们通过配置UI的锚点、位置以及大小(位置、大小都是通过蓝湖看到的)&#xff0c;然后通过代码动态生成UI。 大部分情况下只要合理设置锚点&#xff0c;那么生成出来的UI就已经满足了适配的要求。 using UnityEngine;public static…

红日靶场vulnstack 4靶机的测试报告[细节](一)

目录 一、测试环境 1、系统环境 2、注意事项 3、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、漏洞利用Getshell ①Struts 2 s2-045漏洞 手工利用s2-45漏洞 Msf综合利用 ②Tomcat框架(CVE-2017-12615) ③phpMyAdmin(CVE-2018-12613) 构造语句写入冰蝎木…

Springboot使用纪要

一、配置文件的加载顺序 1、不同配置文件类型的加载顺序 springboot支持三种类型的配置文件 .yml .yaml .properties当这三种配置文件处于同一目录下时&#xff0c;springboot会优先加载properties文件&#xff0c;如果.properties文件和.yml文件都有某一配置&#xff0c;而…

Unity协程机制详解

Unity的协程&#xff08;Coroutine&#xff09;是一种异步编程的机制&#xff0c;允许在多个帧之间分割代码的执行&#xff0c;而不阻塞主线程。与传统的多线程不同&#xff0c;Unity的协程在主线程中运行&#xff0c;并不会开启新的线程。 什么是协程&#xff1f; 协程是一种…

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题

electron 打包 webview 嵌入需要调用电脑摄像头拍摄失败问题 这篇文章是接我cocos专栏的上一篇文章继续写的&#xff0c;我上一篇文章写的是 cocos 开发触摸屏项目&#xff0c;需要嵌入一个网页用来展示&#xff0c;最后通过 electron 打包成 exe 程序&#xff0c;而且网页里面…

Android 开发者选项-模拟辅助显示设备

目录 概述使用开关的代码实现方式系统部分的处理:参考 概述 在Android开发中&#xff0c;模拟辅助显示设备通常指的是通过Android开发者选项来设置的一种虚拟显示设备&#xff0c;它允许开发者在一个设备上模拟另一个设备的显示特性。这种功能对于测试应用程序在不同屏幕尺寸、…

android 常用三方框架

说实话&#xff0c; 我是比较讨厌三方框架的&#xff0c; 比如一个eventbus 底层逻辑就是个观察者模式&#xff0c;当然他的场景涵盖的比较丰富&#xff0c; 单从 单一原则来说&#xff0c; 还是一个简单的观察者模式就能解决问题&#xff0c; 何必要添加那么多文件到我们的项目…

[COLM 2024] V-STaR: Training Verifiers for Self-Taught Reasoners

本文是对 STaR 的改进方法&#xff0c;COLM 是 Conference On Language Models&#xff0c;大模型领域新出的会议&#xff0c;在国际上很知名&#xff0c;不过目前还没有被列入 ccf list&#xff08;新会议一般不会列入&#xff09;&#xff1b;作者来自高校、微软研究院和 Goo…

从C#中的结构体和类的区别中看引用和值的问题

在 C#中&#xff0c;结构体&#xff08;struct&#xff09;和类&#xff08;class&#xff09;都是用于创建自定义数据类型的方式&#xff0c;但它们在很多方面存在着显著的区别。掌握他们的区别至少不会产生一些我们不了解情况下发生的错误。 文章目录 一、作为参数传递时的差…

Spann3R:基于DUSt3R的密集捕获数据增量式重建方法

来自作者Hengyi Wang在b站3D视觉工坊中对于该论文透彻的讲解&#xff0c;这里是相关重要部分的截屏。这篇博客的用途主要是自己做记录&#xff0c;其次分享给感兴趣的同学&#xff0c;最后谢谢作者大佬的认真讲解。 作者是按照这样的次序来介绍的&#xff1a; 首先从传统的三…

Python4-分支与循环

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础3-分支与循环语句 python中 有哪些基本值是被当作true或者false的呢?if语句示例被视为 False 的情况被视为…

SAP-ABAP开发学习-面向对象OOALV(1)

本文目录 一、概述 面向对象开发特点 二、类与对象 程序中类的创建 Class构成要素 对象 方法 一、概述 随着SAP R/3 4.0版本的开发&#xff0c;ABAP语言开始引入了面向对象的开发概念。这在ABAP语言的发展过程中&#xff0c;面向对象&#xff08;Object-oriented&#…

【实用技能】如何在 .NET C# 中的邮件合并过程中操作表格单元格

TX Text Control 中的邮件合并 类是一个强大的库&#xff0c;旨在通过将数据合并到模板中来自动创建文档。它充当结构化数据&#xff08;例如来自数据库、JSON 或 XML&#xff09;和动态文档生成之间的桥梁&#xff0c;对于需要自动化文档工作流程的应用程序来说非常有用。 TX…

有源模拟滤波器的快速设计

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、概述 几乎所有电子电路中都能看到有源模拟滤波器的身影。音频系统使用滤波器进行频带限制和平衡。通信系统设计使用滤波…

如何使用Python库连接Redis

1、redis-py 库封装一个 Redis 工具类可以帮助我们简化 Redis 的操作并提高代码的复用性和可维护性。 安装redis pip install redisimport redis import logginglogging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__)class RedisUtils:def __init__(s…

【代码随想录day57】【C++复健】 53. 寻宝(prim算法);53. 寻宝(kruskal算法)

53. 寻宝&#xff08;prim算法&#xff09; 好像在研究生的算法课上学过prim算法和kruskal算法&#xff0c;不过当时只是了解了一下大致的概念和流程&#xff0c;并没有涉及到如何去写代码的部分&#xff0c;今天也算是学习了一下这两个算法的代码应该如何去实现&#xff0c;还…

使用OpenTK展示3D点云图像(C#)

最近在研究3D显示&#xff0c;找到一款在winform上展示3D点云的控件&#xff0c;并且实现了点线面的展示&#xff0c;及光照渲染纹理贴图等功能&#xff0c;如下面几张图所展示。 一些基础知识可以在LearnOpenTK - OpenTK 这个网站上学习到。 我这边使用的是openTK3.3.3版本&a…