通過 sftp 列出以前的登錄資訊
你好 stackexchange 的人們,
我在嘗試找到特定日誌文件的位置時遇到了一點困難,我希望這裡有人可以幫助我。
我要做的是在我們的 sftp 伺服器上列出特定使用者的登錄日期/時間。從網上研究我到目前為止想出了
cat /var/log/auth.log | grep "username"
其中列出了一些登錄名,但沒有我想要的那麼遠。我也試過
last -n 1000 | grep "username"
但不幸的是,這似乎只適用於 ssh 訪問伺服器而不是 sftp(據我所知)誰能想到列出來自 sftp 使用者的特定使用者的登錄名的任何其他方法?
非常感謝提前,黑暗。注意,如果有任何幫助,使用者將被 chroot 到他們自己的主目錄。
編輯: 我一開始沒有註意到一些存檔文件,這些文件給了我長達一個月的登錄時間,這更好。新問題:預設情況下,CentO 會保留歸檔的身份驗證日誌多長時間?如果超過 1 個月,舊檔案會移到哪裡?我檢查了 logrotate.conf 並沒有提及,
/var/log/auth.log
所以我假設它使用的是預設值。編輯:編輯 我想我可能已經找到了我正在尋找的答案,但無論如何都會發布這個,以防萬一它對其他人有任何用處。
logrotate 腳本是
/etc/logrotate.d/rsyslog
. 預設情況下,這些日誌每週輪換一次,最多可儲存 4 週的日誌。我還沒有將其作為答案的聲譽,但如果管理員看到這個,請隨時關閉它。
最美好的祝愿~黑暗
在 CentOS 6 上,
/var/log/secure
包含來自 sshd 的輸出,它啟動 sftp 子伺服器。預設情況下,您將看到類似於以下的消息,但僅此而已:Feb 25 12:34:56 server sshd[1234]: Accepted password for user from 1.2.3.4 port 12345 ssh2 Feb 25 12:34:56 server sshd[1234]: pam_unix(sshd:session): session opened for user user by (uid=0) Feb 25 12:34:57 server sshd[1234]: subsystem request for sftp
如果您想更清楚地了解 sftp 操作,例如已傳輸哪些文件,請修改以下行
/etc/ssh/sshd_config
:Subsystem sftp /usr/libexec/openssh/sftp-server
成為
Subsystem sftp /usr/libexec/openssh/sftp-server -f AUTHPRIV -l INFO
然後重啟sshd:
# service sshd restart
然後,您將擁有預設日誌以及如下日誌:
Feb 25 12:34:56 server sftp-server[1234]: session opened for local user user from 1.2.3.4 Feb 25 12:34:56 server sftp-server[1234]: opendir "/home/user/" Feb 25 12:34:56 server sftp-server[1234]: closedir "/home/user/" Feb 25 12:34:56 server sftp-server[1234]: open "/home/user/test" flags READ mode 0666 Feb 25 12:34:56 server sftp-server[1234]: close "/home/user/test" bytes read 1234 written 0 Feb 25 12:34:56 server sftp-server[1234]: session closed for local user user from 1.2.3.4