audit による情報採取

1.特定のシステムコールの追跡

以下は、kill 関連の追跡の場合。

まずは、システムコール番号の確認を行う。
これがわからないと audit のログに記録されたシステムコールが何かわからない。

# ausyscall i386 kill
kill               37
tkill              238
tgkill             270
# ausyscall x86_64 kill
kill               62
tkill              200
tgkill             234

参考資料
http://qiita.com/h2suzuki/items/c2b0b51abb252155db2f

そして、以下のように、/etc/audit/audit.rules に追跡用のルールを設定する。

-a exit,always -F arch=b64 -S kill -k teste_kill
                                   ^^^^^^^^^^^^^★ログの検索用に設定

auditd を再起動して、以下のようにルールが設定されたことを確認する。

# auditctl -l
LIST_RULES: exit,always arch=3221225534 (0xc000003e) key=teste_kill syscall=kill

システムコールが発行されると以下のように記録される。

# ausearch -if /var/log/audit/audit.log -k teste_kill
----
time->Mon Mar 16 02:26:42 2015
type=OBJ_PID msg=audit(1426440402.942:284): opid=2193 oauid=0 ouid=0 oses=42 ocomm="tail"
type=SYSCALL msg=audit(1426440402.942:284): arch=c000003e syscall=62 success=yes exit=0 a0=891 a1=9 a2=0 a3=891 items=0 ppid=1516 pid=1518 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="bash" exe="/bin/bash" key="teste_kill"

上記のログから、以下の情報などが読み取れる。

arch=c000003e : 64 bit
syscall=62    : kill
a0=891        : 対象の PID が 2193
a1=9          : シグナル値が 9 から SIGKILL が発行

参考情報Security Guide


2.デバイスファイルへのアクセスの追跡

以下は、/dev/sdf への追跡の場合。

まずは、デバイスファイルのメジャー番号、マイナー番号を確認する。

# ll /dev/sdf
brw-rw---- 1 root disk 8, 80  3月 17 19:16 2015 /dev/sdf

上記の情報をもとにルールを設定する。

# auditctl -a exit,always -F arch=b64 -F devmajor=8 -F devminor=80 -S all -k teste_kill
# auditctl -l
LIST_RULES: exit,always arch=3221225534 (0xc000003e) devmajor=8 (0x8) devminor=80 (0x50) key=teste_kill syscall=all

以下は、/dev/sdf に ls した場合の出力。

# ausearch -if /var/log/audit/audit.log -k teste_kill
----
time->Tue Mar 17 20:35:28 2015
type=CONFIG_CHANGE msg=audit(1426592128.816:11926): auid=0 ses=19 op="add rule" key="teste_kill" list=4 res=1
----
time->Tue Mar 17 20:35:38 2015
type=PATH msg=audit(1426592138.127:11928): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50
type=CWD msg=audit(1426592138.127:11928):  cwd="/etc/audit"
type=SYSCALL msg=audit(1426592138.127:11928): arch=c000003e syscall=192 success=no exit=-95 a0=7fff9045890c a1=7f5d5c3a0319 a2=2390980 a3=ff items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"
----
time->Tue Mar 17 20:35:38 2015
type=PATH msg=audit(1426592138.127:11927): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50
type=CWD msg=audit(1426592138.127:11927):  cwd="/etc/audit"
type=SYSCALL msg=audit(1426592138.127:11927): arch=c000003e syscall=6 success=yes exit=0 a0=7fff9045890c a1=238be80 a2=238be80 a3=7fff90457990 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"
----
time->Tue Mar 17 20:35:38 2015
type=PATH msg=audit(1426592138.127:11929): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50
type=CWD msg=audit(1426592138.127:11929):  cwd="/etc/audit"
type=SYSCALL msg=audit(1426592138.127:11929): arch=c000003e syscall=6 success=yes exit=0 a0=7fff9045890c a1=7fff90457b70 a2=7fff90457b70 a3=7fff90457900 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"
----
time->Tue Mar 17 20:35:38 2015
type=PATH msg=audit(1426592138.127:11930): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50
type=CWD msg=audit(1426592138.127:11930):  cwd="/etc/audit"
type=SYSCALL msg=audit(1426592138.127:11930): arch=c000003e syscall=192 success=no exit=-61 a0=7fff9045890c a1=7f5d5bd7bdb7 a2=0 a3=0 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"
----
time->Tue Mar 17 20:35:38 2015
type=PATH msg=audit(1426592138.127:11931): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50
type=CWD msg=audit(1426592138.127:11931):  cwd="/etc/audit"
type=SYSCALL msg=audit(1426592138.127:11931): arch=c000003e syscall=192 success=no exit=-61 a0=7fff9045890c a1=7f5d5bd7bd88 a2=0 a3=0 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"


参考資料
https://access.redhat.com/ja/solutions/786713
http://eng-manima.blogspot.jp/2014/10/linux-auditd.html

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/Security_Guide/index.html#chap-system_auditing
http://www.secureos.jp/index.php?plugin=attach&refer=events%2Fjsosjk06&openfile=jsosjk06-linux-audit.pdf

http://www.usupi.org/sysad/222.html
https://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf
http://a4dosanddos.hatenablog.com/entry/2013/07/10/230710
https://www.suse.com/documentation/sled10/pdfdoc/auditqs_sp2/auditqs_sp2.pdf
http://people.redhat.com/sgrubb/audit/audit-parse.txt