怎么构建nftables

技术怎么构建nftables这篇文章将为大家详细讲解有关怎么构建nftables,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。当前,有一个与 nftables 兼容的 iptables

本文将详细解释如何构建nftables,边肖认为这相当实用,所以我将分享给大家作为参考。希望你看完这篇文章能有所收获。

目前,有一个与nftables兼容的iptables-nft后端,但很快,甚至它不再可用。此外,正如红帽开发人员指出的,有时它可能会错误地转换规则。我们需要知道如何构建自己的nftables,而不是依赖iptables到nftables转换器。

在nftables中,所有地址族都遵循一个规则。与iptables不同,nftables在用户空间中运行,iptables中的每个模块都在内核(空间)中运行。它很少需要更新内核,并有一些新的功能,如映射,地址族和字典。

00-1010地址族决定了要处理的数据包的类型。nftables中有六个地址系列,它们是:

互联网协议(Internet Protocol的缩写)

ipv6

inet

阿尔普

桥梁

网络开发

在nftables中,ipv4和ipv6协议可以组合成一个名为inet的地址族。因此,我们不需要指定两个规则:一个用于ipv4,另一个用于ipv6。如果没有指定地址系列,它将默认为ip协议,即ipv4。我们对inet地址系列感兴趣,因为大多数家庭用户将使用ipv4或ipv6协议。

00-1010典型的nftables规则由三部分组成:表、链和规则。

是表链和规则的容器。他们通过他们的地址、家庭和名字来识别。它包含inet/arp/bridge/netdev等协议所需的规则,有三种类型:过滤、NAT和路由。Nftables规则可以从脚本中加载,也可以在终端中键入并保存为规则集。

对于家庭用户,默认链是一个过滤器。inet系列包含以下挂钩:

投入

输出

向前

预先布线

后路由

地址族

最大的问题之一就是我们是否可以使用防火墙脚本。答案是:这是你自己的选择。这里有一些建议:如果防火墙中有数百个规则,最好使用脚本,但是如果您是典型的家庭用户,您可以在终端中键入命令,然后(保存并重新启动)加载规则集。每种选择都有自己的优缺点。在本文中,我们将在终端中键入它们来构建防火墙。

Nftables使用名为nft的程序来添加、创建、列出、删除和加载规则。使用以下命令确保nftables安装有conntrackd和netfilter-persistent包,并删除iptables:

apt-getinstallinfotlocontracknetfilter-persistent apt-getpurgeitablenft需要以root用户身份或使用sudo运行。使用以下命令分别列出、刷新、删除规则集和加载脚本。

正如iptables一样,防火墙将包含三个部分:输入、转发和输出。在终端中,为输入策略键入以下命令。开始之前,请确保规则集已刷新。我们的默认策略将删除所有内容。我们将在防火墙中使用inet地址系列。添加以下规则作为根规则或使用sudo运行:

nftaddtableinetfilternftadchainetfiltrinput { typefilterhookinput priority 0 \;计数器\;

policy drop \; }

你会注意到有一个名为 priority 0 的东西。这意味着赋予该规则更高的优先级。挂钩通常赋予负整数,这意味着更高的优先级。每个挂钩都有自己的优先级,过滤器链的优先级为 0。你可以检查 nftables Wiki 页面以查看每个挂钩的优先级。

要了解你计算机中的网络接口,请运行以下命令:

ip link show

它将显示已安装的网络接口,一个是本地主机、另一个是以太网端口或无线端口。以太网端口的名称如下所示:enpXsY,其中 XY 是数字,无线端口也是如此。我们必须允许本地主机的流量,并且仅允许从互联网建立的传入连接。

nftables 具有一项称为裁决语句的功能,用于解析规则。裁决语句为 acceptdropqueuejumpgotocontinuereturn。由于这是一个很简单的防火墙,因此我们将使用 acceptdrop 处理数据包。

nft add rule inet filter input iifname lo acceptnft add rule inet filter input iifname enpXsY ct state new, established, related accept

接下来,我们必须添加规则以保护我们免受隐秘扫描。并非所有的隐秘扫描都是恶意的,但大多数都是。我们必须保护网络免受此类扫描。第一组规则列出了要测试的 TCP 标志。在这些标志中,第二组列出了要与第一组匹配的标志。

nft add rule inet filter input iifname enpXsY tcp flags \& \(syn\|fin\) == \(syn\|fin\) dropnft add rule inet filter input iifname enpXsY tcp flags \& \(syn\|rst\) == \(syn\|rst\) dropnft add rule inet filter input iifname enpXsY tcp flags \& \(fin\|rst\) == \(fin\|rst\) dropnft add rule inet filter input iifname enpXsY tcp flags \& \(ack\|fin\) == fin dropnft add rule inet filter input iifname enpXsY tcp flags \& \(ack\|psh\) == psh dropnft add rule inet filter input iifname enpXsY tcp flags \& \(ack\|urg\) == urg drop

记住,我们在终端中键入这些命令。因此,我们必须在一些特殊字符之前添加一个反斜杠,以确保终端能够正确解释该斜杠。如果你使用的是脚本,则不需要这样做。

关于 ICMP 的警告

互联网控制消息协议(ICMP)是一种诊断工具,因此不应完全丢弃该流量。完全阻止 ICMP  的任何尝试都是不明智的,因为它还会导致停止向我们提供错误消息。仅启用最重要的控制消息,例如回声请求、回声应答、目的地不可达和超时等消息,并拒绝其余消息。回声请求和回声应答是  ping 的一部分。在输入策略中,我们仅允许回声应答、而在输出策略中,我们仅允许回声请求。

nft add rule inet filter input iifname enpXsY icmp type { echo-reply, destination-unreachable, time-exceeded } limit rate 1/second acceptnft add rule inet filter input iifname enpXsY ip protocol icmp drop

最后,我们记录并丢弃所有无效数据包。

nft add rule inet filter input iifname enpXsY ct state invalid log flags all level info prefix \”Invalid-Input: \”nft add rule inet filter input iifname enpXsY ct state invalid drop

转发和输出策略

在转发和输出策略中,默认情况下我们将丢弃数据包,仅接受已建立连接的数据包。

nft add chain inet filter forward { type filter hook forward priority 0 \; counter \; policy drop \; }nft add rule inet filter forward ct state established, related acceptnft add rule inet filter forward ct state invalid dropnft add chain inet filter output { type filter hook output priority 0 \; counter \; policy drop \; }

典型的桌面用户只需要端口 80 和 443 即可访问互联网。最后,允许可接受的 ICMP 协议并在记录无效数据包时丢弃它们。

nft add rule inet filter output oifname enpXsY tcp dport { 80, 443 } ct state established acceptnft add rule inet filter output oifname enpXsY icmp type { echo-request, destination-unreachable, time-exceeded } limit rate 1/second acceptnft add rule inet filter output oifname enpXsY ip protocol icmp dropnft add rule inet filter output oifname enpXsY ct state invalid log flags all level info prefix \”Invalid-Output: \”nft add rule inet filter output oifname enpXsY ct state invalid drop

现在我们必须保存我们的规则集,否则重新启动时它将丢失。为此,请运行以下命令:

sudo nft list ruleset. > /etc/nftables.conf

我们须在引导时加载 nftables,以下将在 systemd 中启用 nftables 服务:

sudo systemctl enable nftables

接下来,编辑 nftables 单元文件以删除 Execstop 选项,以避免在每次引导时刷新规则集。该文件通常位于 /etc/systemd/system/sysinit.target.wants/nftables.service。现在重新启动nftables:

sudo systemctl restart nftables

在 rsyslog 中记录日志

当你记录丢弃的数据包时,它们直接进入 syslog,这使得读取该日志文件非常困难。最好将防火墙日志重定向到单独的文件。在 /var/log 目录中创建一个名为 nftables 的目录,并在其中创建两个名为 input.logoutput.log 的文件,分别存储输入和输出日志。确保系统中已安装 rsyslog。现在转到 /etc/rsyslog.d 并创建一个名为 nftables.conf 的文件,其内容如下:

:msg,regex,”Invalid-Input: “ -/var/log/nftables/Input.log:msg,regex,”Invalid-Output: “ -/var/log/nftables/Output.log & stop

现在,我们必须确保日志是可管理的。为此,使用以下代码在 /etc/logrotate.d 中创建另一个名为 nftables 的文件:

/var/log/nftables/* { rotate 5 daily maxsize 50M missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }

重新启动 nftables。现在,你可以检查你的规则集。如果你觉得在终端中键入每个命令很麻烦,则可以使用脚本来加载 nftables 防火墙。

关于“怎么构建nftables”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50275.html

(0)

相关推荐

  • Hibernate持久化类怎么用

    技术Hibernate持久化类怎么用这篇文章主要介绍了Hibernate持久化类怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Hibernate持久

    攻略 2021年12月1日
  • 抖音点赞3元100个,抖音怎么刷点赞上热门

    技术抖音点赞3元100个,抖音怎么刷点赞上热门大家务必要可以客观的应对抖音短视频粉丝领域的收费标准价钱规范,并并不是贵的才算是好的自然也并不一定划算的价钱全是不靠谱的,只是要可以融合自身的要求选择专业靠谱的服务平台,而且

    测评 2021年10月26日
  • 毛线鞋,3岁小孩毛线棉鞋怎么织

    技术毛线鞋,3岁小孩毛线棉鞋怎么织你好毛线鞋:很高兴回答“3岁小孩毛线棉鞋怎么织”这个问题。1.准备工具/原料:棒针、毛线。2、方法/步骤:起针30针,双色线交替编织20行.织21行的时候,鞋口留5针不织,从织22行开始

    生活 2021年10月31日
  • c++编译器(c++培训)

    技术怎么使用VS2022开发在线远程编译部署的C++程序这篇文章主要介绍“怎么使用VS2022开发在线远程编译部署的C++程序”,在日常操作中,相信很多人在怎么使用VS2022开发在线远程编译部署的C++程序问题上存在疑

    攻略 2021年12月16日
  • 汇编语言的指令采用什么来取代二进制

    技术汇编语言的指令采用什么来取代二进制本篇内容介绍了“汇编语言的指令采用什么来取代二进制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

    攻略 2021年11月9日
  • 奔怎么组词,“奔”字的多音字怎么组词

    技术奔怎么组词,“奔”字的多音字怎么组词奔拼音:【bēn/bèn】其中奔【bèn】的意思和相关组词如下:奔【 bèn】1、直向目的地走去:投奔。直奔工地。他顺着小道直奔那山头。奔向小康。投奔【tóubèn】指前往依靠别人

    生活 2021年10月21日