最近のすべてのLinuxユーザーは、 sudoに精通しているでしょう。 コマンド(「スーパーユーザーdo」の略)。ユーザーにsuを使用して管理タスクを実行するためのroot権限を取得するように促すのではなく、強制することによってsudoを普及させる必要があります。しかし、sudoについて知っておくべきことはまだまだたくさんあります。 sudoを使用すると、rootユーザーだけでなく、他のユーザーと同じようにコマンドを簡単に実行できます。 sudoが正しく管理されていない場合、root資格情報を共有するよりも、誤った安心感が得られるため、ほとんど問題がありません。ユーザーの生産性を維持しながら、sudoを使用してシステムアクセスを制御するためのベストプラクティスのいくつかを見てみましょう。 sudoの使用方法を理解し、これらのベストプラクティスに従うと、サンドイッチのあらゆる一口をリラックスして楽しむことができます。
注:を使用する必要があります visudo / etc/sudoersファイルを編集するためのコマンド。編集中は注意してください!
1。 sudoを使用するユーザーに無制限のアクセスを許可しない
ユーザーがrootまたは別のアカウントに切り替えることができるようにsudoを構成しないでください。代わりに、ユーザーが操作する必要のあるユーザーとして特定のコマンドを実行できるようにsudoを構成してみてください。
例:ユーザーがソフトウェアをインストールする必要があります。以下に示すように、rootユーザーに切り替えることなく、rootとしてRPM、APT、またはYUMのみを実行できるようにします。
peter ALL =(ALL) PASSWD : /usr/bin/apt-get, /usr/bin/yum, /bin/rpm
これにより、 peter パスワードなしでsudoapt-get、sudo yum、sudo rpmを実行しますが、他のコマンドは許可しません!
2。 sudoユーザーにすべてのroot権限を付与しないでください
sudoユーザーにアクセス許可を付与している間はALLを使用しないでください。これは、管理者が行う最も一般的な間違いの1つです。これにより、ユーザーはsuコマンドを使用して永続的なroot権限を付与できるため、sudoのコマンドロギング機能をバイパスできます。
peter ALL=(ALL:ALL) ALL
より良い方法は、次のような特定のプログラムファイルへのアクセスを許可することです。ユーザー peter /sbin/および/usr/ sbinディレクトリ内のすべてのプログラムファイルに加えて、コマンド/opt/oracle/check.plにアクセスできます。
注:ディレクトリの場所を指定するには、末尾にスラッシュ(/)が必要です
peter ALL=(ALL) PASSWD: /sbin/, /usr/sbin, /opt/oracle/check.pl
3。 root権限への無制限のパスワードなしのアクセスを許可しないでください
たとえば、侵入者がroot権限へのパスワードなしのsudoアクセス権を持つユーザーアカウントにアクセスできると考えてください。彼はあなたが思いもよらなかったことをすることができました!代わりに、パスワード(自分のパスワード)を使用してroot権限へのアクセスをユーザーに許可します。
peter ALL=(ALL) PASSWD:ALL
これにより、ユーザーは peter sudoを使用してroot権限を取得するたびにパスワードを入力します。
4。特定のsudo構成にincludeディレクティブを使用する
大企業環境では、ローカル構成に加えて、アプリケーションに基づいて特定のsudo構成を維持することをお勧めします。例:ApacheとMySQLを管理するための同じディレクティブのセットを含める場合は、それを個別の sudo.mysqlに分割できます。 ファイルを作成し、includeディレクティブを使用して、メインのsudoersファイルから呼び出します。
#include /etc/sudo.mysql
5。個々のユーザーではなくグループへのSudoアクセスを許可する
例:パッケージのインストールと更新を管理する管理者権限を持つ管理者グループがあります。このように、新しいユーザーを追加/削除するたびにsudoersファイルを編集する必要はありません。ユーザーが適切に管理され、管理者グループに追加/削除されていることを確認してください。
%admin ALL=(ALL) ALL
これにより、グループ adminのユーザーが許可されます すべてのコマンドを実行します。
6。 sudoに適切なタイムアウトを設定する
Sudoはタイムスタンプ機能を使用して、ユーザーが最後にsudoコマンドを実行したのはいつかを認識します。この期間中、ユーザーはパスワード(ユーザー自身のパスワード)の入力を求められることなく、コマンドを再実行できます。デフォルトでは、sudoはパスワードを15分間記憶します。有効期限が切れると、ユーザーはコマンドを再実行するためにパスワードの再入力を求められます。デフォルト値を変更したい場合は、sudoersにエントリを入力するだけです。たとえば、実行するコマンドのすべてのユーザーのタイムアウト値を5分に設定するには、次のコマンドを使用できます。
Defaults timestamp_timeout=x
ここで、xはタイムアウトの有効期限(分単位)です。 0(ゼロ)を指定すると、常にパスワードが要求されます。負の値を指定すると、タイムアウトが期限切れになることはありません。例えば。デフォルトはtimestamp_timeout=5
特定のユーザー(peter)に設定する必要がある場合は、以下のエントリをsudoersファイルに入力するだけです。
Defaults:peter timestamp_timeout=5
sudoersのユーザーエントリにNOPASSWDが含まれている場合、この機能は機能しません。
7。 sudoでsecure_pathディレクティブを使用してバイナリのパスをロックします
ユーザーを特定の領域にロックダウンして、ユーザーがsecure_pathの外部でコマンドを実行できないようにすることをお勧めします。 secure_path を指定して、sudoersで次のディレクティブを使用します :
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8。すべてのsudoアクティビティを個別のファイルに記録します
デフォルトでは、sudoコマンドは他のシステムメッセージとともにログファイルにログを記録します。多くのユーザーがいるため、これはサーバーでは受け入れられません。 sudoの使用とsudoerのアクティビティを簡単に確認できるように、独自のログファイルを持つようにsudoを構成します。もちろん、これは失敗したsudoイベントを監視するのにも役立ちます。
Defaults logfile=/var/log/sudo.log
他にもある場合は、下のコメントに追加してください。