LinuCレベル3 303試験の例題と解説

326.2ホストの侵入検知

LinuCレベル3 303試験の出題範囲から「326.2 ホストの侵入検知」についての例題を解いてみます。Linuxの監査システムの利用方法に関する例題です。

Linucレベル3 303試験 出題範囲


例題

Linuxの監査システムを利用して、/etc/passwdファイルの更新を検知したい。
実行するコマンドとして、正しいものを選択してください。

  1. auditctl -w /etc/passwd -p w -k check_passwd
  2. auditctl -w /etc/passwd -x w -k check_passwd
  3. auditctl -w /etc/passwd -p r -k check_passwd
  4. auditctl --path /etc/passwd --permission write -k check_passwd

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「1. auditctl -w /etc/passwd -p w -k check_passwd」です。

auditctlコマンドは、Linux監査システムの管理を行うためのコマンドです。Linux監査システムに関するステータスの取得、ルールの追加や削除を行うことができます。

Linux監査システムは、Linuxシステムの操作を追跡し、その内容を監査ログに出力することができます。ファイルシステムへのアクセスやシステムコールの発行等を追跡することができます。例えば、/etc/passwdファイルの更新を追跡したり、killシステムコールの発行を追跡したりすることができます。

今回は、ファイルシステムへのアクセスを追跡する設定例を紹介します。/etc/shadowファイルが更新された場合に監査ログを残す設定を行ってみます。

監査ルールを設定するには auditctl コマンドを使用します。

ファイルシステムの監査ルールは、以下のように設定します。

auditctl -w (ファイルのパス) -p (ログに記録するパーミッション) -k (識別のための文字列)

ファイルのパス:
監査対象とするファイルやディレクトリのパスを指定します。

ログに記録するパーミッション:
監査ログに記録する動作を指定します。

r読み込みアクセス
w書き込みアクセス
x実行
a属性の変更

ログに記録するパーミッションは、複数指定することができます。
例えば、読み込みアクセスと実行を監査ログに残したい場合は -p rx を指定します。

識別のための文字列:
監査ログを識別するための文字列を指定します。
監査ログには、key="指定した文字列" の形式で記録されます。

/etc/shadowファイル(暗号化されたパスワードを保存するファイル)の更新を監査ログに残したい場合は、以下のように指定します。

# auditctl -w /etc/shadow -p wa -k etc_shadow

設定した内容を確認するには、-l オプションを使用します。

# auditctl -l
-w /etc/shadow -p wa -k etc_shadow

監査ログの確認を行うために、ユーザのパスワードを変更してみます。

# passwd testuser

監査ログの表示には、ausearchコマンドを使用することができます。ausearchコマンドは、いろいろな条件で絞り込み検索を行うことができます。識別のための文字列で絞り込みを行う場合は -k オプションを使用します。

# ausearch -k etc_shadow
 :
 :
time->Thu Mar  2 19:49:10 2023
type=PROCTITLE msg=audit(1677754150.163:599): proctitle="passwd"
type=PATH msg=audit(1677754150.163:599): item=4 name="/etc/shadow" inode=4252716 dev=fd:02 mode=0100000 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 nametype=CREATE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1677754150.163:599): item=3 name="/etc/shadow" inode=4247825 dev=fd:02 mode=0100000 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 nametype=DELETE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1677754150.163:599): item=2 name="/etc/nshadow" inode=4252716 dev=fd:02 mode=0100000 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:shadow_t:s0 nametype=DELETE cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1677754150.163:599): item=1 name="/etc/" inode=4194433 dev=fd:02 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(1677754150.163:599): item=0 name="/etc/" inode=4194433 dev=fd:02 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=PARENT cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1677754150.163:599): cwd="/home/ohno"
type=SYSCALL msg=audit(1677754150.163:599): arch=c000003e syscall=82 success=yes exit=0 a0=7f4ed490538e a1=7f4ed490512d a2=561139565973 a3=7 items=5 ppid=27659 pid=27936 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=5 comm="passwd" exe="/usr/bin/passwd" subj=unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 key="etc_shadow"

ユーザ番号(uid)が1000のユーザが、/usr/bin/passwdコマンドによって、/etc/shadowファイルを更新したことが記録されました。

ファイルシステムの監査ルールを削除するには、-W オプションを指定します。上記で設定した監査ルールは、下記のように削除することができます。

# auditctl -W /etc/shadow -p wa -k etc_shadow 

# auditctl -l
No rules

例題の選択肢を確認してみましょう。

1.auditctl -w /etc/passwd -p w -k check_passwd
正解です。

ファイルシステムの監査ルールは、-w でファイルパス、-p でパーミッション、-k で識別文字列を指定します。

2.auditctl -w /etc/passwd -x w -k check_passwd
誤りです。

-x というオプションはありません。

3.auditctl -w /etc/passwd -p r -k check_passwd
誤りです。

書式は正しいですが、パーミッションに r を指定していますので、/etc/passwdファイルの読み込みが監査ログに出力されます。

4.auditctl --path /etc/passwd --permission write -k check_passwd
誤りです。

--path や --permission というオプションはありません。

Linux監査システムでは、ファイルシステムへのアクセス以外にも、システムコールの発行を追跡して、監査ログに出力することもできます。監査システムの設定方法を把握し、Linuxシステムのセキュリティ強化や障害対応に役立てましょう。


例題作成者

株式会社デージーネット OSS研究室 大野 公善

ページトップへ