X-CAD · 开源基础设施

FRP-SSH-Guard

通过连接限速、临时封禁和可管理的访问控制,保护 FRP 转发的 SSH 端口及公网服务器自身的 SSH 服务。

v0.0.6 · 现已发布 许可: MIT Linux · Debian / Ubuntu
FRP-SSH-Guard 在公网服务器上过滤连接,保护 FRP 隧道后的 SSH 服务。

为什么做它

X-CAD 运行在 FRP 隧道之后。公网 SSH 端口会持续遭遇自动化探测,一个转发的端口很容易变成服务器上最吵的门。我们希望有一个小而明确的守卫,部署在公网主机上,在滥用流量到达内网后端之前就把它拦住。

它做什么

FRP-SSH-Guard 为选定的端口添加 nftables 策略:

  • 按来源、按端口限制新建连接,并临时封禁来源。
  • 按端口设置共享限速,缓解分布式连接突发。
  • 支持 IPv4/IPv6 的 IP 与 CIDR 白名单/黑名单,可限定到指定端口。
  • 记录封禁历史,对反复出现的来源升级封禁时长。
  • 可选的本机 SSH 22 端口防护,通过服务器 sshd 日志检测失败认证和无效用户登录。
  • 在防护端口间共享封禁,或按端口独立封禁;支持永久或限时的手动封禁。
  • 可选地从公网主机 sshd 的成功登录中学习可信来源。
  • 显式启用、重启恢复,以及守卫表丢失后的自动恢复。

对于转发的 SSH,守卫观察新的 TCP SYN 数据包,无法获取加密隧道内的认证结果。本机 SSH 监测读取公网服务器自身的 sshd 日志,从不收集密码。它与 SSH 认证和其他防火墙控制配合使用。

从 v0.0.6 开始

从 v0.0.6 发布页 下载 Debian 安装包和校验文件。对于已经运行的守卫,安装修订 0.0.6-2 后会自动应用新版规则并刷新监控:

sudo apt install ./frp-ssh-guard_0.0.6.deb

无需额外 reload 或重启。首次安装或已停用的守卫仍需选择端口并完成初次启用。

可编辑设置与合并后的白名单、黑名单位于 ~/.frp-ssh-guard/。修改后先校验,再显式应用。本机 SSH 防护和按端口独立封禁均需主动开启;升级会保留自定义设置并导入已有封禁。迁移细节请参阅升级指南。

v0.0.6 现已发布。 新版本增加了升级自动生效、默认仅观察的慢速 SSH 探测、限制大小的本地告警、仅报告的子网聚集提示,以及更清晰的诊断。升级保留已接受的策略选择、待确认修改、已保存封禁的到期时间和定时任务安排;速率计数重置。阅读 v0.0.6 发布动态。

一次部署观测

运维者提供的一次部署快照(2026 年 10 月 13–17 日)记录:

  • 丢弃 3,206,432 个数据包,放行 967 个,占所提供计数器的 99.97%。
  • 到达后端的 SSH 连接从约 200 次/小时降到最近 60 分钟的 2 次。
  • 后端失败登录:使用前 6,442 次,最近 24 小时观测到 0 次。

这些数据来自一次具体部署,由运维者提供。具体部署版本和原始日志未经过独立验证。流量、配置和日志覆盖范围都会影响结果。

开源

FRP-SSH-Guard 采用 MIT 许可。Debian 安装包、源码、测试和中英文文档均可在 GitHub 获取。对应版本的验证记录列出了已测试平台及尚未覆盖的范围。