【入門編】 LinuxにおけるAuditdを用いたシステムコール監視とログ出力 – インフラ・ネットワーク & クラウドセキュリティ防御ガイド

こんにちは!インフラやセキュリティの世界へようこそ。
初めてサーバーに触れるとき、「ちゃんと守れているかな」「変な人が侵入してこないかな」って、ちょっとドキドキしますよね。

今回は、Linuxサーバーの心臓部を守るための強力な相棒、「Auditd(オーディットデーモン)」についてお話しします。

セキュリティの世界では、よく「家」に例えられます。鍵をかけたり、窓を二重ロックしたりするのが事前の対策(要塞化)ですよね。でも、もし泥棒が鍵をピッキングして家の中に忍び込み、リビングの金庫をこじ開けようとしていたら……?
防犯カメラやセンサーがなければ、私たちはそれに気づくことすらできません。

Linuxの auditd は、まさに「サーバーの中に取り付けた、絶対に隠せない超高性能な防犯カメラと侵入センサー」なんです。
今回は、この防犯カメラを一緒に設置して、怪しい動きをしっかりキャッチする方法を優しく紐解いていきましょう!

—

1. なぜ「ログファイルを見るだけ」ではダメなの?

「サーバーには /var/log とかにログイン履歴やエラーログが残るから、それで十分じゃないの?」って思いますよね。もちろん、それらの一般的なログも大切です。

しかし、腕利きの侵入者(攻撃者)は、こっそりサーバーに入り込んだあと、自分たちの足跡を消そうとします。自分に都合の悪いログを書き換えたり、削除したりするのはお茶の子さいさいです。

ここで登場するのが auditd です。
auditd は、アプリケーションやユーザーの操作ではなく、Linuxの「カーネル(OSの根っこ部分)」のレベルで動きを監視します。そのため、どんなに権限を持ったユーザー(rootなど)であっても、カーネルが捉えた監視対象のイベントをこっそり隠すことは非常に難しいのです。

まさに、警察の捜査官がすべての行動をビデオに記録しているようなものですね。

—

2. Auditdの仕組みと防犯カメラの設置場所

auditd を動かすと、私たちが指定した「守りたい場所(ファイルやシステムコール)」に何かしらのアクセスがあった瞬間、カーネルがそれを検知して専用の監査ログ(/var/log/audit/audit.log)に記録してくれます。

例えば、こんな場所を監視したくありませんか?

  • システムのユーザー情報を管理している /etc/passwd ファイルが書き換えられていないか?
  • 誰かが勝手に管理者権限(root)に昇格しようとしていないか?
  • 機密情報が入っている設定ファイルが勝手に覗き見られていないか?

これらを監視するためのルールを、一緒に設定していきましょう!

—

3. 実践!Auditdで特定のファイルを監視してみよう

それでは、実際にCentOSやUbuntuなどのLinuxサーバーで auditd の設定を行ってみます。一歩ずつ進めましょう。

まずは、お使いのサーバーに auditd が入っているか確認し、インストールします(大抵の環境には最初から入っていますが念のため!)。

# UbuntuやDebianの場合のインストールと起動確認
sudo apt update
sudo apt install -y auditd audispd-plugins
sudo systemctl enable --now auditd

監視ルールの書き方(防犯カメラの向きを調整する)

auditd のルールは、/etc/audit/rules.d/ というディレクトリの中に設定ファイル(または直接 /etc/audit/audit.rules)として記述します。

今回は、「ユーザー情報が詰まった大事なファイル /etc/passwd が書き換えられたら、絶対に記録に残す」というルールを作ってみましょう。

テキストエディタで設定ファイルを開き、ルールを追加します。

# ルールファイルを編集するために開きます(例としてvimを使用)
sudo vi /etc/audit/rules.d/mystحت.rules

ファイルの中に、以下の呪文(設定行)を書き込みます。

# ------------------------------------------------------------
# /etc/passwdファイルへの書き込み(W)や属性変更(A)を監視するルール
# ------------------------------------------------------------
# -w : 指定したパスを監視する(Watch)
# -p wa : w=書き込み(write)、a=属性変更(attribute)があった場合に反応する
# -k : ログを後から検索しやすくするためのキーワード(タグ付け)
-w /etc/passwd -p wa -k passwd_change_alert

設定を保存したら、変更を auditd に読み込ませましょう。

# 設定を反映させるためにサービスを再起動(またはauditctlで即時反映)
sudo augenrules --load
sudo systemctl restart auditd

これで、防犯カメラの設置は完了です!

—

4. 実際に「怪しい動き」をテストして、ログを見てみよう

防犯カメラがちゃんと動くか、テストしてみましょう。
あえて /etc/passwd ファイルに対して何かしらの変更(例えば、タイムスタンプを更新するコマンドなど)を加えてみます。

# /etc/passwdのタイムスタンプを現在時刻に更新してみる(テスト用の軽い変更)
sudo touch /etc/passwd

さあ、防犯カメラ(監査ログ)にはどう映っているでしょうか?
ログファイルから、先ほど付けたキーワード passwd_change_alert で検索してみます。

# 監査ログをキーワードで検索する専用コマンド
sudo ausearch -k passwd_change_alert

実行すると、以下のような詳細なログがズラリと表示されます(一部イメージです)。

time->Sun Oct 28 14:32:10 2023
type=PATH msg=audit(1698471130.123:456): item=0 name="/etc/passwd" inode=123456 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:passwd_t:s0 nametype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 and more...
type=SYSCALL msg=audit(1698471130.123:456): arch=c00000e3 syscall=ans_utimes success=yes exit=0 a0=ffffffffffffffff a1=7ffd5b...

「おっ、誰が、いつ、どのファイルに、どんなシステムコール(OSへの要求)を使ってアクセスしたか」が丸裸になっていますね!これが auditd の真骨頂です。

—

5. 現場のプロからのアドバイス:SIEM連携とノイズ対策

さて、ここまででサーバー単体の防犯カメラが設置できました。しかし、実際の現場では、このログをサーバーの中に閉じ込めておくだけでは不十分です。

もし攻撃者がサーバーの管理者権限を奪った場合、/var/log/audit/audit.log 自体を改ざん・削除されてしまうリスクがあるからです。

そのため、実務では以下のようなステップに進みます。

1. 外部への転送(SIEM連携):
auditd が収集したログを、リアルタイムで安全な外部のログ管理サーバー(SIEM、例えばDatadogやSplunk、ELKスタックなど)に飛ばします。手元の家が燃えても、離れた場所に防犯カメラの映像が中継されていれば証拠は守られますよね。
2. ノイズの調整:
セキュリティを厳しくしすぎると、OSのちょっとしたメンテナンスや正当なアプリの動作まで検知してしまい、ログがアラートの嵐(ノイズ)になってしまいます。「本当に守りたい重要なファイルや権限変更」に絞って監視ルールをチューニングするのが、プロの腕の見せ所です。

—

まとめ

今回は、Linuxの要塞化において強力な武器となる auditd によるシステムコール監視について解説しました。

  • auditd は、OSのカーネルレベルで動く「絶対に隠せない防犯カメラ」である。
  • ファイルの書き込みや属性変更(-w /path -p wa)を監視して不正をキャッチできる。
  • 検出したログは ausearch で確認でき、実務ではSIEM等と連携して外部に退避させる。

最初は設定項目が多くて難しく感じるかもしれませんが、「どのファイルを守りたいか」「誰のどんな行動が怪しいか」という視点を持てば、パズルを解くように楽しく設定できるようになります。

一歩ずつ、安全で堅牢なインフラストラクチャを作っていきましょう!それではまた次のセキュリティ解説でお会いしましょう。

コメント

タイトルとURLをコピーしました