SSH 安全
这页解决什么问题
SSH 安全 用来保护宿主机上的 SSH 登录入口。
它做的不是“把 SSH 代理进 fknock 网页登录”,而是:
- 读取系统里的 SSH 登录日志
- 识别成功登录和失败登录
- 按地区范围、失败次数和封锁时长生成防护策略
- 把封锁 IP 和允许网段同步到底层防火墙
适合这些场景:
- 你仍然需要从公网或固定外部网络访问 SSH
- SSH 端口经常被扫描或撞密码
- 你希望只允许特定地区或固定
CIDR触碰 SSH - 你希望 SSH 登录成功、失败和封锁事件能进入事件中心
开启入口
先进入:
系统设置 → 功能
打开:
SSH安全
开启后,左侧导航会出现:
SSH安全
需要注意:
- Docker 部署通常不显示这项能力
- 当前环境必须支持宿主机防火墙管理
- 系统需要能读取
journalctl或/var/log/auth.log
如果这些条件不满足,页面会显示不可用原因。
它依赖哪些日志
系统会优先读取:
journalctl
如果不可用,再尝试:
/var/log/auth.log/var/log/auth.log.1/var/log/auth.log.1.gz
能识别的典型 SSH 日志包括:
Accepted ... for ... from ...Failed ... for ... from ...Failed ... for invalid user ... from ...
所以这项功能主要服务于系统 SSH 登录,不是任意 TCP 服务的通用登录审计。
SSH 安全配置怎么理解
启用 SSH 安全
打开后,系统会开始监听 SSH 登录日志,并同步专用防火墙链。
关闭后:
- 会停止监听日志
- 会清理
FN-KNOCK-SSH相关防火墙规则 - 活动封锁记录会标记为已解除
统计窗口
表示失败登录要在多长时间内累计。
默认是:
10 分钟
失败阈值
表示同一个来源 IP 在统计窗口内失败多少次后会被封锁。
默认是:
5 次
封锁时长
表示命中规则后封锁多久。
默认是:
1 天
可选单位包括:
- 分钟
- 小时
- 天
允许地区
你可以按省份和城市添加允许范围。
这部分会依赖系统的 CIDR 地址库,最终会被解析成一组允许访问 SSH 的网段。
如果某个来源成功登录 SSH,但它不在允许范围内,系统也会把它封锁,原因会显示为:
地区不允许
所以第一次启用时建议先小范围验证,不要一上来配置得过窄。
自定义 CIDR
如果你知道固定出口网段,可以直接填写:
1.2.3.0/24
2408:8000::/24适合:
- 公司出口
- 家宽固定出口
- 自己的云服务器跳板机
- 明确可信的 IPv6 网段
页面里能看到什么
登录日志
展示最近的 SSH 登录记录,包括:
- 时间
- 成功或失败
- 用户名
- 来源 IP
- 认证方式
- SSH 端口
- 原始日志
- IP 归属地
你可以按成功 / 失败筛选,也可以搜索 IP、用户和归属地。
封锁列表
展示当前仍然有效的 SSH 封锁记录,包括:
- IP
- 封锁原因
- 失败次数
- 命中的端口
- 封锁时间
- 过期时间
- IP 归属地
你可以手动解除单个或多个封锁。
操作菜单
右上角的 操作 菜单里有两个关键动作:
同步防火墙:按当前配置重新下发允许 CIDR 和活动封锁 IP清空 SSH 防火墙:清理 SSH 专用防火墙链,并解除活动封锁记录
如果你调整了 SSH 端口、地区范围或怀疑规则没有及时生效,可以先执行一次 同步防火墙。
它和协议映射有什么区别
不要把 SSH 安全 和 协议映射 混成一件事。
SSH 安全 保护的是:
- 宿主机 SSH 登录入口
- 登录日志
- SSH 端口上的防火墙封锁
协议映射 处理的是:
- 在子域模式下额外暴露少量
TCP/UDP入口 - 例如 SSH、MySQL、Redis、DNS
如果你只是想把 SSH 作为一个非 Web 协议入口补充到子域模式里,看协议映射。
如果你想根据 SSH 登录失败、地区范围和封锁记录保护宿主机 SSH,看 SSH 安全。
和事件中心的关系
开启后,相关事件会进入:
事件中心
常见事件包括:
- SSH 登录成功
- SSH 登录失败
- SSH IP 被封锁
如果你希望这些事件推送到微信、飞书、Webhook、Telegram 等渠道,可以继续配置:
推荐的第一轮配置
建议先这样做:
- 确认自己有可用的 SSH 备用登录方式
- 打开
系统设置 → 功能 → SSH安全 - 进入
SSH安全页面 - 保持默认
10 分钟 / 5 次 / 1 天 - 先添加你自己常用出口所在地区或固定
CIDR - 保存后执行一次
同步防火墙 - 从可信外部网络测试一次 SSH 登录
- 再观察登录日志和封锁列表
不要第一次就把允许地区收得过窄,尤其是你还没有确认当前公网出口归属地是否准确时。
常见排查思路
页面提示当前环境不可用
优先检查:
- 是否是 Docker 部署
- 当前环境是否支持宿主机防火墙管理
- 是否存在
journalctl或/var/log/auth.log
自己突然无法 SSH
优先检查:
- 当前出口 IP 是否在允许地区或自定义
CIDR内 - 是否因为失败次数达到阈值被封锁
- 是否可以从局域网或备用入口进入后台解除封锁
- 必要时在页面里执行
清空 SSH 防火墙
归属地不准确
SSH 安全里的地区判断依赖 CIDR 地址库 和 IP 归属地能力。
如果你需要切换官方在线服务或自部署服务,先看:
