システムユーザーがrootアカウントにSudoを使用しないようにする方法を探しています。
SSHでrootユーザーにログを記録することを意味するのではなく、具体的にはsudoing(Sudo -s)(Sudo su)などを使用します。
助言がありますか?
(sudoersファイルによる特定のコマンドのホワイトリストを期待してください)
ありがとう!
コマンドフィールドで「ALL」キーワードを使用してsudoers仕様を定義すると、特定のコマンドまたはコマンドセットの実行を効果的に防ぐ方法はありません。 sudoersマニュアル これを簡単に説明しています。
「!」演算子の制限
通常、「!」演算子を使用してALLからコマンドを「減算」することは効果的ではありません。ユーザーは、目的のコマンドを別の名前にコピーして実行することで、これを簡単に回避できます。例えば:
bill ALL = ALL, !SU, !SHELLS
BillがSUまたはSHELLSにリストされているコマンドを実行することを実際に妨げることはありません。なぜなら、彼はそれらのコマンドを別の名前にコピーするか、エディターまたは他のプログラムからシェルエスケープを使用できるからです。したがって、これらの種類の制限は、せいぜい助言と見なされるべきです(そしてポリシーによって強化されます)。
一般に、ユーザーがSudo ALLを使用している場合、ユーザー指定の「!」要素に関係なく、ルートシェルを提供する独自のプログラムを作成する(またはシェルの独自のコピーを作成する)ことを妨げるものは何もありません。
上記のシナリオを回避する唯一の方法は、ユーザーが実行できる許可されたコマンドのリスト、つまりホワイトリストを用意することです。
Sudoersファイルに特定のコマンドをホワイトリストに登録しない限り、rootとして機能する方法が常にあるため、これは不可能です。
ルートログインシェルを完全に無効にしてもかまわない場合は、 that を実行できます。
もちろん、Sudoユーザーはこのコースを元に戻すことができます。
Sudo
グループからユーザーを削除し、restricted
などの新しいグループを作成します。
次に、/etc/sudoers
(またはさらに良いのは/etc/sudoers.d
の下のファイル)に次のようなものを追加します。
%restricted ALL=NOPASSWD: /usr/bin/command1,/etc/init.d/command2 restart
そのグループのユーザーは、これらのコマンドのみを実行できます。