限制使用者只能使用一個命令:“su -”
我已經設置了一個託管 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