关键在于识别异常行为而非记录所有登录,需聚焦时间、来源、身份、行为模式四维度,通过日志分析、基线建模与上下文告警实现ssh和rdp的统一异常监控与响应。

监控并报警异常的远程登录尝试,关键不是“看到所有登录”,而是“识别出不合常理的行为”。SSH 和 RDP 虽然协议不同、系统环境不同(Linux vs Windows),但监控逻辑高度一致:聚焦时间、来源、身份、行为模式这四个维度。下面分两块说清楚怎么做,不绕弯、不堆术语。
SSH 异常登录监控与告警(Linux 服务器)
核心工具链是 auditd + /var/log/secure(或 journalctl)+ Zabbix/自建脚本 + 通知通道。重点不是记录每次登录,而是筛出高风险信号:
-
失败爆破识别:用
journalctl -u sshd --since "5 minutes ago" | grep "Failed password"或解析/var/log/secure,统计同一 IP 在短时间(如 3 分钟)内失败 ≥8 次,立即触发告警; -
非常规时间成功登录:比如凌晨 2–4 点 root 或 sudo 用户登录,可用 awk 匹配日志中时间字段和
Accepted关键字,例如:awk '/Accepted.*from/ && $3 ~ /^(0[2-4])$/ {print}' /var/log/secure; -
非白名单 IP 登录成功:提前维护一个可信 IP 列表(如公司出口、家庭宽带),对每次
Accepted日志检查来源 IP 是否在列表中,不在就报; -
特权操作联动审计:auditd 记录
su、sudo、修改/etc/sudoers等动作,一旦发现登录后立刻执行高危命令,说明可能已被入侵,需升级告警级别。
RDP 异常登录监控与告警(Windows 服务器)
依赖 Windows 安全事件日志(Event ID 4624 表示成功登录,4625 表示失败),配合 Microsoft Sentinel 或本地 SIEM 工具做基线建模:
- 陌生 IP 登录:检查登录 IP 是否在近 30 天内从未出现过(Sentinel 的“异常 IP”检测即基于此);
- 跨地域跳跃登录:比如上一次登录来自北京,这次来自巴西圣保罗,且间隔仅几分钟,极可能是凭证被盗用;
- 新用户首次从陌生位置登录:某个平时只在内网登录的账号,突然从境外某 IDC IP 登录,即使密码正确也属高风险;
- 高频失败后成功:连续多次 4625(失败)紧接一个 4624(成功),大概率是暴力破解得手,必须秒级告警并自动封 IP。
统一告警能力建设要点
无论 SSH 还是 RDP,告警不能只发一条“有异常”,要带上下文、可操作:
- 告警内容必须含三项硬信息:发生时间(精确到秒)、来源 IP(附 ASN 和地理粗略定位)、目标账户名;
- 区分告警等级:单纯失败扫描(中低风险)→ 只推微信/钉钉;成功登录但 IP 异常(高风险)→ 同时电话+弹窗+自动加防火墙规则;
- 避免误报的关键是加时间窗口和基线:比如 Sentinel 需要至少 30 天历史数据建模;Zabbix 告警项建议设置为“5 分钟内累计触发 ≥3 次”而非单次命中;
- 手机端应急闭环:用微信小程序或钉钉机器人接收告警后,能直接点击执行“封禁该 IP”或“临时禁用该账户”,不用非得开电脑——哪吒面板、Prometheus Alertmanager + Webhook 都支持这类交互。
基础加固是监控有效的前提
再好的监控也救不了裸奔的配置。以下几条必须先落实,否则告警会变成“每天提醒你被扫了100次”:
- SSH:禁用 root 远程密码登录(
PermitRootLogin no),强制密钥认证;改默认端口(非必须但有效降低噪音);启用MaxAuthTries 3; - RDP:关闭公网直连(通过跳板机或 Zero Trust 网关访问);启用网络级身份验证(NLA);限制允许远程桌面的用户组;
- 通用:所有服务器开启自动安全更新;关键日志(
/var/log/secure、Windows Security Log)权限设为仅 root/Administrator 可读; - 监控自身也要被监控:哪吒、Zabbix、Sentinel 的服务状态、数据上报延迟、磁盘写满等,本身就得有告警,否则“监控失明”比没监控更危险。










