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日志记录”部分)。