是否可以強制 SFTP 而不是允許 SCP 回退?
我有一個帶有 openssh OpenSSH_4.3p2 的 Red Hat 5.4 伺服器,並且一直在嘗試在我的伺服器中設置 scp/sftp 日誌,但我遇到了一些問題。
我按照其他文章中的說明進行操作。如果使用者選擇使用 pscp 或 SFTP 客戶端(例如cyberduck、filezilla、winscp 等)傳輸文件,這些功能非常有用。在這種情況下,我能夠知道導航的目錄樹。
但是,如果使用者選擇執行 rsync(使用 scp 作為協議)或者如果他們顯式呼叫 scp 命令,則唯一記錄的內容是登錄/註銷事件。導航以傳輸文件的實際樹不會顯示在日誌跟踪中。
有沒有辦法在允許 sftp 的同時禁用 scp ?或者有沒有辦法強制 scp 命令表現為 sftp ?
也許這個問題在最近的 openssh 埠中不存在。但是,由於 Red Hat 不會為我的 5.4 作業系統版本發布進一步的更新(而且我們不想升級伺服器),所以我堅持我所擁有的。
有什麼建議麼 ?
我不確定是否記錄 SCP。我對此進行了調查。
scp
所做的只是scp
以稍微不同的模式在另一端呼叫。sshd
應該能夠記錄它執行的內容。從程式碼來看,它看起來sshd
需要LogLevel=DEBUG
編寫 exec,但在 DEBUG 或任何更高級別(6.1p1)上並沒有為我輸出。不幸的是,一旦sshd
執行了某些操作,正在執行的二進製文件就可以在下面做它想做的任何事情,所以如果二進製文件也實現了日誌記錄會有所幫助。沒有真正的登錄,scp
因此需要某種更新檔。這立即使我的大腦開始編寫包裝器
scp
以至少獲取一些資訊。mv /usr/bin/scp /usr/bin/scp.ori; touch /usr/bin/scp; chmod 755 /usr/bin/scp;
然後將以下內容放入
/usr/bin/scp
#!/bin/sh logger -i -p auth.info "scp ran with [$*]" /usr/bin/scp.ori "$@"
不過,該腳本會被發行版抹去,而且有點狡猾。您只真正看到 scp 命令的一側,可能有點簡短(例如
scp -r user@host:/home/user/ ./
在-r -f /home/matt/
主機上)還值得注意的是,如果人們具有 shell 訪問權限,他們可以複製任何他們想要的內容,而無需使用 scp 或 sftp。
<結束編輯>
可以強制
Subsytem
登錄。以下是sftponly
我希望只能 sftp 到特定 chroot 位置的組成員,以便他們的使用者擁有/usr/sbin/nologin
. 我認為您需要的不僅僅是ForceCommand
sshd 配置。Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /pub/user/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp PasswordAuthentication yes
希望您可以附加您的日誌記錄並且您離開了。