Linux

限制使用者只能使用一個命令:“su -”

  • April 5, 2018

我已經設置了一個託管 Play 的 Web 伺服器!框架應用程序,伺服器是 Amazon Linux EC2。

如果您不熟悉 Amazon Linux,預設情況下有一個 root 使用者和一個具有 sudo 權限的 ec2-user。要使用密鑰訪問您作為 ec2 使用者 ssh 的伺服器,密碼將被禁用。

我希望這個應用程序盡可能安全,而這個設置對我來說似乎不安全;如果有人能夠獲得 ssh 密鑰,他們將擁有對機器的 root 訪問權限。

為了強化伺服器,我添加了一個新使用者“Play”。我從 Play 使用者主文件夾儲存和執行應用程序。然後我從 ec2-user 中刪除了 sudo 命令,並為 root 添加了密碼。

所以現在我以沒有 sudo 權限的 ec2 使用者身份通過 ssh 登錄,然後切換到 root/Play 使用者進行任何更改或在伺服器上工作。

這似乎是一個相當安全的解決方案,但是我想更進一步:我想將我用來以 (ec2-user) 身份登錄的使用者限制為只有 1 個命令:“su -”。這就是我將使用此使用者的全部內容:切換到 root。

作為參考,這些是我為此設置執行的命令:

sudo su -

為root添加密碼:

passwd

添加播放使用者:

sudo adduser Play

從 sudoers 中刪除 ec2-user

cd /etc/sudoers.d
nano cloud-init

刪除 ec2-user 並將文件更新到:

Play    ALL= NOPASSWD: ALL
# User rules for ec2-user
Play    ALL=(ALL) NOPASSWD:ALL

提前感謝您的幫助/建議!

刪除對除 , 以外的其他命令的訪問su不會本質上使您的系統更安全。

首先,如果您將使用者分配給已知的 shell,您將無法阻止內部命令的執行,除了rbash之類的,但 rbash 本身更寬鬆一些,並允許使用者執行一些命令。如果你能與之和平相處,你可以使用它。

另一個不太安全但可行的解決方案是將使用者的預設 shell 定義為腳本,並且該腳本中包含su -和命令,除了擷取像orexit之類的中斷序列之外沒有其他任何東西。這稱為強制介面。您還需要將此腳本及其完整路徑放在. 由於它是一個腳本,因此它具有隨之而來的所有安全後果,無論是現在還是未來。ctrl-c``ctrl-z``/etc/shells

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