Ssh

是否可以強制 SFTP 而不是允許 SCP 回退?

  • February 19, 2013

我有一個帶有 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. 我認為您需要的不僅僅是ForceCommandsshd 配置。

Subsystem       sftp    internal-sftp
Match group sftponly
        ChrootDirectory /pub/user/%u
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        PasswordAuthentication yes

希望您可以附加您的日誌記錄並且您離開了。

引用自:https://serverfault.com/questions/480325