Linux auditdによる監査ログ設定(CentOS 7)

概要

  • 今回は、CentOS あるいは Amazon Linux に標準でインストールされているauditd を使って監査ログを取得する方法をご紹介します。
  • auditd は事前に設定したルールに基づき、システムで発生しているイベントを記録します。例えば、auditdは下記のイベントを監視して、ログにイベントを記録することができます。
    • ファイルアクセスの監視
    • システムコールの監視
    • ユーザーが実行したコマンドの記録
    • セキュリティーイベントの記録
    • ネットワークアクセスの監視 
  • auditdは、CentOS、Amazon Linuxでデフォルトでインストールされているため、追加でインストールする必要はありません。
 

auditdにルールを設定して監査ログを有効化

  • 以下の通り、デフォルトではルールは定義されていません。

$ sudo auditctl -l
No rules
  • 設定ファイルにルールを追加します。
  • -aオプションではアクション(alwaysあるいはnever いずれか)、フィルター(task、exit、user、excludeいずれか)を指定して、イベントを記録するタイミングを設定します。今回は、アクションにalways(常にイベント発生)、フィルターにexit(全てのシステムコールを対象)を指定しています。
  • -Sオプションでは、システムコールを指定します。今回はexecve(プログラム実行)を指定しています。

$ sudo cp -p /etc/audit/rules.d/audit.rules /etc/audit/rules.d/audit.rules_20200328
$ sudo vi /etc/audit/rules.d/audit.rules
$ sudo cat /etc/audit/rules.d/audit.rules
## First rule - delete all
-D

## Increase the buffers to survive stress events.
## Make this bigger for busy systems
-b 8192

## Set failure mode to syslog
-f 1

## Additional settings ←追加
-a exit,always -S execve ←追加
 
  • 実は、systemctlコマンドではauditdを再起動できません。次のエラーメッセージが出力されます。
    • Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only (it is configured to refuse manual start/stop).
  • 下記の通り、serviceコマンドで再起動を行います。

$ sudo systemctl restart auditd
Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only (it is configured to refuse manual start/stop).
See system logs and 'systemctl status auditd.service' for details.
$ sudo service auditd restart
Stopping logging:                                          [  OK  ]
Redirecting start to /bin/systemctl start auditd.service
 
  • 下記の通り、ルールの定義が追加されました。

$ sudo auditctl -l
-a always,exit -S execve
 

監査ログ記録の動作確認

  • 監査ログが記録されるかをテストします。一時的にrootにスイッチしてtail -f コマンドを実行後(rootのみaudit.logの読み込みを許可しているため)、別のターミナルからsshログインを行ってログインに関するログが記録されたことを確認します。

$ sudo su -
# cd /var/log/audit
# tail -f audit.log
type=SYSCALL msg=audit(1585371685.857:859): arch=c000003e syscall=59 success=yes exit=0 a0=55b9bac58d50 a1=55b9bac595f0 a2=55b9bac56ab0 a3=1 items=2 ppid=8544 pid=14474 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="sshd" exe="/usr/sbin/sshd" key=(null)
type=EXECVE msg=audit(1585371685.857:859): argc=3 a0="/usr/sbin/sshd" a1="-D" a2="-R"
** 省略 **
 

参考資料

  • 下記Qiita の記事は、auditd を理解する助けになります。