6

爲了將env變量傳遞給ssh shell,我已經閱讀了很多關於使用PermitUserEnvironment和文件~/.ssh/environment的文章。官方sshd docs和其他一些資源暗示了這樣做的一些安全風險。ssh中許可用戶環境的安全風險

Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD. 

激活PermitUserEnvironment可能存在的安全問題是什麼?我期待在這些環境變量中保存數據庫連接細節,這是可取的嗎?

感謝

回答

3

這對於您通過使用自定義外殼限制在某種方式的用戶情況 - 如果用戶能夠設置LD_PRELOAD那麼他們可以執行的代碼作爲其在遠程計算機上的用戶通過攔截標準圖書館電話。

這可能是一個簡單的例子,如果您通過將其shell設置爲動態鏈接的/ bin/false來禁用SFTP專用用戶的登錄 - 如果他們能夠修改〜/ .ssh/environment或〜/ .ssh/authorized_keys,那麼他們可以添加LD_PRELOAD = nefarious.so

+0

因此,它對常規shell登錄沒有影響,我給用戶定期的Bash帳戶? (沒有sudo) –

+1

正確,這只是一個問題,如果你想限制他們的shell。如果您已經相信他們執行任意代碼,那麼讓他們在登錄時設置LD_PRELOAD不是安全問題 – Peter