「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にインストールする場合

CentOSyum コマンドでインストールする場合。

sudo yum -y  install auditd

設定

auditd の設定

Ubuntu は、 /etc/audit/auditd.conf です。

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 です。

audit.rules
オプション 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 の制御

Linuxservice コマンドで操作する場合。

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
監査ログの各 key の意味
項目 説明
type イベントの種類を表します。
msg timestamp:unique_id の形式で記録されます。
syscall システムコール番号を表します。
success システムコールが成功したかどうかを表します。
exit システムコールの戻り値を表します。
exe 実行したプログラムのフルパスです。

関連項目