当前位置: 首页 > news >正文

Ubuntu防火墙管理(五)——ufw源规则解读与修改

firewalld与nftables

/etc/firewalld/firewalld.conf 文件中,FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说:

  • nftables:这是当前的默认选项,表示 Firewalld 将使用 nftables 作为防火墙后端。nftables 是一个现代的防火墙框架,旨在替代旧的 iptables,提供更好的性能和更灵活的配置。

  • iptables:这是一个较旧的防火墙后端,支持 iptablesip6tablesebtablesipset。不过,正如注释中所提到的,iptables 后端已经被标记为过时(deprecated),并将在未来的版本中被移除。

因此,FirewallBackend=nftables 的意思是 Firewalld 将使用 nftables 作为其防火墙后端实现,这是推荐的选择,因为它是现代的、功能更强大的解决方案。如果你没有特别的需求,建议保持这个设置为默认值。

但由于暂时不想学习nftables语法,聚焦于iptables与ufw

iptables VS nftables

nftablesiptables 是 Linux 系统中用于管理网络流量和防火墙规则的两种工具。nftablesiptables 的替代品,旨在提供更现代和灵活的防火墙管理方式。以下是它们之间的一些优缺点比较:

优点

nftables 的优点
  1. 统一的框架

    • nftables 提供了一个统一的框架来处理 IPv4、IPv6、ARP 和其他协议,而 iptables 需要分别使用 iptablesip6tablesebtables 等工具。
  2. 更简洁的语法

    • nftables 的语法更简洁,规则的定义和管理更加直观,减少了复杂性。
  3. 更高的性能

    • nftables 在处理规则时使用了更高效的数据结构(如哈希表),在处理大量规则时性能更好。
  4. 更强大的功能

    • nftables 支持更复杂的匹配条件和操作,例如使用集合(sets)来管理多个地址或端口,支持更灵活的流量控制。
  5. 内置的状态跟踪

    • nftables 提供了更强大的连接跟踪功能,可以更方便地管理状态信息。
  6. 更好的日志记录

    • nftables 提供了更灵活的日志记录选项,可以更方便地记录和管理日志。
iptables 的优点
  1. 成熟和广泛使用

    • iptables 已经存在很长时间,广泛应用于各种 Linux 发行版,许多文档和教程可供参考。
  2. 兼容性

    • 许多现有的脚本和工具依赖于 iptables,在某些情况下,使用 iptables 可能更方便。

缺点

nftables 的缺点
  1. 学习曲线

    • 对于习惯于 iptables 的用户,nftables 可能需要一些时间来适应新的语法和概念。
  2. 支持和文档

    • 尽管 nftables 的文档在不断改进,但相较于 iptables,仍然可能存在一些不足。
iptables 的缺点
  1. 复杂性

    • iptables 的语法和规则管理相对复杂,尤其是在处理大量规则时,可能会变得难以管理。
  2. 性能问题

    • 在处理大量规则时,iptables 的性能可能不如 nftables,因为它使用的是线性链表结构。
  3. 分散的工具

    • iptables 需要分别使用 ip6tablesebtables 等工具来处理不同的协议,增加了管理的复杂性。

总结

  • 选择 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)流量。让我们逐行分析这些规则的含义:

规则解析

  1. 第一条规则:

    -A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT
    
    • -A ufw-before-input:这表示将规则添加到名为 ufw-before-input 的链中。ufw-before-inputUFW 在处理输入流量之前使用的链。
    • -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 服务发现。

  2. 第二条规则:

    -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防火墙在处理输入数据包时的行为。

  1. -A ufw-before-input -j ufw-not-local 这行代码表示将数据包传递到名为ufw-not-local的链。也就是说,所有传入数据包都将按照该链中的规则进行处理。

  2. -A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN 这行代码表示如果数据包的目标类型是LOCAL(本地)地址,则直接返回(允许通过)。这意味着本地目标的数据包将被接受并传递到本地。

  3. -A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN 这行代码表示如果数据包的目标类型是MULTICAST(多播)地址,则直接返回(允许通过)。这意味着多播目标的数据包将被接受并传递到相应的多播组。

  4. -A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN 这行代码表示如果数据包的目标类型是BROADCAST(广播)地址,则直接返回(允许通过)。这意味着广播目标的数据包将被接受并传递到所有主机。

  5. -A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny 这行代码表示如果数据包既不是本地、多播、广播目标,那么将启用日志记录,并限制每分钟只接受3个数据包,超过这个数量的数据包会被丢弃。同时将匹配的数据包传递到ufw-logging-deny链。该链的作用是将被丢弃的数据包进行日志记录。

  6. -A ufw-not-local -j DROP 这行代码表示如果数据包既不是本地、多播、广播目标,且已经超过了日志记录的限制数目,那么直接丢弃该数据包。

总之,这段代码的作用是检查输入的数据包目标地址类型,如果是本地、多播、广播目标则接受通过,如果不是则根据限制条件进行日志记录或丢弃。

  • RETURN
    RETURN是一个iptables规则动作,表示数据包会立即返回到调用链的上一级。在这个特定的规则中,如果数据包的目标类型是MULTICAST(多播)地址,那么该规则会立即返回,不会继续往下执行链中的其他规则。这意味着数据包将被允许通过,不会被防火墙拦截或处理。
http://www.lryc.cn/news/501762.html

相关文章:

  • Docker如何运行一个python脚本Hello World
  • 人工智能-自动驾驶领域
  • [ubuntu18.04]ubuntu18.04安装json-c操作说明
  • 华为eNSP:VRRP
  • Linux--top系统资源命令查看--详解
  • es的join是什么数据类型
  • KV Shifting Attention Enhances Language Modeling
  • 软错误防护技术在车规MCU中应用
  • 遥感图像处理二(ENVI5.6 Classic)
  • 经典文献阅读之--A Fast Dynamic Point Detection...(用于驾驶场景中的动态点云剔除方法)
  • 百度搜索应适用中文域名国家标准,修复中文网址展示BUG
  • 设计模式学习之——适配器模式
  • 服务器数据恢复—热备盘上线过程中硬盘离线导致raid5阵列崩溃的数据恢复案例
  • MetaGPT源码 (Memory 类)
  • 数据结构与算法复习AVL树插入过程
  • 小迪笔记第 五十天 文件包含漏洞 远程包含 本地包含 ctf练习题实战
  • 单片机:实现点阵汉字平滑滚动显示(附带源码)
  • C# 实现 10 位纯数字随机数
  • 分布式全文检索引擎ElasticSearch-基本概念介绍
  • 电子应用设计方案-49:智能拖把系统方案设计
  • 汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动
  • 电脑怎么设置通电自动开机(工控机)
  • MaxKB进阶:豆包大模型驱动的智能日报小助手
  • Python爬虫之使用xpath进行HTML Document文档的解析
  • 调度系统:使用 Airflow 对 Couchbase 执行 SQL 调度时的潜在问题
  • 【数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
  • 简单网页制作提升用户体验和客户转化
  • 数据类型(使用与定义)
  • VMware:CentOS 7.* 连不上网络
  • 日志分析详解