10.2. SELinux と journald

systemd では、journald デーモン (systemd-journal とも呼ぶ) が syslog ユーティリティーの代わりとなり、これはロギングデータを収集、保存するシステムサービスになります。カーネルや libc syslog() 機能を使ってユーザープロセスから受け取ったロギング情報、システムサービスの標準およびエラー出力から受け取ったロギング情報、またはネイティブの API から受け取ったロギング情報を基に構造化およびインデックス化されたジャーナルを作成、維持します。また、暗黙的に安全な方法で各ロングメッセージの多くのメタデータフィールドを収集します。
systemd-journal サービスは SELinux と使うことでセキュリティーを高めることができます。SELinux は、プロセスが設計されたことのみを実行するようにすることでこれらを制御します。ポリシー作成者の制御目標によっては、実行できるものがこれよりも少なくなることもあります。たとえば SELinux は、危険にさらされた ntpd プロセスが Network Time 以外の処理をできないようにします。しかし、ntpd プロセスは syslog メッセージを送信するので、SELinux は危険にさらされたこのプロセスがこれらのメッセージを送信し続けることを許可します。危険にさらされた ntpdsyslog メッセージをフォーマットして他のデーモンに一致させ、管理者の判断を誤らせる可能性があります。さらには、syslog ファイルを読み込むユーティリティーの判断を誤らせ、システム全体を危険にさらす可能性もあります。
systemd-journal デーモンは、すべてのログメッセージを検証するとともに、それらに SELinux ラベルを追加します。こうすることでログメッセージにおける矛盾の検出が容易になり、このタイプの攻撃が発生する前に防ぐことができます。journalctl ユーティリティーを使うと、systemd ジャーナルのログにクエリを実行することができます。コマンドライン引数を指定せずにこのコマンドを実行すると、ジャーナルのすべてのコンテンツが古いエントリーから順に一覧表示されます。システムコンポーネントのログを含むシステム上で生成されたすべてのログを見るには、root で journalctl を実行します。root 以外のユーザーでこのコマンドを実行すると、出力は現在ログイン中のユーザーに関連するログのみに限定されます。

例10.2 journalctl を使ったログの一覧表示

journalctl を使って特定の SELinux ラベルに関連するすべてのログを一覧表示することができます。たとえば、以下のコマンドは、system_u:system_r:policykit_t:s0 ラベルで記録されたすべてのログを一覧表示します。
~]# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
Oct 21 10:22:42 localhost.localdomain polkitd[647]: Started polkitd version 0.112
Oct 21 10:22:44 localhost.localdomain polkitd[647]: Loading rules from directory /etc/polkit-1/rules.d
Oct 21 10:22:44 localhost.localdomain polkitd[647]: Loading rules from directory /usr/share/polkit-1/rules.d
Oct 21 10:22:44 localhost.localdomain polkitd[647]: Finished loading, compiling and executing 5 rules
Oct 21 10:22:44 localhost.localdomain polkitd[647]: Acquired the name org.freedesktop.PolicyKit1 on the system bus Oct 21 10:23:10 localhost polkitd[647]: Registered Authentication Agent for unix-session:c1 (system bus name :1.49, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Oct 21 10:23:35 localhost polkitd[647]: Unregistered Authentication Agent for unix-session:c1 (system bus name :1.80 [/usr/bin/gnome-shell --mode=classic], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.utf8)
journalctl についての詳細は、journalctl(1) の man ページを参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。