1. 配置SSH详细日志记录(基础审计)
Debian系统中,SFTP作为SSH的子服务,其活动日志主要由SSH服务记录。通过调整sshd_config文件可启用详细日志,便于后续审计。
sudo nano /etc/ssh/sshd_config。LogLevel VERBOSE:设置日志级别为VERBOSE(详细模式),记录登录尝试、文件传输、认证失败等关键事件;Subsystem sftp /usr/lib/openssh/sftp-server -l INFO:强制SFTP子系统记录INFO级别日志(可调整为DEBUG获取更详细信息,但会增加日志体积)。sudo systemctl restart sshd。/var/log/auth.log(Debian/Ubuntu系统),可通过tail -f /var/log/auth.log实时查看实时日志。2. 使用auditd监控系统调用(深度审计)
auditd是Linux内核级审计工具,可监控SFTP用户的文件访问、修改、删除等底层系统调用,提供更细粒度的审计能力。
sudo apt install auditd audispd-plugins(Debian系统)。/etc/audit/rules.d/sftp.rules,内容如下:-a exit,always -F arch=b64 -S openat -S open -S read -S write -S close_write -S close -k sftp
-a exit,always -F arch=b32 -S openat -S open -S read -S write -S close_write -S close -k sftp
上述规则监控所有与SFTP相关的文件操作(如打开、读取、写入、关闭),并标记为sftp关键字。sudo systemctl restart auditd。ausearch命令过滤SFTP相关事件,例如:
sudo ausearch -k sftp:查看所有SFTP标记的事件;sudo ausearch -k sftp | aureport -f:生成文件访问报告(显示被访问的文件路径)。3. 分析SFTP日志(识别异常行为)
日志审计的核心是通过分析日志发现潜在威胁,如暴力破解、未授权访问、异常文件传输等。
sudo apt install logwatch),配置/etc/logwatch/conf/services/ssh.conf中的LogFile指向/var/log/auth.log,即可定期接收报告。tail -f /var/log/auth.log实时查看最新日志,或通过journalctl -f -u sshd(systemd系统)监控SSH服务日志。unlink)、修改系统文件(如/etc/passwd)、访问敏感目录(如/root)。4. 结合fail2ban防范暴力破解
fail2ban通过监控日志中的失败尝试,自动封禁恶意IP地址,减少SFTP服务遭受的暴力破解攻击,间接提升审计数据的可信度。
sudo apt install fail2ban。/etc/fail2ban/jail.local,添加以下内容:[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 5 # 允许的最大失败次数
bantime = 3600 # 封禁时间(秒,此处为1小时)
sudo systemctl restart fail2ban。/var/log/fail2ban.log,确认是否有IP被封禁(如“Ban 192.168.1.100”)。5. 定期归档与保留日志
日志文件长期积累会占用磁盘空间,且旧日志可能被覆盖,因此需要配置日志轮转和归档策略。
logrotate管理日志,编辑/etc/logrotate.d/ssh文件(若不存在则创建),添加以下配置:/var/log/auth.log {
daily # 每天轮转
rotate 7 # 保留7天的日志
compress # 压缩旧日志(节省空间)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 640 root adm # 新日志文件的权限和所有者
}
sudo logrotate -vf /etc/logrotate.d/ssh(强制立即轮转并显示详细过程)。