web-dev-qa-db-ja.com

sudoersのローカルホスト

内部攻撃の可能性はないので、sudoersを使用して、ローカルコンピューターのユーザーにSudo特権を付与したいと思います。私はこれらの行を別々に試しました:

%admin localhost=(ALL) NOPASSWD: ALL
%admin 127.0.0.1=(ALL) NOPASSWD: ALL

しかし、sudoersはlocalhostまたは127.0.0.1のどちらも認識していないようです。

代替手段はありますか?もしそうなら、それはどれくらい安全ですか?リモートの攻撃者は、cronまたはその他の方法を使用してローカルユーザー特権を取得できますか?

8
Zaz

%admin ALL=(ALL) NOPASSWD: ALL

ホストリストは、Sudoルールを1つのネットワークインターフェイスのリストに名前またはアドレスが含まれるホストに制限します。すべてのホストにはループバックインターフェイスがあるため、すべてのホストがルールに一致する必要があります。実際、Sudoはホストリストをチェックするときにループバックインターフェイスをスキップするため、ルールに一致するホストはありません。どちらの方法でも、ホストをlocalhostとして指定することは役に立ちません。

Sudoはネットワーク認証を行いません。ホストリストがあるため、単一のsudoersファイルを複数のマシンに展開し、ユーザーに異なるマシンで異なるアクセス許可を与えることができます。

Cronは、ネットワーク認証も行いません。リモートユーザーは、誤って構成された、または脆弱なネットワークサーバーまたはクライアント(http、ftp、samba、nfs、snmp、sshなど)を介してユーザー特権を取得します。

ホスト名が「ローカルホスト」ではないようです。 output hostnameコマンドを参照するか、/ etc/hostnameの内容を確認してください

0
Snaut

Sudoは、ループバックインターフェイス(localhost/127.0.0.1)については何も知りませんが、他のすべてのインターフェイスについては知っています。マシンに少なくともそのようなインターフェイスが1つある場合、そのマシンはネットワーク上にあると見なされます。したがって、インターフェイスの構成中(通常はOSのインストール中に実行されます)、「ホスト名」を設定する必要がありました。そうでない場合は、自動的に割り当てられました。

この「ホスト名」には、「hostname」コマンドまたは/ etc/hostnameファイルを介してアクセスできます。

結果として、
(i)マシンにはループバックインターフェイスがありますが、確かに「ホスト名」もあります
(ii)Sudoはこの「ネットワーク名」のみを使用できます
(iii)sudoersファイルで「localhost =」を「<yourhostname>」に置き換えると、ルールが一致し、すべてが期待どおりに機能します。

0
liar666