web-dev-qa-db-ja.com

SSH秘密鍵でログインしたときのパスワードなしのsudo

SSH秘密鍵をサポートするようにSudoコマンドを作成することは可能ですか?ユーザーが秘密鍵を使用してログインすると、パスワードを入力せずにSudoを実行できます。

これにより、暗号化されたコールドストレージにUNIXのsysadminパスワードを保存でき、ユーザーが常にサーバーにログインするために安全な秘密SSH鍵を使用すると想定して、パスワードにアクセスする必要がなくなります。

24
Mikko Ohtamaa

そうするためのオプションは(少なくとも) 2014年4月 以降存在しています。

pam_ssh_agent_auth(Centos 7ですぐに使用できるYMMV)というパッケージをインストールしてから、/etc/pam.d/Sudoを構成して認証方法として受け入れる必要があります。最後に、Sudoの間持続する環境変数のリストにSSH_AUTH_SOCKを追加する必要がある場合があります。

Gentoo wikiにはこれらの手順の詳細があります。

11
Liam Dawson

これは、Sudoとsshdにいくつかの深刻なコードの変更がないと不可能です。 Sudoはログイン方法を認識していません。また、sshは、公開鍵、パスワード、またはその他のメカニズムがログインに使用されたかどうかを示すものを他のプログラムに公開していません。

他の誰かが言ったように、sudoersでNOPASSWDオプションを使用することができます-これは、指定されたユーザーに常に適用されますが、秘密鍵でsshを使用するときだけではありません。

本当に必要な場合は、sshdログをチェックし、sudoersファイルをロック/編集して、そのユーザーにパスワードなしのSudoを実行させるsuidプログラムと、このアクセス許可を取り消す定期的なタスクを使用して実行できるトリックがあるかもしれません。

とはいえ、これは悪い考えだと思います。特権コマンドにパスワードを要求することには、秘密鍵SSHにはない優れた利点がいくつかあります。特に、認証のタイムアウトを設定できます(sshセッションではなく、パスワードを再入力する必要があります)。パスワードの最小値とローテーションを設定できます(サーバーの制御外にパスフレーズがあるsshキーとは異なります)。

1
Dagon

いくつかの答えは、別のユーザーパスワードなしでSudoを指します。これによりセキュリティが低下することに注意してください。

すでに証明書で強力に認証されているユーザーの場合、理論的にはルートになる可能性のある証明書を所持しているため、これは問題ではない可能性があります。

ただし、制限されたユーザーShellを攻撃者に提供する脆弱性について考え、このユーザーがsudoersファイルでNOPASSWDを設定している場合、攻撃者はシステムへの資格情報をまったく持たないrootです。

Sudoがユーザーのパスワードを要求する場合、攻撃者は自分の特権をrootに昇格させるために時間と運が必要です。

1