web-dev-qa-db-ja.com

SSHキーを使用するときにSudoアクセスを許可する最良の方法

おそらく簡単な質問ですが、実際のベストプラクティスを見つけることができないようです。少数のサーバーを管理していますが、pwsafeでパスワードを追跡することにうんざりしています。私はパスワードではなくSSHキーを使用して認証を実装することを検討してきましたが、その場合にユーザーにSudo権限を実装する最良の方法について懸念があります。

多くの人が/ etc/sudoersを変更して必要なユーザーをNOPASSWDに設定していることを知っています。しかし、ユーザーにパスワードを与える人々についての言及は見当たらないので、それを行うのは難しいです。私のボックスが非特権ユーザーとして所有されている場合は、理論上は、NOPASSWDのユーザーにすばやく「suユーザー」が参加するだけで済みます。さらに悪いことに、物理的なアクセスと私のユーザー名を知っている人。

先に進んでそれらのアカウントにパスワードを設定するのがベストプラクティスですか、それともローカルログインを禁止する、またはパスワードを設定してそれを捨てる/使用しないなど、他のメカニズムが使用されていますか?

8
z0dSki

NOPASSWDオプションを使用すると、パスワードを入力しなくても、SudoプログラムをSudoユーザーが実行できます。アカウントがパスワードなしであることを意味するものではありません。

su youruserを実行する他のユーザーは、youruserのパスワードを入力する必要があります。ただし、youruserとして(物理アクセスまたはSSH経由で)ログインしている場合は、Sudo somecommandを実行するときにパスワードを入力する必要はありません。

8
Lekensteyn

彼の回答で述べた@Lekensteynのように、/etc/sudoersファイルのNOPASSWDディレクティブは、Sudoコマンドを実行するときにユーザーがパスワードを入力する必要をなくすだけです。

これは、ユーザーがパスワードまたはsshキーを使用してボックスにsshを入力するかどうかとはまったく関係がありません。どちらの方法でも、ユーザーがボックスへのsshアクセス権を持っている場合、ユーザーにallコマンド、または/etc/sudoersファイルのsuからSudoまでの実行を許可すると、 Sudo su -を実行するだけで、ルートに特権を昇格できます。

もちろん、ベストプラクティスは、Sudoを使用して古いユーザーが古いコマンドを実行できないようにすることです。特定のユーザーにrootとしての実行を許可し、他の何にもアクセスできないようにするコマンドのホワイトリストを作成します。簡単な(少し面倒な場合は)Sudo特権のさまざまなセットを使用してさまざまな「管理者」グループを設定し、そのグループを特定のユーザーに割り当てることができます。特定の構成の詳細については、man sudoersを参照してください。

0
user10211