CentOS系统中,SFTP日志的默认存储位置取决于系统版本和配置:
syslog-ng作为日志系统的系统中,SSH和SFTP日志通常记录在此文件。rsyslog时),认证相关日志(包括SFTP)会记录在此文件。systemd管理sshd服务,可通过journalctl命令直接查看SFTP相关日志(无需依赖文本文件)。实时查看最新日志
使用tail -f命令实时跟踪日志文件的新增条目,适用于快速监控SFTP活动:
sudo tail -f /var/log/secure # CentOS 6及以下或syslog-ng系统
sudo tail -f /var/log/auth.log # CentOS 7及以上或rsyslog系统
sudo tail -f /var/log/sftp.log # 自定义SFTP日志路径
若使用journalctl,命令如下:
sudo journalctl -u sshd.service -f # 实时查看sshd服务日志(含SFTP)
过滤SFTP相关日志
使用grep命令提取包含“sftp”关键字的日志条目,缩小关注范围:
sudo grep 'sftp' /var/log/secure # CentOS 6及以下或syslog-ng系统
sudo grep 'sftp' /var/log/auth.log # CentOS 7及以上或rsyslog系统
sudo grep 'sftp' /var/log/sftp.log # 自定义SFTP日志路径
sudo journalctl -u sshd.service | grep 'sftp' # 通过journalctl过滤
统计用户连接次数
使用awk和uniq -c组合,统计每个用户的SFTP连接次数(按用户分组排序):
sudo grep 'sftp' /var/log/auth.log | awk '{print $9}' | sort | uniq -c | sort -nr
(注:$9为日志中用户名所在的字段,需根据实际日志格式调整)
查找失败登录尝试
过滤“Failed password”(密码错误)或“Login incorrect”(登录失败)的记录,识别恶意登录行为:
sudo grep -E 'Failed password|Login incorrect' /var/log/auth.log | grep 'sftp'
监控文件上传/下载操作
提取包含“UPLOAD”(上传)或“DOWNLOAD”(下载)的日志条目,跟踪文件传输活动:
sudo grep -E 'UPLOAD|DOWNLOAD' /var/log/auth.log | grep 'sftp'
查看特定用户的SFTP活动
通过grep过滤特定用户的日志,例如查看用户“sftpuser”的所有SFTP操作:
sudo grep 'sftpuser' /var/log/auth.log
使用journalctl进行深度查询
journalctl支持按时间、用户、服务等多维度过滤,适合复杂场景:
sudo journalctl -u sshd.service --since="2025-10-01" --until="2025-10-05"
sudo journalctl -u sshd.service | grep 'sftpuser'
日志轮转与清理
使用logrotate工具定期压缩、删除旧日志,避免磁盘空间耗尽。默认情况下,CentOS的logrotate已配置了/var/log/secure和/var/log/auth.log的轮转规则(如每周轮转、保留4周)。可通过以下命令手动触发轮转:
sudo logrotate -vf /etc/logrotate.conf
使用ELK Stack进行可视化分析
若需要更强大的日志管理与可视化,可部署ELK(Elasticsearch+Logstash+Kibana)栈:
/etc/logstash/conf.d/sftp.conf,添加以下内容(提取SFTP日志并发送至Elasticsearch):input { file { path => "/var/log/secure" start_position => "beginning" } }
filter {
grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:log}" } }
if [program] == "sshd" and [log] =~ /sftp/ {
mutate { add_field => { "type" => "sftp" } }
}
}
output { elasticsearch { hosts => ["localhost:9200"] index => "sftp-logs-%{+YYYY.MM.dd}" } }
sudo systemctl start elasticsearch logstash kibana
打开浏览器访问http://服务器IP:5601,创建索引模式(如sftp-logs-*),即可通过Kibana dashboard分析SFTP日志(如连接趋势、用户行为、失败尝试等)。/var/log/secure、/var/log/auth.log)需要root权限,建议使用sudo执行命令。/etc/ssh/sshd_config文件,将LogLevel设置为VERBOSE(启用详细日志),然后重启sshd服务:sudo sed -i 's/^#LogLevel.*/LogLevel VERBOSE/' /etc/ssh/sshd_config
sudo systemctl restart sshd
此外,也可通过修改rsyslog配置(/etc/rsyslog.conf)将SFTP日志单独定向到/var/log/sftp.log(参考前述“配置SFTP日志记录”部分)。