web-dev-qa-db-ja.com

ユーザーがrootユーザーにSudoするのを防ぐ

システムユーザーがrootアカウントにSudoを使用しないようにする方法を探しています。

SSHでrootユーザーにログを記録することを意味するのではなく、具体的にはsudoing(Sudo -s)(Sudo su)などを使用します。

助言がありますか?

(sudoersファイルによる特定のコマンドのホワイトリストを期待してください)

ありがとう!

Thats what i want to prevent. when user uses "Sudo -s" he will not be able to use the "root" user

1
ayali

コマンドフィールドで「ALL」キーワードを使用してsudoers仕様を定義すると、特定のコマンドまたはコマンドセットの実行を効果的に防ぐ方法はありません。 sudoersマニュアル これを簡単に説明しています。

「!」演算子の制限

通常、「!」演算子を使用してALLからコマンドを「減算」することは効果的ではありません。ユーザーは、目的のコマンドを別の名前にコピーして実行することで、これを簡単に回避できます。例えば:

bill ALL = ALL, !SU, !SHELLS

BillがSUまたはSHELLSにリストされているコマンドを実行することを実際に妨げることはありません。なぜなら、彼はそれらのコマンドを別の名前にコピーするか、エディターまたは他のプログラムからシェルエスケープを使用できるからです。したがって、これらの種類の制限は、せいぜい助言と見なされるべきです(そしてポリシーによって強化されます)。

一般に、ユーザーがSudo ALLを使用している場合、ユーザー指定の「!」要素に関係なく、ルートシェルを提供する独自のプログラムを作成する(またはシェルの独自のコピーを作成する)ことを妨げるものは何もありません。

上記のシナリオを回避する唯一の方法は、ユーザーが実行できる許可されたコマンドのリスト、つまりホワイトリストを用意することです。

3
Haxiel

Sudoersファイルに特定のコマンドをホワイトリストに登録しない限り、rootとして機能する方法が常にあるため、これは不可能です。

ルートログインシェルを完全に無効にしてもかまわない場合は、 that を実行できます。

もちろん、Sudoユーザーはこのコースを元に戻すことができます。

1
eike

Sudoグループからユーザーを削除し、restrictedなどの新しいグループを作成します。

次に、/etc/sudoers(またはさらに良いのは/etc/sudoers.dの下のファイル)に次のようなものを追加します。

%restricted ALL=NOPASSWD: /usr/bin/command1,/etc/init.d/command2 restart

そのグループのユーザーは、これらのコマンドのみを実行できます。

0