「auditd」の版間の差分
(→関連項目) |
|||
(同じ利用者による、間の4版が非表示) | |||
行7: | 行7: | ||
== 概要 == | == 概要 == | ||
[[auditd]] とは、監査サービスデーモンです。 | [[auditd]] とは、監査サービスデーモンです。 | ||
+ | |||
+ | Linux Audit は、 [[Linuxカーネル]] の[[システムコール]]などのイベントを監視する機構です。Linux Audit を使用すると、[[システムコール]] が実行された状態をログに記録できます。システムがダウンした場合、攻撃を受けた場合に、原因の究明に役立ちます。 | ||
+ | |||
+ | プロセス、[[カーネル]]や[[auditd]] の関係を以下に簡単に示します。 | ||
+ | プロセス -システムコール-> カーネル -イベント-> auditd -イベント-> audispd -イベント-> IDS/IPS | ||
+ | [[auditd]]は、システムコールをフックして情報を取得します。[[auditd]]で取得したイベントは、audispd でほかのアプリケーションやネットワーク上のほかのノードに転送できます。 | ||
+ | [[auditd]]は、イベントを監査ログ(Audit Log)として蓄積します。監査ログから情報を検索・表示するツールとして ausearch が提供されます。監査ログの統計情報を得るには aureport を利用します。[[auditd]]がどの[[システムコール]]をフックするかは、 auditctl で指定します。 | ||
== インストール == | == インストール == | ||
=== Ubuntu/Debinan 系 === | === Ubuntu/Debinan 系 === | ||
行13: | 行20: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{yum|auditd}} | {{yum|auditd}} | ||
+ | == 設定 == | ||
+ | === auditd の設定 === | ||
+ | Ubuntu は、 /etc/audit/auditd.conf です。 | ||
+ | {|class="wikitable" | ||
+ | |+ auditd.conf | ||
+ | ! 項目 | ||
+ | ! 説明 | ||
+ | |- | ||
+ | | log_file | ||
+ | | 監査ログの出力先 | ||
+ | |- | ||
+ | | log_format | ||
+ | | 監査ログの形式 | ||
+ | |- | ||
+ | | flush | ||
+ | | 監査ログをディスクに書き込むときの方法 | ||
+ | |- | ||
+ | | freq | ||
+ | |監査ログをディスクに書き込む頻度 | ||
+ | |- | ||
+ | |max_log_file | ||
+ | |監査ログの最大サイズの設定 | ||
+ | |- | ||
+ | |max_log_file_action | ||
+ | |監査ログが最大サイズになったときの動作の設定 | ||
+ | |- | ||
+ | |space_left | ||
+ | |最小のディスクサイズ | ||
+ | |- | ||
+ | |space_left_action | ||
+ | |ディスクが不足したときの動作 | ||
+ | |} | ||
+ | === システムコールの監視の条件の設定 === | ||
+ | Ubuntu は、 /etc/audit/audit.rules です。 | ||
+ | == ログファイル == | ||
+ | auditd の監査ログは、 /var/log/audit/autid.log です。 | ||
+ | {|class="wikitable" | ||
+ | |+ audit.rules | ||
+ | ! オプション | ||
+ | ! setumei | ||
+ | |- | ||
+ | | -D | ||
+ | | すべてのルールを削除します | ||
+ | |- | ||
+ | | -b サイズ | ||
+ | | Linux Audit の利用できるカーネル内のバッファサイズを設定します | ||
+ | |- | ||
+ | | -S システムコール名 | ||
+ | |監査ログを出力する[[システムコール]]を指定します | ||
+ | |- | ||
+ | | -F | ||
+ | |監査ログを出力する条件を指定します。条件は key=value 形式で指定します。演算子は = , !=, <, > などが利用できます。 | ||
+ | |- | ||
+ | | -k | ||
+ | |作成するルールに、そのルールを一意に特定できる名前を指定します | ||
+ | |- | ||
+ | | -w | ||
+ | | 監査するファイルを指定します。ファイルの変更などを関ししたい場合に利用します。 | ||
+ | |- | ||
+ | | -p | ||
+ | | 監査ログを取得するファイルアクセスパーミッションを指定します。書き込み時に関連する監査ログを取得する場合には、 w 、読み込み時には r, 実行時の場合は x , 属性が変更された場合は a を指定します。 | ||
+ | |} | ||
+ | === audit.rules の設定方法 === | ||
+ | ==== 64bit 環境の場合 ==== | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | -F arch=b64 | ||
+ | </syntaxhighlight> | ||
+ | ==== socketシステムコールを監視する例 ==== | ||
+ | uid=10 のユーザが socket [[システムコール]] を実行したときに、監査ログを出力します。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | -a exit,always -F arch=b64 -F uid=10 -S socket -k socket | ||
+ | </syntaxhighlight> | ||
+ | ==== /etc/etc のディレクトリを監視する例 ==== | ||
+ | /etc に対する open [[システムコール]] が失敗した場合にログを落とす例です。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | -a exit,always -F arch=b64 -S open -S truncate -F dir=/etc -F success=0 | ||
+ | </syntaxhighlight> | ||
+ | ==== /etc/passwd のファイルを監視する例 ==== | ||
+ | 以下の設定は、 ファイル [[/etc/passwd]] に対する | ||
+ | * 書き込み | ||
+ | * 属性の変更 | ||
+ | を行う [[システムコール]] 終了時に 監査ログ を出力します。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | -a exit,always -F arch=b64 -w /etc/passwd -p wa -k passwd_watch | ||
+ | </syntaxhighlight> | ||
+ | |||
== 使い方 == | == 使い方 == | ||
+ | === ツール === | ||
+ | ;auditctl: [[auditd]]が「どの[[システムコール]]をフックするか」の設定を行います。 | ||
+ | ;aureport: 監査ログの統計情報を表示します。 | ||
+ | ;ausearch:監査ログから検索・表示します。 | ||
{{service|auditd}} | {{service|auditd}} | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | </syntaxhighlight> | ||
+ | == 監査ログ == | ||
+ | 非 [[root]] ユーザで、 /etc/shadow を cat コマンドで表示しようとしたときの例です。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cat /etc/shadow | ||
+ | </syntaxhighlight> | ||
+ | audit.log には、以下の行が出力されました。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
+ | type=SYSCALL msg=audit(1450537299.624:252): arch=c000003e syscall=2 success=no | ||
+ | exit=-13 a0=7fffebd0cacf a1=0 a2=20000 a3=691 items=1 ppid=3021 pid=10855 | ||
+ | auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 | ||
+ | sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" | ||
+ | key=(null) | ||
+ | type=CWD msg=audit(1450537299.624:252): cwd="/tmp" | ||
+ | type=PATH msg=audit(1450537299.624:252): item=0 name="/etc/shadow" | ||
+ | inode=2385997 dev=08:01 mode=0100640 ouid=0 ogid=42 rdev=00:00 nametype=NORMAL | ||
+ | type=PROCTITLE msg=audit(1450537299.624:252): | ||
+ | proctitle=636174002F6574632F736861646F77 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | {|class="wikitable" | ||
+ | |+ 監査ログの各 key の意味 | ||
+ | ! 項目 | ||
+ | ! 説明 | ||
+ | |- | ||
+ | | type | ||
+ | | イベントの種類を表します。 | ||
+ | |- | ||
+ | | msg | ||
+ | | timestamp:unique_id の形式で記録されます。 | ||
+ | |- | ||
+ | | syscall | ||
+ | | システムコール番号を表します。 | ||
+ | |- | ||
+ | | success | ||
+ | | システムコールが成功したかどうかを表します。 | ||
+ | |- | ||
+ | | exit | ||
+ | | システムコールの戻り値を表します。 | ||
+ | |- | ||
+ | | exe | ||
+ | | 実行したプログラムのフルパスです。 | ||
+ | |} | ||
== 関連項目 == | == 関連項目 == | ||
* [[Linux]] | * [[Linux]] | ||
* [[SELinux]] | * [[SELinux]] | ||
− | * | + | * 監査ログ |
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
2016年1月15日 (金) 00:51時点における最新版
auditd とは、監査サービスデーモンです。
読み方
- auditd
- おーでぃっと でぃー
目次
概要
auditd とは、監査サービスデーモンです。
Linux Audit は、 Linuxカーネル のシステムコールなどのイベントを監視する機構です。Linux Audit を使用すると、システムコール が実行された状態をログに記録できます。システムがダウンした場合、攻撃を受けた場合に、原因の究明に役立ちます。
プロセス、カーネルやauditd の関係を以下に簡単に示します。
プロセス -システムコール-> カーネル -イベント-> auditd -イベント-> audispd -イベント-> IDS/IPS
auditdは、システムコールをフックして情報を取得します。auditdで取得したイベントは、audispd でほかのアプリケーションやネットワーク上のほかのノードに転送できます。 auditdは、イベントを監査ログ(Audit Log)として蓄積します。監査ログから情報を検索・表示するツールとして ausearch が提供されます。監査ログの統計情報を得るには aureport を利用します。auditdがどのシステムコールをフックするかは、 auditctl で指定します。
インストール
Ubuntu/Debinan 系
sudo apt install auditd
CentOSにインストールする場合
sudo yum -y install auditd
設定
auditd の設定
Ubuntu は、 /etc/audit/auditd.conf です。
項目 | 説明 |
---|---|
log_file | 監査ログの出力先 |
log_format | 監査ログの形式 |
flush | 監査ログをディスクに書き込むときの方法 |
freq | 監査ログをディスクに書き込む頻度 |
max_log_file | 監査ログの最大サイズの設定 |
max_log_file_action | 監査ログが最大サイズになったときの動作の設定 |
space_left | 最小のディスクサイズ |
space_left_action | ディスクが不足したときの動作 |
システムコールの監視の条件の設定
Ubuntu は、 /etc/audit/audit.rules です。
ログファイル
auditd の監査ログは、 /var/log/audit/autid.log です。
オプション | setumei |
---|---|
-D | すべてのルールを削除します |
-b サイズ | Linux Audit の利用できるカーネル内のバッファサイズを設定します |
-S システムコール名 | 監査ログを出力するシステムコールを指定します |
-F | 監査ログを出力する条件を指定します。条件は key=value 形式で指定します。演算子は = , !=, <, > などが利用できます。 |
-k | 作成するルールに、そのルールを一意に特定できる名前を指定します |
-w | 監査するファイルを指定します。ファイルの変更などを関ししたい場合に利用します。 |
-p | 監査ログを取得するファイルアクセスパーミッションを指定します。書き込み時に関連する監査ログを取得する場合には、 w 、読み込み時には r, 実行時の場合は x , 属性が変更された場合は a を指定します。 |
audit.rules の設定方法
64bit 環境の場合
-F arch=b64
socketシステムコールを監視する例
uid=10 のユーザが socket システムコール を実行したときに、監査ログを出力します。
-a exit,always -F arch=b64 -F uid=10 -S socket -k socket
/etc/etc のディレクトリを監視する例
/etc に対する open システムコール が失敗した場合にログを落とす例です。
-a exit,always -F arch=b64 -S open -S truncate -F dir=/etc -F success=0
/etc/passwd のファイルを監視する例
以下の設定は、 ファイル /etc/passwd に対する
- 書き込み
- 属性の変更
を行う システムコール 終了時に 監査ログ を出力します。
-a exit,always -F arch=b64 -w /etc/passwd -p wa -k passwd_watch
使い方
ツール
- auditctl
- auditdが「どのシステムコールをフックするか」の設定を行います。
- aureport
- 監査ログの統計情報を表示します。
- ausearch
- 監査ログから検索・表示します。
auditd の制御
auditd サービスの開始。
sudo service auditd start
auditd サービスの停止。
sudo service auditd stop
auditd サービスの再起動。
sudo service auditd restart
監査ログ
非 root ユーザで、 /etc/shadow を cat コマンドで表示しようとしたときの例です。
cat /etc/shadow
audit.log には、以下の行が出力されました。
type=SYSCALL msg=audit(1450537299.624:252): arch=c000003e syscall=2 success=no exit=-13 a0=7fffebd0cacf a1=0 a2=20000 a3=691 items=1 ppid=3021 pid=10855 auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 comm="cat" exe="/bin/cat" key=(null) type=CWD msg=audit(1450537299.624:252): cwd="/tmp" type=PATH msg=audit(1450537299.624:252): item=0 name="/etc/shadow" inode=2385997 dev=08:01 mode=0100640 ouid=0 ogid=42 rdev=00:00 nametype=NORMAL type=PROCTITLE msg=audit(1450537299.624:252): proctitle=636174002F6574632F736861646F77
項目 | 説明 |
---|---|
type | イベントの種類を表します。 |
msg | timestamp:unique_id の形式で記録されます。 |
syscall | システムコール番号を表します。 |
success | システムコールが成功したかどうかを表します。 |
exit | システムコールの戻り値を表します。 |
exe | 実行したプログラムのフルパスです。 |