Linuxシステムコールの監査

理論



auditdを機能させるには、AUDITおよびAUDITSYSCALLオプションを使用してカーネルをコンパイルする必要があります

$ grep AUDIT /boot/config-`uname -r`

# CONFIG_AUDIT_ARCH is not set

CONFIG_AUDIT=y

CONFIG_AUDITSYSCALL=y

CONFIG_AUDIT_TREE=y

CONFIG_AUDIT_GENERIC=y






AUDITは、Linuxカーネルの全体的な監査サブシステムを担当し、SELinuxも使用します。 AUDITSYSCALLは、SELinuxでも使用されるシステムコール監査フレームワークを担当します。

Linuxカーネルの監査システムの主要な機能:





設置



Debian / Ubuntuの場合、auditdのインストールは非常に簡単です。

$sudo apt-get install auditd





CentOSの場合:

#yum install audit





プロジェクトホームページ: people.redhat.com/sgrubb/audit



カスタマイズ



設定ファイルauditd /etc/audit/auditd.conf。 各行で定義できるディレクティブは1つだけです。 ディレクティブの名前と値は等号で区切られます。 ほとんどのディレクティブはロギングのセットアップを担当し、変更を必要としません。 詳細なレビューについては、man auditd.confをご覧ください。



監査ルール



監査規則は、ファイル/etc/audit/audit.rulesに含まれています。

auditctl -lはルールのリストを表示し、auditctl -Dはすべてのルールを削除します



ファイルアクセス監査


ファイルアクセス監査ルールの主要な引数:



/ sysディレクトリのルールをランタイムに追加します

sudo auditctl -w /sys/ -p ra





skypeを実行して結果を確認します。

sudo aureport -f

/sbin/audispd permissions should be 0750



File Report

===============================================

# date time file syscall success exe auid event

===============================================

1. 16.01.2011 22:42:04 /sys/class/video4linux/video0/dev 5 yes /usr/bin/skype -1 23

2. 16.01.2011 22:42:03 /sys/devices/system/cpu 5 yes /usr/bin/skype -1 22

3. 16.01.2011 22:42:04 /sys/class/video4linux/video0/device/modalias 5 yes /usr/bin/skype -1 24

4. 16.01.2011 22:42:04 /sys/class/dmi/id/sys_vendor 5 yes /usr/bin/skype -1 25

5. 16.01.2011 22:42:04 /sys/class/dmi/id/product_name 5 yes /usr/bin/skype -1 26

6. 16.01.2011 22:42:04 /sys/class/dmi/id/product_version 5 yes /usr/bin/skype -1 27

7. 16.01.2011 22:42:04 /sys/class/dmi/id/board_vendor 5 yes /usr/bin/skype -1 28

8. 16.01.2011 22:42:04 /sys/class/dmi/id/board_name 5 yes /usr/bin/skype -1 29

9. 16.01.2011 22:42:04 /sys/class/dmi/id/board_version 5 yes /usr/bin/skype -1 30








システムコールの監査


主な属性:



auditctl -a exit、常に-S open -F success = 0は、戻りコードが0より大きいすべてのopen()呼び出しの監査と、システムコールが終了したときのイベントの生成をアクティブにします。

#auditctl -a exit,always -S open -F success=0

# touch /tmp/foo

# tail -1 /var/log/audit/audit.log

type=SYSCALL msg=audit(1295200915.069:14977): arch=c000003e syscall=2 success=no exit=-2 a0=7ff2f0ad4f60 a1=0 a2=7ff2f0d05010 a3=7fff56687650 items=1 ppid=1915 pid=16551 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="tail" exe="/usr/bin/tail" key=(null)






include / linux / unistd.hから番号でシステムコールの名前を見つけることができます。



All Articles