私のプライベートサーバーにはSSH標準ユーザーアカウントがあり、sudoアクセス権があります(パスワードを介して)。
SSHログインに公開鍵を使用するため、ログイン時にアカウントのパスワードを入力する必要はありません。このユーザーがパスワードのないsudoアクセスで実行することを許可しても安全ですか?ただそして/またはapt-get update
コマンド?セキュリティの面から聞きたいです。apt-get upgrade
apt-get dist-upgrade
いいえ「壊れた/バグのあるアップデート」の観点から見てください。ログインしている人は自分だけで、更新によって問題が発生した場合はいつでもsudo(パスワードを使用)で問題を解決できます。
要点は、パスワードを入力しなくても、私のサーバーでタイムリーに更新を実行できることです。しかし、誰かがこのアカウントにアクセスしている場合は、その人が何もインストールできないようにしたいので、これら2つのコマンドに他の問題があるかどうかはわかりません。
これは私のファイルの正確な行ですsudoers
。
stephen ALL=(root) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade, /usr/bin/apt-get dist-upgrade
答え1
信頼性の低いユーザーが実行できるようにしてもapt-get update
かまいません。彼らができる最悪のことは、多くの帯域幅を消費し、いくつかのディスクスペースを埋めることです。
ユーザーが実行できるようにすると、apt-get upgrade
rootアクセス権が付与される可能性があります。一部のパッケージはユーザーに照会し、シェルエスケープを許可できます。たとえば、実行中の端末(または呼び出されるすべてのエントリ)へのアクセス権をapt-get upgrade
持つユーザーはプロファイルが更新dpkg -i
されたため、何をすべきかを尋ねられます。オプションの1つは次のとおりです。シェルを実行して状況を確認します。
コマンドをさらに制限する必要があります。
#!/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アクセス全体を持つユーザーに再起動時期を決定させます。
ただし、ユーザーはパッケージコンテンツを挿入できません。これを行うには、パッケージを配布するサーバーを制御する必要があり、さらにサーバーは、パッケージが署名されている場合はパッケージに署名する必要があります(これはすべての公式ソースに対応します)。これは、アップグレード時にシステムを制御する攻撃ベクトルとは何の関係もありません。
つまり...無人アップグレード、それがあなたが望むものなら。