Ubuntu防火墙管理(五)——ufw源规则解读与修改
firewalld与nftables
在 /etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说:
-
nftables:这是当前的默认选项,表示 Firewalld 将使用
nftables作为防火墙后端。nftables是一个现代的防火墙框架,旨在替代旧的iptables,提供更好的性能和更灵活的配置。 -
iptables:这是一个较旧的防火墙后端,支持
iptables、ip6tables、ebtables和ipset。不过,正如注释中所提到的,iptables后端已经被标记为过时(deprecated),并将在未来的版本中被移除。
因此,FirewallBackend=nftables 的意思是 Firewalld 将使用 nftables 作为其防火墙后端实现,这是推荐的选择,因为它是现代的、功能更强大的解决方案。如果你没有特别的需求,建议保持这个设置为默认值。
但由于暂时不想学习nftables语法,聚焦于iptables与ufw
iptables VS nftables
nftables 和 iptables 是 Linux 系统中用于管理网络流量和防火墙规则的两种工具。nftables 是 iptables 的替代品,旨在提供更现代和灵活的防火墙管理方式。以下是它们之间的一些优缺点比较:
优点
nftables 的优点
-
统一的框架:
nftables提供了一个统一的框架来处理 IPv4、IPv6、ARP 和其他协议,而iptables需要分别使用iptables、ip6tables、ebtables等工具。
-
更简洁的语法:
nftables的语法更简洁,规则的定义和管理更加直观,减少了复杂性。
-
更高的性能:
nftables在处理规则时使用了更高效的数据结构(如哈希表),在处理大量规则时性能更好。
-
更强大的功能:
nftables支持更复杂的匹配条件和操作,例如使用集合(sets)来管理多个地址或端口,支持更灵活的流量控制。
-
内置的状态跟踪:
nftables提供了更强大的连接跟踪功能,可以更方便地管理状态信息。
-
更好的日志记录:
nftables提供了更灵活的日志记录选项,可以更方便地记录和管理日志。
iptables 的优点
-
成熟和广泛使用:
iptables已经存在很长时间,广泛应用于各种 Linux 发行版,许多文档和教程可供参考。
-
兼容性:
- 许多现有的脚本和工具依赖于
iptables,在某些情况下,使用iptables可能更方便。
- 许多现有的脚本和工具依赖于
缺点
nftables 的缺点
-
学习曲线:
- 对于习惯于
iptables的用户,nftables可能需要一些时间来适应新的语法和概念。
- 对于习惯于
-
支持和文档:
- 尽管
nftables的文档在不断改进,但相较于iptables,仍然可能存在一些不足。
- 尽管
iptables 的缺点
-
复杂性:
iptables的语法和规则管理相对复杂,尤其是在处理大量规则时,可能会变得难以管理。
-
性能问题:
- 在处理大量规则时,
iptables的性能可能不如nftables,因为它使用的是线性链表结构。
- 在处理大量规则时,
-
分散的工具:
iptables需要分别使用ip6tables、ebtables等工具来处理不同的协议,增加了管理的复杂性。
总结
- 选择
nftables:如果您正在设置新的防火墙或需要更高效、更灵活的规则管理,nftables是一个更好的选择。 - 选择
iptables:如果您已经有大量基于iptables的配置或脚本,或者需要与现有系统兼容,继续使用iptables可能更方便。
总的来说,nftables 是一个现代化的解决方案,提供了许多优于 iptables 的功能,但在某些情况下,iptables 仍然是一个有效的选择。
Ufw源规则解读
- 在
/etc/ufw/before.rules
1-MDNS监听
-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j DROP
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j DROP
在 /etc/ufw/before.rules 文件中,您看到的这两行是 iptables 规则的定义,具体用于允许特定的多播(multicast)流量。让我们逐行分析这些规则的含义:
规则解析
-
第一条规则:
-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT-A ufw-before-input:这表示将规则添加到名为ufw-before-input的链中。ufw-before-input是UFW在处理输入流量之前使用的链。-p udp:指定协议为 UDP(用户数据报协议)。-d 224.0.0.251:指定目标地址为224.0.0.251,这是用于多播 DNS(mDNS)的地址。--dport 5353:指定目标端口为5353,这是 mDNS 服务使用的端口。-j ACCEPT:表示如果流量匹配上述条件,则接受该流量。
总结:这条规则允许所有发送到多播地址
224.0.0.251的 UDP 流量,目标端口为5353,以支持 mDNS 服务发现。 -
第二条规则:
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT-A ufw-before-input:同样表示将规则添加到ufw-before-input链中。-p udp:指定协议为 UDP。-d 239.255.255.250:指定目标地址为239.255.255.250,这是用于通用即插即用(UPnP)服务的多播地址。--dport 1900:指定目标端口为1900,这是 UPnP 服务使用的端口。-j ACCEPT:表示如果流量匹配上述条件,则接受该流量。
总结:这条规则允许所有发送到多播地址
239.255.255.250的 UDP 流量,目标端口为1900,以支持 UPnP 服务发现。
总结
这两条规则的目的是允许特定的多播流量,以支持服务发现功能。mDNS 和 UPnP 是常用的网络服务发现协议,允许设备在网络上自动发现彼此。通过在 ufw-before-input 链中添加这些规则,UFW 确保这些多播流量不会被防火墙阻止,从而使相关服务能够正常工作。
2- ufw-not-local 报文的处理
# ufw-not-local
-A ufw-before-input -j ufw-not-local# if LOCAL, RETURN
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN# if MULTICAST, RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j DROP# if BROADCAST, RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN# all other non-local packets are dropped
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
这段代码是iptables规则,用于配置ufw防火墙在处理输入数据包时的行为。
-
-A ufw-before-input -j ufw-not-local这行代码表示将数据包传递到名为ufw-not-local的链。也就是说,所有传入数据包都将按照该链中的规则进行处理。 -
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN这行代码表示如果数据包的目标类型是LOCAL(本地)地址,则直接返回(允许通过)。这意味着本地目标的数据包将被接受并传递到本地。 -
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN这行代码表示如果数据包的目标类型是MULTICAST(多播)地址,则直接返回(允许通过)。这意味着多播目标的数据包将被接受并传递到相应的多播组。 -
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN这行代码表示如果数据包的目标类型是BROADCAST(广播)地址,则直接返回(允许通过)。这意味着广播目标的数据包将被接受并传递到所有主机。 -
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny这行代码表示如果数据包既不是本地、多播、广播目标,那么将启用日志记录,并限制每分钟只接受3个数据包,超过这个数量的数据包会被丢弃。同时将匹配的数据包传递到ufw-logging-deny链。该链的作用是将被丢弃的数据包进行日志记录。 -
-A ufw-not-local -j DROP这行代码表示如果数据包既不是本地、多播、广播目标,且已经超过了日志记录的限制数目,那么直接丢弃该数据包。
总之,这段代码的作用是检查输入的数据包目标地址类型,如果是本地、多播、广播目标则接受通过,如果不是则根据限制条件进行日志记录或丢弃。
- RETURN
RETURN是一个iptables规则动作,表示数据包会立即返回到调用链的上一级。在这个特定的规则中,如果数据包的目标类型是MULTICAST(多播)地址,那么该规则会立即返回,不会继续往下执行链中的其他规则。这意味着数据包将被允许通过,不会被防火墙拦截或处理。
相关文章:
Ubuntu防火墙管理(五)——ufw源规则解读与修改
firewalld与nftables 在 /etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说: nftables:这是当前的默认选项,表示 Firewalld 将使用 nftables 作为防火墙后端。nftab…...
Docker如何运行一个python脚本Hello World
Docker如何运行一个python脚本Hello World 1、编写Python的Hello World:script.py #!/usr/bin/python #_*_coding:utf-8_*_ print("Hello World") 2、Dockerfile文件 #拉取Docker环境 FROM python #设置工作目录 WORKDIR /app #将dockerfile同级文件copy到…...
人工智能-自动驾驶领域
目录 引言自动驾驶与人工智能的结合为什么自动驾驶领域适合发表文章博雅智信的自动驾驶辅导服务结语 引言 自动驾驶技术的崛起是当代交通行业的一场革命。通过结合先进的人工智能算法、传感器技术与计算机视觉,自动驾驶不仅推动了技术的进步,也使得未来…...
[ubuntu18.04]ubuntu18.04安装json-c操作说明
ubuntu18.04安装json-c 代码下载 rootw1804-virtual-machine:/home/w1804/tr069# git clone https://github.com/json-c/json-c.git Cloning into /opt/git/json-c... remote: Enumerating objects: 6398, done. remote: Counting objects: 100% (1067/1067), done. remote:…...
华为eNSP:VRRP
一、VRRP背景概述 在现代网络环境中,主机通常通过默认网关进行网络通信。当默认网关出现故障时,网络通信会中断,影响业务连续性和稳定性。为了提高网络的可靠性和冗余性,采用虚拟路由冗余协议(VRRP)是一种…...
Linux--top系统资源命令查看--详解
top命令用法 图: top命令用法: top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。 top的使用方式: top [-d number] | top [-bnp] top参数解释: -…...
es的join是什么数据类型
在 Elasticsearch 中,parent 并不是一个独立的数据类型,而是与 join 数据类型一起使用的一个概念。join 数据类型用于在同一个索引中建立父子文档之间的关系,允许你在一个索引内表示层级结构或关联关系。通过 join 字段,你可以定义不同类型的文档(如父文档和子文档),并指…...
KV Shifting Attention Enhances Language Modeling
基本信息 📝 原文链接: https://arxiv.org/abs/2411.19574👥 作者: Mingyu Xu, Wei Cheng, Bingning Wang, Weipeng Chen🏷️ 关键词: KV shifting attention, induction heads, language modeling📚 分类: 机器学习, 自然语言处…...
软错误防护技术在车规MCU中应用
在大气层内,宇宙射线粒子与大气分子发生核反应生成大气中子。大气中子入射微电子器件或电路将会诱发单粒子效应(SEE),效应类型主要有单粒子翻转(SEU)、单粒子瞬态(SET)、单粒子锁定&…...
遥感图像处理二(ENVI5.6 Classic)
1 实验目的和内容 1.1 实验目的 本次上机旨在继续深入了解ENVI软件的基本使用,并对提供的实验数据进行基本的图像分割和地物分类等操作并分析结果。 1.2 实验内容 1.2.1 图像分割 对教材示例数据“C7图像分割”中的风景图、兰花图和娃娃图分别进行图像分割操作…...
经典文献阅读之--A Fast Dynamic Point Detection...(用于驾驶场景中的动态点云剔除方法)
0. 简介 现有的基于3D点的动态点检测和移除方法存在显著的时间开销,使其难以适应激光雷达-惯性测程系统。《A Fast Dynamic Point Detection Method for LiDAR-Inertial Odometry in Driving Scenarios》提出了一种基于标签一致性的动态点检测和移除方法࿰…...
百度搜索应适用中文域名国家标准,修复中文网址展示BUG
12月1日中文域名国家标准正式实施。该标准“明确了中文域名在编码、解析、注册、字表等方面的技术要求,适用于中文域名注册管理机构、注册服务机构、网络软硬件服务商及终端用户”。 00:23 显然,百度作为网络软硬件服务商,是包括在国家标准的…...
设计模式学习之——适配器模式
适配器模式(Adapter Pattern),又称作变压器模式(因为这两者都体现了“转换”或“适配”的核心概念),是一种结构型设计模式。它将一个类的接口转换成客户端所期望的另一种接口,从而使得原本因接口…...
服务器数据恢复—热备盘上线过程中硬盘离线导致raid5阵列崩溃的数据恢复案例
服务器数据恢复环境: 两组分别由4块SAS接口硬盘组建的raid5阵列,两组raid5阵列划分LUN并由LVM管理,格式化为EXT3文件系统。 服务器故障: RAID5阵列中一块硬盘未知原因离线,热备盘自动激活上线替换离线硬盘。在热备盘上…...
MetaGPT源码 (Memory 类)
目录 MetaGPT源码:Memory 类例子 MetaGPT源码:Memory 类 这段代码定义了一个名为 Memory 的类,用于存储和管理消息(Message)对象。Memory 提供了多种操作消息的功能,包括添加单条或批量消息、按角色或内容筛选消息、删除最新消息…...
数据结构与算法复习AVL树插入过程
环境 $ cat /proc/version Linux version 6.8.0-45-generic (builddlcy02-amd64-115) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 #include <std…...
小迪笔记第 五十天 文件包含漏洞 远程包含 本地包含 ctf练习题实战
前言 文件包含漏洞 原理就是包含的文件如果可控就会造成这个漏洞 php文件包含的特征 : PHP:include、require、include_once、require_once等 一共是分为了2 种 一个就是 远程文件包含 这个的前提是php开启了 远程文件上传这个选项 原理应用就是…...
单片机:实现点阵汉字平滑滚动显示(附带源码)
单片机实现点阵汉字平滑滚动显示 点阵显示技术是嵌入式系统中的常见显示技术之一,广泛应用于LED矩阵显示屏、广告牌、电子时钟等设备。在本项目中,我们将实现一个基于单片机的点阵汉字平滑滚动显示系统,使用LED点阵显示屏来实现动态滚动的汉…...
C# 实现 10 位纯数字随机数
本文将介绍如何用 C# 实现一个生成 10 位纯数字随机数的功能。以下是完整的代码示例: using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace RandomTset {class Program{// 使用GUID作为种子来创建随机数生成器static…...
分布式全文检索引擎ElasticSearch-基本概念介绍
一、索引类型 索引,可以理解是我们的目录,看一本书的时候,可以根据目录准确快速定位到某一页,那么索引就可以帮我们快速定位到某条数据在庞大的数据表的哪一个位置。 我们常见的索引包括正排索引和倒排索引 1、正排索引 正排索…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
