AIXのコマンドログ取得
AIX とは
AIXとは、IBMが提供している UNIX オペレーティングシステムです。
コマンド実行履歴の取得
先程も言ったように、AIXは、UNIXですので、bsh, ksh などのシェルからコマンド実行した場合は、.sh_history に記録されます。個人で過去の実行履歴を再利用する分には、有効ですが、監査ログとして使うには、改ざん防止が出来ないので、そのままでは利用できません。
監査機能を使った実行履歴の取得方法
監査目的でコマンド実行履歴を取得するには、AIX の監査機能を使うことが出来ます。
一般的な使い方は、以下のマニュアルを参照ください。
簡単な説明をすると、「PROC_Execute」というイベントを監査対象のユーザーに割り当てることで、ユーザーが実行したコマンドを監査ログとして保管してくれます。
PROC_Execute イベントの注意点
「PROC_Execute」の名前から想像できる様に、EXEC システムコールが実行されたときに監査ログに記録します。
このため、ユーザーがシェルから実行したコマンドだけでは無く、シェルスクリプトの中で呼び出すコマンドまで記録されます。root ユーザーの PROC_Execute を監査対象にしてしまうと、デーモン(サービス)などもログの取得対象になるため、レコード数が増えてしまいます。
このため、指定するユーザーを制限したり、出力内容をフィルターする必要が出てきます。
また、bsh や ksh の内部コマンドは、EXEC されないため、監査ログには保管されません。
コマンドの実行履歴の取得 -マイナーバージョン-
以下のマニュアルを見ると、 /etc/security/audit/objects ファイル設定では、ファイルの read/write だけでなく、 execute も設定できると言った記載があります。
以下、抜粋
「An audit-event name can be up to 15 bytes long; longer names are rejected. Valid access modes are read (r), write (w), and execute (x) modes. For directories, search mode is substituted for execute mode. 」
しかし、前述のマニュアルの記載例には、execute mode での設定は見当たりません。
そこで、execute を設定する内容を以下に記載します。
Read, Write ときと同じように、/etc/security/audit/objects ファイルに対象となるコマンドファイルを記載します。
/usr/bin/ps:
x = "File_Execute"
このとき、mode のところを、r, w の代わりに、x を指定します。
また"File_Write" や、"File_Read" の代わりに "File_Execute" を新規に作成します。
"File_Execute"は、今回作成したものなので、/etc/security/audit/events ファイルにエントリーを追加します。
* File Execute
File_Execute = printf "%s"
objectsのエントリーは記録対象とするコマンドの数だけ登録する必要があります。
eventsファイルのエントリーは、一度だけです。
注意事項
この方法では、監査対象とするコマンド全てを登録する必要があります。
シェルスクリプトで、リストを生成することも出来ますが、重要度の高いコマンドに絞った方が良いでしょう。