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パスワード入力を要求することがなく、管理者権限でシェルを実行できてしまうので注意。

関連記事の目次
 
ネットワーク、ポート番号
  • iptablesを使ってCentOSのファイアウォール設定
  • nmapでオープンしているポート番号とバージョンを確認
  •  
    yum、rpmパッケージ、サービス
  • CentOSで不要なサービスは起動しないようにする
  • RPMパッケージのインテグリティチェック
  •  
    パーミッション
  • cronで使用するファイルのパーミッション設定
  • CentOSのumaskの設定
  • ユーザーホームディレクトリ内の権限設定をセキュアにする
  • CentOSのパスワードファイルのパーミッション設定
  • findコマンドでファイル書込権限をいっせいにチェック
  • findコマンドでセットユーザ(グループ)IDが不要にセットされていないかチェック
  • findコマンドで所有者、グループが存在しないファイルを抽出
  •  
    ログイン、認証、パスワード、アカウント制御
  • ログイン時などに表示されるシステムバナーを変更するには?
  • CentOSのユーザーアカウントのパスワードポリシーを設定
  • pam_cracklibモジュールでパスワードポリシーを設定
  • pam_unix.soモジュールを使って過去のパスワード再使用を制限する
  • システムコンソールでのrootログインを制限する方法
  • suコマンドによるrootへのスイッチを制限する
  • root権限でのコマンド実行、sudoだと監査ログが取得できる
  • デーモン用アカウントなどに対しシェルを使用を無効にする
  • パスワード認証を失敗時にアカウントをロックアウトする設定
  • rootアカウントのPATH環境変数のセキュリティについて
  •  
    auditdでシステム監査
  • auditdを使ってシステム監査
  • auditdのログ容量の設定
  • auditd監査ルールの設定方法
  • auditdで時間設定変更操作を監査する
  • auditdでユーザー・グループ設定ファイル変更操作を監査する
  • auditdでネットワーク関連の設定変更を監査する
  • auditdでログイン記録のログファイルの変更を監査する
  • auditdでファイル所有者や権限の変更に関するイベントを監査する
  • auditdでsetuid、setgidプログラムの実行を監査する
  • auditdでマウント操作を監査する
  • auditdでファイル削除操作を監査する
  • auditdでsudo設定ファイルに対する操作を監査する
  • auditdでカーネルモジュールのロード、アンロードを監査する
  • マシン再起動後にauditdの設定変更を有効にする設定
  • ausearch、aureportで監査ログのサマリレポートを作成
  •  
    ツール
  • NTPのセキュリティを考慮した設定
  • セキュリティを考慮してX Windowsを設定または削除する方法
  • ファイルの改ざん対策用にTripwireを導入
  • CentOSにホスト型侵入検知ソフトAIDE(Advanced Intrusion Detection Environment)を導入
  •  
    トラブルシューティング
  • アイドルのシェルを自動で強制終了させるには?
  • CentOSでコアダンプを無効にする方法
  • Linuxのbash脆弱性CVE-2014-6271、Shellshockを修整
  • CentOSでバッファーオーバーフロー脆弱性に対する防御機能が有効になっているか確認する

  • コメントを残す

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