Linux で AppArmor プロファイルがアクティブかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux システム上の AppArmor プロファイルの状態を確認する方法を学びます。AppArmor は、プロファイルを使用してアプリケーションのアクションを制限し、システムのセキュリティを強化するセキュリティモジュールです。AppArmor プロファイルがアクティブかどうか、およびそれらがどのように構成されているかを判断する 3 つの方法を調査します。

具体的には、aa-status コマンドを使用して読み込まれたプロファイルとそのモード(強制モードまたは警告モード)を一覧表示し、/etc/apparmor.d ディレクトリの内容を調べて利用可能なプロファイルファイルを確認し、/sys/kernel/security ファイルシステム内の AppArmor の状態を調べます。これらの手順により、AppArmor の動作状態を検証する方法を包括的に理解することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/ls -.-> lab-558778{{"Linux で AppArmor プロファイルがアクティブかどうかを確認する方法"}} linux/cat -.-> lab-558778{{"Linux で AppArmor プロファイルがアクティブかどうかを確認する方法"}} linux/sudo -.-> lab-558778{{"Linux で AppArmor プロファイルがアクティブかどうかを確認する方法"}} linux/nano -.-> lab-558778{{"Linux で AppArmor プロファイルがアクティブかどうかを確認する方法"}} end

aa-status で AppArmor プロファイルを一覧表示する

このステップでは、aa-status コマンドを使用してシステム上のアクティブな AppArmor プロファイルを一覧表示する方法を学びます。AppArmor は、プログラムを限定されたリソースセットに制限することで、強制アクセス制御 (MAC: Mandatory Access Control) を提供するセキュリティモジュールです。

AppArmor プロファイルを、特定のアプリケーションに対するセキュリティポリシーと考えてください。これらのプロファイルは、アプリケーションがアクセスできるファイル、ネットワークリソース、その他のシステム機能を定義します。これにより、悪意のあるソフトウェアや侵害されたアプリケーションが広範囲にわたる損害を引き起こすのを防ぐことができます。

現在読み込まれていて適用されているプロファイルを確認するには、ターミナルを開き、次のコマンドを入力します。

sudo aa-status

AppArmor の状態を確認するには管理者権限が必要なので、sudo を使用する必要があります。

コマンドを実行すると、次のような出力が表示されます。

apparmor module is loaded.
...
profiles are loaded.
...
profiles are in enforce mode.
...
profiles are in complain mode.
...
processes are unconfined.
...

この出力は、AppArmor の状態の概要を提供します。

  • apparmor module is loaded: AppArmor カーネルモジュールがアクティブであることを示します。
  • profiles are loaded: カーネルに読み込まれている AppArmor プロファイルの総数を表示します。
  • profiles are in enforce mode: 関連するアプリケーションの動作を実際に制限しているプロファイルを一覧表示します。アプリケーションが適用されているプロファイルで許可されていないことを試みると、そのアクションはブロックされ、ログメッセージが生成されます。
  • profiles are in complain mode: 関連するアプリケーションの動作を監視しているが、制限を適用していないプロファイルを一覧表示します。アプリケーションがコンプレインモードのプロファイルで許可されていないことを試みると、そのアクションは許可されますが、ログメッセージが生成されます。このモードは、プロファイルの開発とテストに役立ちます。
  • processes are unconfined: 現在 AppArmor プロファイルによって管理されていない実行中のプロセスの数を表示します。

aa-status の出力を理解することは、AppArmor を管理し、システムのセキュリティ状態を把握する最初のステップです。

続行 をクリックして次のステップに進みます。

/etc/apparmor.d のプロファイルを確認する

前のステップでは、aa-status を使用して読み込まれた AppArmor プロファイルの一覧を見ました。では、これらのプロファイルがファイルシステム上のどこに保存されているかを調べてみましょう。

AppArmor プロファイルは通常、/etc/apparmor.d/ ディレクトリにあります。このディレクトリには、各制限対象アプリケーションのルールを定義するテキストファイルであるプロファイルファイルが含まれています。

このディレクトリの内容を一覧表示するには、ls コマンドを使用します。

ls /etc/apparmor.d/

ファイルとディレクトリの一覧が表示されます。このディレクトリ内の各ファイル(abstractionstunables のようなサブディレクトリに含まれていないもの)は、通常、アプリケーションに対する特定の AppArmor プロファイルを表しています。

出力例:

bootchartd             usr.sbin.tcpdump
...

これらのファイル名は、多くの場合、制限対象となる実行可能ファイルのパスに対応しています。たとえば、usr.sbin.tcpdump/usr/sbin/tcpdump コマンドのプロファイルです。

nano などのテキストエディタを使用して、プロファイルファイルの内容を表示できます。usr.sbin.tcpdump のプロファイルを見てみましょう。次のコマンドを入力します。

nano /etc/apparmor.d/usr.sbin.tcpdump

これにより、nano エディタでプロファイルファイルが開きます。ファイルアクセスルール、ネットワークアクセス許可、その他の制限を定義する行が表示されます。現時点ですべての行を理解する必要はありません。目的は、プロファイルファイルの構造を見ることだけです。

nano を終了するには、Ctrl + X を押します。変更を加えた場合、保存するかどうかを尋ねられます。N(いいえ)を押し、次に Enter を押して確定します。

/etc/apparmor.d/ 内のファイルを調べることで、システム上のさまざまなアプリケーションに適用される特定のセキュリティポリシーを理解することができます。

続行 をクリックして次に進みます。

/sys/kernel/security で AppArmor の状態を調べる

aa-status コマンドに加えて、/sys ファイルシステムを通じて直接 AppArmor の状態を調べることもできます。/sys ファイルシステムはカーネルのデータ構造に対するインターフェースを提供し、AppArmor のようなセキュリティモジュールに関する情報が含まれています。

/sys 内で AppArmor の状態に関連するディレクトリは /sys/kernel/security/apparmor/ です。

このディレクトリの内容を一覧表示して、利用可能な情報を確認してみましょう。

ls /sys/kernel/security/apparmor/

AppArmor の状態に関する詳細、たとえば読み込まれたプロファイル、ポリシールール、適用状態などを提供するファイルやディレクトリが表示されます。

出力例:

features  profiles  policy  revision  ...

特に有用なファイルの 1 つが profiles です。cat コマンドを使用してその内容を表示できます。

cat /sys/kernel/security/apparmor/profiles

このファイルには、現在読み込まれている AppArmor プロファイルとその状態(たとえば、enforcecomplain、または unconfined)が一覧表示されます。出力は aa-status で見たプロファイルの一覧に似ていますが、カーネルの状態を直接表示したものです。

出力例:

/usr/sbin/tcpdump (enforce)
...

/sys/kernel/security/apparmor/ ディレクトリとそのファイルを調べることで、AppArmor の状態をより低レベルで理解する方法が提供され、デバッグや高度な分析に役立ちます。

これで、Linux システム上の AppArmor プロファイルの状態と存在を確認する 3 つの異なる方法を学びました。

続行 をクリックして実験を完了します。

まとめ

この実験では、Linux で AppArmor プロファイルがアクティブかどうかを確認する方法を学びました。まず、sudo を使って aa-status コマンドを実行し、読み込まれた AppArmor プロファイルを一覧表示し、それらの状態(適用モード(enforce)か警告モード(complain)かなど)を理解しました。このコマンドにより、AppArmor モジュールの状態と、プロセスを能動的に管理しているプロファイルの数を迅速に把握できます。

この実験ではまた、/etc/apparmor.d ディレクトリを調べて、利用可能な AppArmor プロファイルファイルを表示する方法も学びました。これらのファイルは、さまざまなアプリケーションのセキュリティポリシーを表しています。最後に、/sys/kernel/security パスを調べて、システムのセキュリティフレームワーク内での AppArmor カーネルモジュールの存在と状態を確認する方法を学びました。