AppArmorは、Ubuntuのセキュリティを強化するための強力なツールであり、プロセスごとにアクセス制御を提供します。AppArmorは、特定のアプリケーションがどのリソースにアクセスできるかを制限することで、システムの安全性を向上させます。この記事では、AppArmorの基本的な仕組み、設定方法、使用法について詳細に説明します。
AppArmorとは何か?
AppArmorは、Ubuntuおよびその他のLinuxディストリビューションにおいて、強制アクセス制御(MAC)を提供するセキュリティモジュールです。AppArmorは、各アプリケーションがアクセスできるリソースを制限し、不正アクセスや悪意のあるソフトウェアからシステムを保護します。
AppArmorは、主に以下の機能を提供します:
- プロファイルベースのアクセス制御:各アプリケーションに対してプロファイルを作成し、どのリソースにアクセスできるかを指定します。
- ホワイトリストとブラックリスト:許可された操作と禁止された操作を明確に定義します。
- 簡単な設定:AppArmorの設定は比較的簡単で、アプリケーションごとに適切なプロファイルを適用できます。
AppArmorの仕組み
AppArmorは、Linuxカーネルのセキュリティ機能を拡張する形で動作します。具体的には、プロファイルを通じて、各アプリケーションがアクセスできるファイル、ディレクトリ、ネットワークリソース、デバイスを制限します。
プロファイルには、アプリケーションが許可されている操作と禁止されている操作が明記されています。プロファイルが適用されることで、アプリケーションが予期しない操作を行った場合、その操作はブロックされます。これにより、システムへの攻撃が未然に防がれます。
AppArmorのインストールと有効化
Ubuntuでは、AppArmorはデフォルトでインストールされており、通常は自動的に有効化されています。もしAppArmorが無効になっている場合や、手動でインストールする必要がある場合、以下の手順でインストールできます。
-
インストール:
bashsudo apt update sudo apt install apparmor apparmor-utils
-
有効化:
AppArmorは通常、Ubuntuのインストール時に有効化されますが、もし無効になっている場合は、次のコマンドで有効にできます。bashsudo systemctl enable apparmor sudo systemctl start apparmor
-
状態確認:
AppArmorのステータスを確認するには、以下のコマンドを実行します。bashsudo apparmor_status
AppArmorプロファイルの管理
AppArmorは、プロファイルファイルを使って、各アプリケーションの動作を制限します。プロファイルは通常、/etc/apparmor.d/
ディレクトリ内に格納されています。
-
プロファイルの表示:
アクティブなプロファイルを表示するには、以下のコマンドを実行します。bashsudo apparmor_status
-
プロファイルの作成:
新しいアプリケーションのプロファイルを作成するには、aa-genprof
コマンドを使用します。このコマンドを使用すると、インタラクティブにプロファイルを作成できます。bashsudo aa-genprof <アプリケーション名>
-
プロファイルの適用:
プロファイルを手動で適用するには、以下のコマンドを実行します。bashsudo apparmor_parser -r /etc/apparmor.d/<プロファイル名>
-
プロファイルの編集:
プロファイルはテキストファイルなので、必要に応じて編集できます。/etc/apparmor.d/
ディレクトリ内の対象のプロファイルファイルをエディタで開き、必要な変更を加えます。
AppArmorのポリシー
AppArmorのプロファイルには、アプリケーションに対するポリシーを定義します。これには、アプリケーションがアクセスするファイルシステムのパス、ネットワークリソース、デバイス、プロセスの制限などが含まれます。
ポリシーの基本的な構造は以下のようになっています:
- 読み取り、書き込み、実行の権限:特定のファイルやディレクトリに対する操作の許可または禁止を定義します。
- デバイス制限:特定のデバイスにアクセスする権限を制限します。
- ネットワーク制限:アプリケーションがどのネットワークリソースにアクセスできるかを制限します。
ポリシーの例:
bash# アプリケーションが /home/user/ 以下のファイルを読み取ることを許可
/home/user/ r,
# /etc/passwd ファイルの読み取りを禁止
/etc/passwd r,
AppArmorの運用と監視
AppArmorの効果的な運用には、定期的な監視とプロファイルの更新が必要です。以下の方法でAppArmorの監視を行うことができます。
-
ログの確認:
AppArmorは、違反が発生した際にログを記録します。ログは/var/log/syslog
または/var/log/audit/audit.log
に保存されます。これらのログを定期的に確認し、アプリケーションの動作が適切かどうかをチェックします。 -
モードの変更:
AppArmorには「強制モード」と「学習モード」があります。強制モードでは、プロファイルに基づいてアクセスを制御し、学習モードではアプリケーションの動作を記録し、プロファイルを自動的に生成することができます。学習モードを使用するには、以下のコマンドを実行します:
bashsudo aa-logprof
-
プロファイルの調整:
運用中に新たな要求が発生した場合、プロファイルを調整する必要があります。aa-logprof
を使用して、新しい要求をプロファイルに追加できます。
AppArmorのベストプラクティス
- 最小権限の原則:アプリケーションには、実行に必要な最小限の権限のみを与えるようにします。
- プロファイルのカスタマイズ:アプリケーションの動作に応じて、プロファイルを適切にカスタマイズし、不要なアクセスをブロックします。
- 定期的な監視とレビュー:AppArmorのログを定期的に確認し、不審なアクセスやエラーがないかを確認します。
まとめ
AppArmorは、Ubuntuにおける強力なセキュリティツールであり、アプリケーションごとにアクセス制御を提供することで、システムの安全性を強化します。適切に構成されたプロファイルにより、アプリケーションの不正アクセスを防ぎ、システム全体のセキュリティを向上させることができます。