使用nftables进行包管理和实现防火墙功能涉及以下几个基本步骤:
- 安装 nftables: 在大多数现代Linux发行版中,nftables通常已经作为标准软件包包含在内。如果未安装,可以通过包管理器(如apt、yum或dnf)来安装它。
# 对于基于Debian的系统:
sudo apt-get install nftables
# 对于基于RPM的系统:
sudo yum install nftables # 或者在较新版本中使用 dnf
- 理解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
-
配置具体规则: 根据需要创建更复杂的规则,比如允许特定来源访问特定端口,或者进行网络地址转换等操作。
-
查看当前规则集: 使用 nft list ruleset 命令查看已配置的所有规则。
-
保存规则: nftables的规则变更在运行时生效,但重启后可能丢失。为了持久化规则,你需要将它们写入到系统的配置文件中,通常是 /etc/nftables.conf,并在启动脚本中调用 nft 命令加载这些规则。
-
复杂规则示例: 更复杂的规则可以包含多种匹配条件,如协议类型、源/目的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
标签:使用,了解,filter,add,nftables,inet,规则,nft
From: https://www.cnblogs.com/cuifujian/p/17994437