NOPASSWD
セキュリティに大きな影響はありません。その最も明白な効果は、ユーザーがワークステーションを離れたときに保護を提供することです。ワークステーションに物理的にアクセスできる攻撃者は、データを抽出し、アクションを実行し、ユーザーのアクセス許可でマルウェアを植えることができますが、ルートへのアクセスを昇格させることはできません。攻撃者は、ユーザーが次回 sudo プロンプトまたはスクリーンセーバーにパスワードを入力したときに、そのパスワードを記録するキーロガー タイプのプログラムを仕掛けることができるため、この保護の用途は限られています。
それにもかかわらず、パスワードを要求することは、攻撃者にとってハードルを上げます。多くの場合、巧妙でない攻撃者に対する保護は役立ちます。特に、攻撃が機会の 1 つであることが多く、攻撃者が目立たないマルウェアをすぐに見つけて構成する方法を知らない可能性がある無人のワークステーション シナリオでは特に有効です。さらに、ルート権限がない場合、マルウェアを隠すのは難しくなります — ルート権限がない場合、ルートから隠すことはできません.
パスワードがなくても巧妙な攻撃者から保護できる現実的なシナリオがいくつかあります。たとえば、盗まれたラップトップ:ユーザーのラップトップが盗まれ、秘密 SSH キーが完備されています。泥棒が鍵ファイルのパスワードを (おそらく力ずくで) 推測するか、鍵エージェントのメモリ ダンプからパスワードにアクセスするかのいずれかです。盗難が検出された場合、これはそのユーザーのアカウントでの最近のアクティビティを調査するためのシグナルであり、これは植え付けられたマルウェアを検出する必要があることを意味します。攻撃者がユーザー レベルのアクセス権しか持っていない場合、攻撃者が行ったことはすべてログに痕跡を残します。攻撃者がユーザーのパスワードを入手して sudo を実行すると、すべてのログが危険にさらされます。
NOPASSWD
のマイナス面かどうかはわかりません ユースケースの利点のバランスを取ります。状況の他のすべての要因に対してそれをバランスさせる必要があります。たとえば、異なるパスワードを使用することを許可しているようですが、強制していないようです。代わりに、一元化されたアカウント データベースを使用できますか?システム間にどの程度の封じ込めが必要ですか?異なる sudo パスワードをサポートする Ansible の代替案を検討していますか?他の認証メカニズムを検討しましたか?
パスワードなしの sudo を必要としない特定のケースが 2 つあります。
<オール>自動化について:
これをパスワードなしで実行できることに同意しますが、sudoパスワードを要求しないことで、実際には自動化ツールへのすべてのアクセスを許可しています.では、ツールが実際に何をする必要があるか考えてみてください。これらすべてのアクセスが本当に必要ですか?おそらく違います。
Sudo には、 NOPASSWD
を使用して特定のコマンドを構成できる便利な機能が付属しています sudoers ファイル内のフラグ:
username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
なんらかの理由で誰も指摘していないように見えることの 1 つは (私が間違っていたら訂正してください)、実行するプログラムを知らないうちにルート アクセスに昇格できるようにすることです。通常、悪意のあるプログラムまたはスクリプトを sudo を使用せずに root 以外のユーザーとして誤って実行した場合、依然として多くの損害を与える可能性がありますが、(別の悪用を除けば) root 権限はありません。したがって、少なくともルートキットなどについて心配する必要はありません。しかし、NOPASSWD モードでは、その保護はありません。ユーザーの下で実行されるすべてのプログラムは、sudo を使用して再起動することにより、root にエスカレートできます。マルウェアは、これを実行するために特別にプログラムする必要があり、それ以外の場合は root アクセスできませんが、それを行う悪意のあるコードはどうなるでしょうか?