Security

對於 apt-get updateapt-get upgrade 為我的 ssh 使用者提供無密碼 sudo 是否安全?

  • May 24, 2015

我的個人伺服器上有一個 SSH 標準使用者帳戶,它具有 sudo 訪問權限(通過其密碼)。

我使用公鑰 ssh,因此無需輸入帳戶密碼即可登錄。允許此使用者無密碼 sudo 訪問apt-get update執行and apt-get upgrade(或)命令對我來說是否安全apt-get dist-upgrade?我是從安全的角度來詢問,而不是從“損壞/錯誤更新”的角度來詢問。我是唯一一個登錄的人,如果我通過更新破壞了某些東西,我總是可以 sudo(使用密碼)來修復問題。

要點是能夠在我的伺服器上執行及時更新,而無需輸入密碼。但是,如果有人確實可以訪問此帳戶,我不希望他們能夠安裝任何東西,而且我不知道這兩個命令是否還有其他問題。

這是我sudoers文件中的確切行:

stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade

允許不太受信任的使用者執行apt-get update是可以的。他們能做的最糟糕的事情是消耗大量頻寬並填滿一些磁碟空間,而且他們還有很多其他方法可以做到這一點,除非你採取了嚴格的措施來防止這種情況發生。

允許使用者執行apt-get upgrade可能會授予他們 root 訪問權限。一些包查詢使用者並可能允許 shell 轉義;例如,有權訪問apt-get upgrade(或任何dpkg -i呼叫)正在執行的終端的使用者可能會收到提示,如果配置文件已更新,該怎麼做,其中一個選項是執行 shell 來檢查情況。

您需要進一步限制命令:

#!/bin/sh
set -ex
exec </dev/null >"/var/log/automatic-apt-upgrade-$(date +%Y%m%d-%H%M%S)-$SUDO_USER.log" 2>&1
apt-get --assume-no upgrade

這不應該讓使用者成為 root 使用者,因為他們無法與包管理器互動。由於升級有時會破壞系統,並且只有這些權限的使用者無法修復任何內容,因此只能在穩定版本中完成,只有安全更新待定。如果是核心更新,讓具有完全 root 訪問權限的使用者決定何時觸發重啟。

順便說一句,使用者將無法注入包內容——為此,他們需要控制分發包的伺服器,並且如果包已簽名,則除了伺服器對包進行簽名(這是所有官方消息來源的情況)。對於在升級時控制機器的攻擊向量來說,這無關緊要。

說了這麼多……如果你想要的話,請使用unattended-upgrades 。

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