root権限でのコマンド実行、sudoだと監査ログが取得できる

root権限で行う操作、コマンドを実行するだけならsuでrootになっても可能だが、sudoを介して実施する事によって監査ログを取得できる。

(1)sudoの特徴


 
・sudoを使ってシステム権限が必要なコマンドを実行する事によって、実行状況を監査ログに記録する事が出来る。(/var/log/secure)
 
・sudoは、どのユーザーが他のユーザーアカウントの権限でコマンドを実行できるか、細かくコントロールする事が出来る。
 
・sudoの設定ファイル”/etc/sudoers”を直接エディタで編集すると構文エラーがあった場合にリモートからrootアカウントでアクセスできなくなる恐れがある。
 
“visudo”を使って編集すると、保存前に文法チェックを行ってくれるので危険が軽減される。
 
・sudoを使うとrootアカウントのパスワードを入力せず、そのユーザーのパスワードでrootアカウントとしてコマンドを実行できてしまう。セキュリティ面ではデメリットとなるので監査ログを取得できるメリットとどちらを優先させるか検討する必要がある。
 

(2)sudo実行時のデフォルトのログ


 
・sudoを使った正常な認証
/var/log/messages
 
・この発行者のユーザー名で発行されたコマンド
/var/log/secure
 

(3)sudoを許可する設定


 
“wheel”グループのユーザーがroot権限のコマンドを実行できるように設定する手順を示す。
 
①wheelグループが存在することを確認
 
# grep ^wheel /etc/group
 
②sudoの設定
 
# visudo
 
下記設定を有効にする、または追加する。
 
%wheel ALL=(ALL) ALL
 

(4)sudoの新たなログを記録


 
・pam_tty_auditモジュールで特定ユーザーのTTY監査を有効にする。
 
※pam_tty_auditモジュール
 
/etc/pam.d/system-authに下記設定を追加する。
 
session required pam_tty_audit.so disable=パターン enable=パターン
 
上記の”パターン”と記述した部分にユーザーを指定する。
 
例)rootユーザーのTTY監査を有効にし、その他のユーザーについては無効
session required pam_tty_audit.so disable=* enable=root
 

(5)sudoのパスワードタイムアウト


 
・デフォルトでは、sudoコマンド使用者のパスワードのタイムアウトは5分間で、この間にコマンドを続けて使うとユーザーはパスワードを要求されない。
 
このため、ユーザーがログイン状態のままワークステーションを離れたりロックしない状態にしておくと、攻撃者に悪用されかねない。
 
・デフォルトのタイムアウト時間を変更するには/etc/sudoersに以下設定を追加する。
 
Defaults timestamp_timeout=値(分)
 
0にするとsudoは毎回パスワードを要求する。
 

(6)sudoを使って管理権限のある新たなシェルを開く


 
・wheelグループに対するデフォルト設定のようにすべてのコマンドが許可されていると下記を実行すると管理権限のある新たなシェルを開くことができる。
 
sudo /bin/bash
 
この方法や同様の方法でrootとして新たなシェルを開くと、/etc/sudoersファイルでタイムアウト時間を指定していても無視され、新たに開かれたセッションが閉じられるまでsudoパスワード入力を要求することがなく、管理者権限でシェルを実行できてしまうので注意。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です