Centos

通過 sftp 列出以前的登錄資訊

  • February 25, 2016

你好 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

引用自:https://unix.stackexchange.com/questions/98403