SSH 安全
SSH 安全根据宿主机登录记录、失败次数、地区和 CIDR 规则维护封锁列表。它保护的是宿主机 SSH 入口,不是 fn-knock 的 HTTP 认证,也不替代 SSH 密钥、禁用弱密码和系统更新。
该功能需要读取宿主机 SSH 日志并管理防火墙。当前只有飞牛 fnOS 原生 FPK 提供完整能力;OpenWrt 被运行时明确禁用,Docker、通用 Linux、群晖 DSM 7 SPK 和 Windows x86_64 也不提供完整能力。页面显示“当前环境不可用”时,应在宿主机或上级防火墙配置 SSH 防护。
启用前保留一个可用的本地控制台或可信网络回退方式,避免把当前管理出口封锁。
功能开关与页面入口
- 在
系统设置 → 功能启用“SSH 安全”菜单。 - 打开
SSH 安全,确认摘要中的可用状态、检测到的 SSH 端口、允许 CIDR 数量和活动封锁数量。 - 展开“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 从本功能管理的防火墙规则中移除;如果同一来源之后再次违反规则,仍会重新被封锁。
推荐配置顺序
- 保持地区限制为空,只设置较宽松的失败阈值和封锁时长。
- 保存后,从可信网络和测试网络分别验证 SSH 登录。
- 查看登录日志是否正确识别用户、来源 IP、认证方式和端口。
- 将固定 VPN、办公出口和备用网络加入自定义 CIDR。
- 再添加地区限制并保存,从允许与不允许的来源各验证一次。
- 确认封锁、到期解除、手动解除和重新触发都符合预期。
地区和 CIDR 只能辅助判断。移动网络、企业出口和 VPN 的归属可能变化;对管理入口,SSH key、禁用口令登录、最小允许 CIDR、独立 VPN 通道和上级防火墙限制更可靠。
常见问题
保存后规则状态与页面不一致
执行“同步防火墙”,并核对成功提示中的 SSH 端口。若宿主机有其他防火墙管理器覆盖规则,应在其重载后重新同步。
管理出口被误封
优先从本地控制台进入系统,在封锁列表解除对应 IP;无法进入页面时,可清理 FN-KNOCK-SSH 规则链或停用本功能,再补充可信 CIDR 后重新同步。
地区与实际位置不一致
检查 IP 归属地服务 和 CIDR 地址库版本。代理、VPN、CGNAT 和运营商地址调度都可能使来源归属与实际位置不同。
