nftables + Almalinux (CPanel):帮助创建规则

nftables + Almalinux (CPanel):帮助创建规则

我需要帮助创建规则。根据 CPanel,防火墙-d 在从 CentOS 迁移到 Alma Linux 时出现故障。他们不再支持 CentOS,所以我最终咬紧牙关并进行了迁移。一切都很顺利,直到我发现了防火墙-d,因为我的所有 ipset 和将新违规者添加到我的阻止列表中的过程都出现了故障。他们建议我转向 nftables。在研究它并尝试了一些方法后,我无法弄清楚我到底在寻找什么。

我想添加超时元素(1 天),就像 CPanel 对 cphulk 所做的那样。

我做了一些实验:

nft add table inet filter
nft add set inet filter jerk_ips { type ipv4_addr \; }
nft add chain inet filter jerk_ips '{ type filter hook input priority 0 ; }'
nft add rule inet filter jerk_ips ip saddr xxx.xxx.xxx.xxx drop
  • xxx.xxx.xxx.xxx = 一些有问题的 IP 地址

我只是非常困惑这一切是如何运作的。我在网上读了很多,但它们都假设你知道所有这些嵌套的东西是如何运作的,然后我读到了“集合”,你可以在“集合”中放置一个类似于“超时”的标志。

我的最终结果是像往常一样简单地解析我的日志文件,找到违规者,阻止他们,但由于我正在重做所有事情,所以我想我会添加 24 小时/1 天的自动删除,因为我相信现在使用 nftables 比使用firewall-d 中的 fireall-cmd 更容易。

任何帮助,将不胜感激。

谢谢。

答案1

nftables 维基有一个几乎完整的例子:

例如,每个元素都有超时:

% nft add table inet myfilter
% nft add set inet myfilter myset {type ipv4_addr\; flags timeout\; }
% nft add element inet myfilter myset {10.0.0.1 timeout 10s }
% nft list ruleset
table inet myfilter {
  set myset {
      type ipv4_addr
      flags timeout
      elements = { 10.0.0.1 timeout 10s expires 8s}
  }
}

添加到集合定义flags timeout ;(以及可能正确的 shell 转义/引用)可使元素自动过期。

这里在添加元素时提供了超时:在元素之后立即声明,语法如下nft(8)

{添加 | 创建 | 删除 | 获取 } 元素 [family] 表集 {元素[, ...] }


元素 := 键表达式选项[:值表达式]
选项 :=[超时 TIMESPEC][到期 TIMESPEC] [注释字符串]
TIMESPEC := [numd][numh][numm][num[s]]

也可以有一个默认超时:当添加元素时未提供超时,则应用默认超时。此外flags timeout,在创建集合时必须给出默认超时值,如语法所示nft(8)

添加套装 [家庭] 餐桌套装
    { 类型类型 | typeof 表达式 ; [标志标志 ;][超时 超时;][gc-interval gc-interval ;] [elements = { element[, ...] } ;] [size size ;] [comment comment ;] [policy 'policy ;] [auto-merge ;] }
{删除|列表|刷新}设置[family]表集
列表集 [family]
删除集[family]表句柄句柄
{添加 | 删除} 元素 [family] 表集 { 元素[, ...] }

因此,OP 的说法并非如此:

nft add set inet filter jerk_ips { type ipv4_addr \; }

使用(此处添加引号以避免 shell 解释,从而删除多个\):

nft add 'set inet filter jerk_ips { type ipv4_addr ; flags timeout ; timeout 1d ; }'

获得 1 天的默认超时时间。仍可以根据需要添加一些具有不同超时时间的元素,如上文所示。

这里 1d = 24h = 1440m = 86400s

相关内容