Red Hat Training

A Red Hat training course is available for RHEL 8

7.8.2. 在一分钟内尝试超过十个进入的 TCP 连接的 IP 地址

nftables 框架可让管理员动态更新设置。本节解释了如何使用这个功能临时阻止在一分钟内建立十个 IPv4 TCP 连接的主机。五分钟后,nftables 会自动从拒绝列表中删除 IP 地址。

流程

  1. 使用 ip 地址系列创建 过滤器 表:

    # nft add table ip filter
  2. 过滤器 表中添加 输入 链:

    # nft add chain ip filter input { type filter hook input priority 0 \; }
  3. 过滤器 表中添加名为 denylist 的集合:

    # nft add set ip filter denylist { type ipv4_addr \; flags dynamic, timeout \; timeout 5m \; }

    这个命令为 IPv4 地址创建动态设置。timeout 5m 参数定义 nftables 在 5 分钟后自动删除条目。

  4. 添加一条规则,该规则会在一分钟内试图建立十个新的 TCP 连接的主机源 IP 地址添加到 denylist 集合中:

    # nft add rule ip filter input ip protocol tcp ct state new, untracked limit rate over 10/minute add @denylist { ip saddr }
  5. 添加一条规则,丢弃来自 denylist 集中 IP 地址的所有连接:

    # nft add rule ip filter input ip saddr @denylist drop