加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

过渡到nftables,如何构建nftables的教程

发布时间:2019-11-04 14:09:31 所属栏目:Windows 来源:Vijay Marcel D
导读:开源世界中的每个主要发行版都在演进,逐渐将 nftables 作为了默认防火墙。换言之,古老的 iptables 现在已经消亡。本文是有关如何构建 nftables 的教程。 当前,有一个与 nftables 兼容的 iptables-nft 后端,但是很快,即使是它也不再提供了。另外,正如

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

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

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

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

转发和输出策略

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

  1. nft add chain inet filter forward { type filter hook forward priority 0 ; counter ; policy drop ; }
  2. nft add rule inet filter forward ct state established, related accept
  3. nft add rule inet filter forward ct state invalid drop
  4. nft add chain inet filter output { type filter hook output priority 0 ; counter ; policy drop ; }

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

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

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

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

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

  1. sudo systemctl enable nftables

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

  1. sudo systemctl restart nftables

在 rsyslog 中记录日志

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

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

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读