首页
/ 使用nftables防御SSH暴力攻击(以ssh-audit项目为例)

使用nftables防御SSH暴力攻击(以ssh-audit项目为例)

2025-06-19 05:56:29作者:范垣楠Rhoda

在网络安全领域,SSH服务一直是攻击者的重点目标。针对SSH的暴力攻击(如暴力尝试攻击)需要有效的防御措施。本文将介绍如何利用nftables这一现代防火墙框架来构建SSH防护机制。

nftables简介

nftables是Linux内核中的新一代数据包过滤框架,自Debian 10 Buster起已成为默认防火墙解决方案。相比传统的iptables,nftables具有更简洁的语法和更强大的功能。

SSH防护规则实现

以下是一个完整的nftables规则集,专门用于防御SSH暴力攻击:

#!/usr/sbin/nft -f

flush ruleset

table ip filter {
      
      set attackers_ip4 {
             type ipv4_addr
             timeout 10s
             flags dynamic
      }

      chain input {
             # 默认丢弃所有输入流量,除非被以下规则接受
             type filter hook input priority 0; policy drop;

             # 记录所有SSH连接尝试
             tcp dport 22 log prefix 暴力尝试:  flags all

             # 将超过速率限制的IP加入攻击者集合
             ct state new tcp dport 22 update @attackers_ip4 { ip saddr limit rate over 1/second burst 25 packets }

             # 丢弃来自攻击者集合中IP的所有数据包
             ip saddr @attackers_ip4 drop

             # 接受其他正常的SSH连接
             tcp dport 22 accept

             # 接受已建立的连接
             ct state established, related accept

             # 接受环回接口的所有流量
             iif lo accept
      }
}

规则解析

  1. 基础防御策略:采用"默认拒绝"的安全模型,只允许明确匹配规则的流量通过。

  2. 攻击检测机制

    • 记录所有SSH连接尝试(端口22)
    • 使用动态集合attackers_ip4跟踪攻击者IP
    • 设置速率限制为1次/秒,突发25个包
  3. 攻击响应

    • 超过限制的IP会被自动加入攻击者集合
    • 来自这些IP的所有流量将被丢弃
    • 攻击者IP会在10秒后自动从集合中移除
  4. 正常流量处理

    • 允许合法的SSH连接
    • 保持已建立连接不受影响
    • 确保本地环回通信正常

性能考量

在实际部署中,25个包的突发值(burst)是经过测试确定的最低值,既能有效防御攻击,又不会影响正常SSH连接。管理员可以根据具体网络环境调整此参数。

与传统iptables方案的对比

相比传统iptables方案,nftables实现具有以下优势:

  • 语法更简洁直观
  • 规则执行效率更高
  • 支持动态集合和超时机制
  • 更易于维护和管理

部署建议

  1. 将规则保存为/etc/nftables.conf
  2. 启用nftables服务:systemctl enable --now nftables
  3. 定期检查日志,监控攻击情况
  4. 根据实际流量模式调整速率限制参数

通过部署这套nftables规则,可以有效防御针对SSH服务的暴力攻击,同时保证合法用户的正常访问不受影响。

登录后查看全文
热门项目推荐
相关项目推荐