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日志記錄”部分)。