跳到正文

SSH 安全

SSH 安全根据宿主机登录记录、失败次数、地区和 CIDR 规则维护封锁列表。它保护的是宿主机 SSH 入口,不是 fn-knock 的 HTTP 认证,也不替代 SSH 密钥、禁用弱密码和系统更新。

该功能需要读取宿主机 SSH 日志并管理防火墙。当前只有飞牛 fnOS 原生 FPK 提供完整能力;OpenWrt 被运行时明确禁用,Docker、通用 Linux、群晖 DSM 7 SPK 和 Windows x86_64 也不提供完整能力。页面显示“当前环境不可用”时,应在宿主机或上级防火墙配置 SSH 防护。

启用前保留一个可用的本地控制台或可信网络回退方式,避免把当前管理出口封锁。

功能开关与页面入口

  1. 系统设置 → 功能 启用“SSH 安全”菜单。
  2. 打开 SSH 安全,确认摘要中的可用状态、检测到的 SSH 端口、允许 CIDR 数量和活动封锁数量。
  3. 展开“SSH 安全配置”并保存规则;保存成功后规则会立即应用。SSH 端口或宿主机防火墙状态变化时,再执行“同步防火墙”重建规则。

功能菜单开关控制页面和后台功能是否启用;配置卡片中的“启用 SSH 安全”决定是否按日志、地区和阈值执行防护。保存配置时,允许 CIDR 和活动封锁会立即下发到检测到的 SSH 端口;“同步防火墙”用于在端口、规则链或其他防火墙状态变化后重新下发。

配置字段

字段默认值与范围作用
启用 SSH 安全默认关闭监听 SSH 登录日志,并按阈值或来源范围维护封锁
窗口时间默认 10 分钟,1~1440 分钟统计同一来源在该时间窗内的失败次数
失败阈值默认 5 次,1~1000 次达到阈值后加入封锁列表
封锁时长默认 1 天,数值 1~365单位可选分钟、小时、天或月;一个月按 30 天换算,到期后自动解除
允许访问 SSH 的地区默认空空时不限制地区;非空时只允许所选地区、自定义 CIDR 和内置本地来源
自定义 CIDR默认空,每行一条补充非标准 VPN、办公公网出口或其他固定 IPv4/IPv6 网段

地区可按省、市和运营商选择。只有连接的 CIDR 地址库提供运营商数据时,才能按电信、联通或移动细分 CIDR。无法加载地区列表时,不要提交未经核对的限制范围,可先只使用固定 CIDR。

自定义 CIDR 会在页面中校验;存在格式错误时不能保存。添加地区限制前,应先把当前可信出口和备用管理网络加入自定义 CIDR。

内置本地来源包括 loopback、RFC 1918 私网、IPv4 链路本地、Tailscale 使用的 100.64.0.0/10,以及 IPv6 ULA/链路本地地址。这些来源不受地区或失败次数封锁;Tailscale 访问仍应由 Tailnet ACL 控制。Headscale、WireGuard、ZeroTier 等若使用其他地址池,需将实际来源网段加入自定义 CIDR。

同步和清空防火墙

“同步防火墙”会重新检测 SSH 端口,并把当前允许 CIDR 和活动封锁写入 fn-knock 管理的防火墙规则。成功提示会显示:

  • 下发的允许 CIDR 数量;
  • 重新同步的活动封锁数量;
  • 检测到并应用规则的 SSH 端口。

SSH 服务修改端口、系统防火墙被重载或规则状态与页面不一致时,应再次执行同步。

“清空 SSH 防火墙”会删除 FN-KNOCK-SSH 规则链,并把当前活动封锁标记为已解除。已保存的地区、CIDR、阈值和时长配置不会删除;后续再次同步时,会按保存配置重新建立规则。

登录日志

“登录日志”标签支持搜索 IP、用户或原始日志,并可按全部、成功、失败筛选。每条记录包括:

  • 时间和登录结果;
  • 用户名,以及失败时的无效用户标记;
  • 来源 IP 和归属地;
  • 认证方式与 SSH 端口;
  • 供搜索和排障使用的原始日志信息。

如果页面长期没有记录,先确认部署平台支持此功能、SSH 服务正在写入系统日志,并检查 fn-knock 服务是否有读取日志的权限。

封锁列表

“封锁列表”显示来源 IP、归属地、封锁时间、到期时间、原因、失败次数与当时阈值。封锁原因包括:

  • 来源不在允许地区或自定义 CIDR 中;
  • 窗口内登录失败次数达到阈值。

页面支持搜索、分页、单个解除和批量解除。解除操作会将 IP 从本功能管理的防火墙规则中移除;如果同一来源之后再次违反规则,仍会重新被封锁。

推荐配置顺序

  1. 保持地区限制为空,只设置较宽松的失败阈值和封锁时长。
  2. 保存后,从可信网络和测试网络分别验证 SSH 登录。
  3. 查看登录日志是否正确识别用户、来源 IP、认证方式和端口。
  4. 将固定 VPN、办公出口和备用网络加入自定义 CIDR。
  5. 再添加地区限制并保存,从允许与不允许的来源各验证一次。
  6. 确认封锁、到期解除、手动解除和重新触发都符合预期。

地区和 CIDR 只能辅助判断。移动网络、企业出口和 VPN 的归属可能变化;对管理入口,SSH key、禁用口令登录、最小允许 CIDR、独立 VPN 通道和上级防火墙限制更可靠。

常见问题

保存后规则状态与页面不一致

执行“同步防火墙”,并核对成功提示中的 SSH 端口。若宿主机有其他防火墙管理器覆盖规则,应在其重载后重新同步。

管理出口被误封

优先从本地控制台进入系统,在封锁列表解除对应 IP;无法进入页面时,可清理 FN-KNOCK-SSH 规则链或停用本功能,再补充可信 CIDR 后重新同步。

地区与实际位置不一致

检查 IP 归属地服务 和 CIDR 地址库版本。代理、VPN、CGNAT 和运营商地址调度都可能使来源归属与实际位置不同。

QQ群:1081609274