监控 SFTP 活动的实用方案
一 日志与审计基线
sudo tail -f /var/log/secure 或 sudo tail -f /var/log/auth.log;过滤 SFTP 子系统:sudo grep 'sftp' /var/log/secure。Subsystem sftp internal-sftp -l INFO -f AUTHSubsystem sftp /usr/lib64/ssh/sftp-server -l INFO -f AUTHsudo systemctl restart sshd。sudo yum install audit -y && sudo systemctl enable --now auditd。sudo auditctl -w /var/log/secure -p wa -k sftp_logsudo auditctl -w /srv/sftp -p wa -k sftp_root(示例目录,按实际调整)sudo ausearch -k sftp_log 或 sudo ausearch -k sftp_root。二 网络层与实时连接监控
sudo tcpdump -i any port 22 -w sftp_traffic.pcap;后续用 Wireshark 打开 .pcap 文件进行细粒度分析。ss -tnp | grep :22 或 netstat -tnp | grep :22。iftop 或 nload(注意这类工具不解析 SFTP 协议内容,仅反映流量级别)。三 关键指标与告警规则示例
| 维度 | 采集方式 | 关键指标 | 建议阈值示例 | 告警动作 |
|---|---|---|---|---|
| 登录成功 | 系统日志(secure/auth.log) | 成功登录次数/分钟 | 突增超过基线 3σ | 记录并触发安全工单 |
| 登录失败 | 系统日志 | Failed password / Login incorrect | 连续 5 次失败 | 临时封禁来源 IP,通知安全团队 |
| 会话时长 | 系统日志 | Session opened/closed 间隔 | 单次会话异常 > 12 小时 | 标记异常会话并复核 |
| SFTP 子系统启动 | 系统日志 | subsystem request for sftp | 与登录成功事件成对出现 | 关联用户与来源 IP |
| 根目录变更 | auditd | 对 /srv/sftp 的 write/mkdir/unlink | 任意变更 | 立即告警并留存取证数据 |
| 日志完整性 | auditd | 对 /var/log/secure 的 write/truncate | 任意变更 | 触发紧急告警并保护现场 |
grep 'sftp.*username' /var/log/secure | wc -lgrep 'Failed password' /var/log/secure 或 grep 'Login incorrect' /var/log/auth.logsudo ausearch -k sftp_log 或 sudo ausearch -k sftp_root四 集中化与自动化实践
sftp-logs-*)并配置可视化面板与阈值告警。五 安全与合规要点