1. 概述与目标
1) 目标:针对台湾地域VPS的SSH/远程登录进行审计与异常检测。
2) 范围:包含VPS主机、域名访问、CDN回源与DDoS流量特征分析。
3) 要求:保证审计日志完整性、可追溯性与实时告警能力。
4) 指标示例:5次失败/60s触发警报,单IP并发连接>100视为异常。
5) 输出:可视化报表、封禁策略与告警通知(邮件/SMS/Slack)。
2. 日志来源与格式
1) 系统日志:/var/log/auth.log 或 /var/log/secure,记录 sshd 登录事件。
2) 应用与面板:cPanel/ISPConfig/宝塔面板的登录记录。
3) CDN/负载均衡:回源IP、X-Forwarded-For 字段需保留。
4) 网络层:防火墙 conntrack、iptables/nftables 日志与流量采样。
5) 格式示例:Apr 12 10:12:34 vps sshd[1234]: Failed password for invalid user root from 203.74.115.23 port 34567 ssh2。
3. 审计规则与关键字段
1) 关键字段:时间戳(ISO8601)、源IP、目标端口、用户名、结果(成功/失败)、User-Agent。
2) 基本规则:同一IP 5 次失败/60s => 可疑;同一账号在短时间内跨国登录 => 异常。
3) 地理规则:两个登录事件在10分钟内来自相距>1000km 的IP,判定为“不可能移动”。
4) 带宽/连接阈值:突增流量超过基线3倍且 SYN 包占比>60% 视为可能DDoS。
5) 合规记录:保留最少90天审计日志,敏感操作需记录操作ID与操作者。
4. 异常检测算法与演示
1) 规则引擎:基于Fail2Ban、Suricata 及自定义ELK Watcher规则。
2) 统计检测:滑动窗口计数器(60s内失败数)示例阈值=5。
3) 行为检测:基于序列模式识别的SSH暴力破解特征。
4) 异常示例:检测到IP 203.74.115.23 在1分钟内10次失败,触发封禁。
5) 数据展示(示例表格):
| 源IP | 首次时间 | 失败次数 | 国家 | 动作 |
| 203.74.115.23 | 2026-04-12 10:12:34 | 10 | CN | iptables DROP 24h |
| 45.77.88.101 | 2026-04-12 10:15:20 | 2 | TW | 观察 |
5. 应急响应与防护措施
1) 实时封禁:Fail2Ban 规则(maxretry=5, findtime=60, bantime=86400)。
2) 网络防护:启用 tcp_syn_cookies、限制 conntrack_max,关闭不必要端口与服务。
3) CDN 策略:将网站接入CDN(如Cloudflare)启用WAF与速率限制,吸收DDoS。
4) 黑洞与告警:BGP Blackhole 与 ISP 合作,流量超阈值自动触发黑洞。
5) 记录保存:将日志集中到ELK/EFK集群,设置索引生命周期管理(logstash->elasticsearch->kibana)。
6. 真实案例与服务器配置举例
1) 案例描述:某台湾VPS在夜间遭受SSH暴力破解,单IP短时内产生500个连接尝试。
2) 措施:通过Fail2Ban与iptables阻断,绑定Cloudflare后源站攻击流量下降85%。
3) VPS配置示例:2 vCPU / 4GB RAM / 80GB SSD / 带宽1Gbps,Debian 11,SSH端口22。
4) Fail2Ban 配置示例:/etc/fail2ban/jail.d/ssh.conf 包含 maxretry=5, bantime=86400。
5) 日志留存示例:每天rotate后压缩,保留90天,异地备份到对象存储(S3兼容)。
来源:日志分析台湾vps云服务器登录的审计记录与异常访问检测方法