Skip to content

Instantly share code, notes, and snippets.

@3panda
Last active October 9, 2018 02:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 3panda/5c994ec7b8579b8d4d8c01f9fad6df60 to your computer and use it in GitHub Desktop.
Save 3panda/5c994ec7b8579b8d4d8c01f9fad6df60 to your computer and use it in GitHub Desktop.
ディレクトリのログ取

ディレクトリのログ取得

Linuxサーバーで特定のディレクトリのログを取得しログに残す方法です。

前提

  • システム監視のためにAuditdを使用
  • Auditdはサーバーにインストール済み
  • 以降の作業はsudo権限のユーザーが行う

ファイルシステムルールの定義

特定のディレクトリのログを取得するために Auditdでファイルシステムの変更を検知させるルールを定義します。

構文

ファイルシステムのルールを定義するには、以下の構文を使用

-w PATH -p PERMISSIONS -k KEY_NAME

PATH

監査対象のファイルもしくはディレクトリ

PERMISSIONS

ログ記録されるパーミッション

  • r — ファイルまたはディレクトリーの読み取りアクセス
  • w — ファイルまたはディレクトリーの書き込みアクセス
  • x — ファイルまたはディレクトリーの実行アクセス
  • a — ファイルまたはディレクトリーの属性を変更

以下の例は /home/test で 読み取り、書き込み、実行、属性を変更 のいずれかをおこなった場合にログに記録 KEY_NAMEを access_test としている

-w /home/test -p rwxa -k access_test

一時的にルールを定義する

ルールの検証、確認のために一時的にルールを定義する ※サービスやサーバーが停止した際は無効化されます

前項のルールの内容を一時的に定義する場合は以下のコマンド

auditctl -w /home/test -p rwxa -k access_test

永続的にルールを定義する

一時的では無く、永続的にルールを定義する場合は「/etc/audit/audit.rules」にルールを記述

記述例

「/etc/audit/audit.rules」の最後にルールを追記 ファイルが存在しない場合は作成

-w /home/test -p rwxa -k access_test

ルールの参考

細かく管理したい場合はこちらを参考にルールを追加

https://github.com/gds-operations/puppet-auditd/blob/master/examples/auditd.rules

Log確認

auditのログは「/var/log/audit/audit.log」に記録されます

内容の確認はlessで確認(viなどでも可能)

less /var/log/audit/audit.log

以下は「access_test」のKEY_NAMEが記録された部分の抜粋

type=SYSCALL msg=audit(1538720127.122:1297): arch=c000003e syscall=2 success=yes exit=3 a0=55dae641e87d a1=0 a2=0 a3=7fe819cdeb78 items=1 ppid=2911 pid=2912 auid=1018 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts8 ses=1 comm="vi" exe="/usr/bin/vim.basic" key="access_test"

Logファイルについて

以下のURLを参照

7.6. AUDIT ログファイルについて

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security_guide/sec-understanding_audit_log_files

Logの絞り込み

「ausearch」コマンドでLogの絞り込みを行います。

「-k」オプションでルールに指定したKEY_NAMEで検索が可能 「-i」オプションを使うと時刻やauidが文字列になり認識しやすくなる

ausearch -i -k access_test

以下は上記の検索結果の抜粋です。 記録された時刻とauidが文字列になり読みやすくなっています

type=SYSCALL msg=audit(2018年10月05日 15:15:27.122:1297) : arch=x86_64 syscall=open success=yes exit=3 a0=0x55dae641e87d a1=O_RDONLY a2=0x0 a3=0x7fe819cdeb78 items=1 ppid=2911 pid=2912 auid=test_user uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts8 ses=1 comm=vi exe=/usr/bin/vim.basic key=access_test

※「test_user」がログの対象になったユーザーの名前、auidは前項のログでは「1018」とidの番号で記述されている

参考

ausearchコマンドの使い方

https://qiita.com/hana_shin/items/54bb0610d299244bb8f6

その他

ルールの変更などを行なった場合はserviceを再起動する必要

auditdのrestart

service auditd restart

auditdについての参考URL

auditdについてインストールと簡単な利用方法のメモ。

https://qiita.com/kooohei/items/a802af9073dbeec6823e

auditdでLinuxのファイル改竄検知を行う

https://qiita.com/minamijoyo/items/0d77959a869e458d850a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment