メインコンテンツにスキップ
バージョン: 2.0

ユーザー操作(アクション)のログ記録の設定

このガイドでは、Bashシェルを介して管理ノードにアクセスするすべてのユーザーに対して、リアルタイムのコマンドログ記録を有効にする手順について詳しく説明します。 これは、ユーザーが実行したすべてのコマンドがシステムログに一元的に記録され、ユーザーが自身の操作履歴を消去できないようにするための、セキュリティおよびコンプライアンス上極めて重要な措置です。

🎯 前提条件

  • 管理ノードへの管理者(root)権限。
  • bashシェルとrsyslogサービスがインストールされ、実行されている必要があります(ほとんどのLinuxディストリビューションでは標準で搭載されています)。

リアルタイムのユーザー履歴ログ設定

  1. root ユーザーとしてクラスタ管理シェルにログインしてください。

  2. ログの動作を定義するBash起動ファイルを作成します。 /etc/profile.d/ ディレクトリ内のファイルは、すべてのユーザーがログインする際に自動的に読み込まれます(実行されます)。

  3. vi /etc/profile.d/bash_history_logging.sh を実行して、ファイルを作成または編集します。

  4. 「i」と入力し、以下の内容を貼り付けて、各セッション終了後にユーザー履歴が記録されるようにしてください。

    export PROMPT_COMMAND='history -a >(logger -t "bash_history[$USER]")'
  5. 貼り付けた内容が上記と同じであることを確認してください。 ESC(エスケープ)キーを押して、:wq と入力し、ファイルを保存して終了します。

システムログの処理設定 (rsyslog)

  1. root ユーザーとしてクラスタ管理シェルにログインしてください。

  2. rsyslogの設定ファイルを作成する

  3. /etc/rsyslog.d/ ディレクトリに新しい設定ファイルを作成します。 ここにあるファイルは、カスタムロギングルールを定義しています。

    vi /etc/rsyslog.d/bash_history.conf
  4. i を入力してコンテンツを挿入し、フィルタリングルールを追加します。 次のルールをファイルに挿入してください。 このルールは、「bash_history」というタグが付いたすべてのログメッセージを対象とし、それらを特定のログファイルに書き込みます。

    :syslogtag, startswith, "bash_history" /var/log/messages
  5. ESC(エスケープ)キーを押して、:wq と入力し、ファイルを保存して終了します。

  6. rsyslog サービスを再起動する サービスを再起動して、新しいログ設定を適用します:

    systemctl restart rsyslog

ユーザー操作記録の確認

  1. テスト操作の実行 root 以外の標準ユーザー(例:userA)としてログインします。 /etc/profile.d/ からの新しい設定が適用されます。

    # Example test commands for userA
    date
    ls -l /tmp
    echo "Test complete"
  2. 監査ログを確認する root として再度ログインし、実行されたコマンド、ユーザー名、および PID が新しい監査ファイルに記録されていることを確認してください。