nftables了解使用

使用nftables进行包管理和实现防火墙功能涉及以下几个基本步骤:

  1. 安装 nftables: 在大多数现代Linux发行版中,nftables通常已经作为标准软件包包含在内。如果未安装,可以通过包管理器(如apt、yum或dnf)来安装它。
   # 对于基于Debian的系统:
   sudo apt-get install nftables

   # 对于基于RPM的系统:
   sudo yum install nftables  # 或者在较新版本中使用 dnf
  1. 理解nftables的基础概念:

表(Tables):nftables中有四种类型的表,包括inet(处理IPv4和IPv6)、ip(仅处理IPv4)、arp和bridge。
链(Chains):每个表中可以有多个链,例如input、output和forward链。
规则(Rules):链中包含具体的规则,用于定义对数据包的操作,规则包含匹配条件和相应的动作。
集(Sets):可选的数据结构,用于存储一组地址或其他对象,并在规则中引用。
创建基础规则集: 允许所有出站流量并丢弃所有入站流量的简单示例:

   # 创建一个名为 filter 的 inet 表,这是默认使用的表
   nft add table inet filter

   # 在 filter 表中添加 INPUT 链并设置默认策略为 DROP
   nft add chain inet filter input { type filter hook input priority 0 ; policy drop; }
   
   # 添加 OUTPUT 链并设置默认策略为 ACCEPT
   nft add chain inet filter output { type filter hook output priority 0 ; policy accept; }

   # 如果要允许 SSH 访问(假设是端口22),可以添加以下规则到INPUT链
   nft add rule inet filter input tcp dport ssh accept
  1. 配置具体规则: 根据需要创建更复杂的规则,比如允许特定来源访问特定端口,或者进行网络地址转换等操作。

  2. 查看当前规则集: 使用 nft list ruleset 命令查看已配置的所有规则。

  3. 保存规则: nftables的规则变更在运行时生效,但重启后可能丢失。为了持久化规则,你需要将它们写入到系统的配置文件中,通常是 /etc/nftables.conf,并在启动脚本中调用 nft 命令加载这些规则。

  4. 复杂规则示例: 更复杂的规则可以包含多种匹配条件,如协议类型、源/目的IP、端口号、状态标志等,以及对应的动作,如accept、drop、log等。

# 允许来自特定网络段的HTTP访问
nft add rule inet filter input ip saddr 192.0.2.0/24 tcp dport http accept

# 拒绝所有ICMP请求
nft add rule inet filter input icmp type echo-request reject with icmpx type admin-prohibited
posted @ 2024-01-29 14:23  风筝遇见风  阅读(735)  评论(0)    收藏  举报