ウェブサイト検索

Ubuntu の AppArmor プロファイル


Linux カーネル セキュリティ モジュールである AppArmor は、アプリケーション固有のプロファイルを使用して、インストールされたソフトウェアによるシステム アクセスを制限できます。 AppArmor は、必須アクセス制御または MAC システムとして定義されます。一部のプロファイルはパッケージのインストール時にインストールされ、AppArmor には apparmor-profiles パッケージからの追加プロファイルがいくつか含まれています。 AppArmor パッケージはデフォルトで Ubuntu にインストールされ、システム起動時にすべてのデフォルト プロファイルがロードされます。プロファイルには、etc/apparmor.d/. に保存されているアクセス コントロール ルールのリストが含まれています。

インストールされているアプリケーションの AppArmor プロファイルを作成して、そのアプリケーションを保護することもできます。 AppArmor プロファイルは、「苦情」モードまたは「強制」モードの 2 つのモードのいずれかになります。システムはルールを強制せず、苦情モードの場合、プロファイル違反はログとともに受け入れられます。このモードは、新しいプロファイルをテストして開発するのに適しています。ルールはシステムによって強制モードで強制され、アプリケーション プロファイルで違反が発生した場合、そのアプリケーションに対する操作は許可されず、レポート ログが syslog または Auditd に生成されます。 syslog には、/var/log/syslog の場所からアクセスできます。システムの既存の AppArmor プロファイルを確認する方法、プロファイル モードを変更する方法、および新しいプロファイルを作成する方法については、この記事で説明します。

既存の AppArmor プロファイルを確認する

apparmor_status コマンドは、ロードされた AppArmor プロファイルのリストとステータスを表示するために使用されます。 root権限でコマンドを実行します。

$ sudo apparmor_status

プロファイル リストは、オペレーティング システムおよびインストールされているパッケージに応じて変更できます。次の出力は Ubuntu 17.10 で表示されます。 23 個のプロファイルが AppArmor プロファイルとしてロードされ、すべてがデフォルトで強制モードとして設定されていることが示されています。ここでは、dhclient、cups-browsed、cupsd の 3 つのプロセスが強制モードのプロファイルによって定義されており、コンプレイン モードのプロセスはありません。定義されたプロファイルの実行モードを変更できます。

プロファイル モードを変更

任意のプロセスのプロファイル モードを、文句なしから強制へ、またはその逆に変更できます。この操作を行うには、apparmor-utils パッケージをインストールする必要があります。次のコマンドを実行し、インストールの許可を求められたら「Y」を押します。

$ sudo apt-get install apparmor-utils

dhclient という名前のプロファイルがあり、強制モードとして設定されています。次のコマンドを実行して、モードをコンプレイン モードに変更します。

$ sudo aa-complain /sbin/dhclient

ここで、AppArmor プロファイルのステータスを再度確認すると、dhclient の実行モードがコンプレイン モードに変更されていることがわかります。

次のコマンドを使用して、モードを強制モードに再度変更できます。

$ sudo aa-enforce /sbin/dhclient

すべての AppArmore プロファイルの実行モードを設定するパスは /etc/apparmor.d/* です。

次のコマンドを実行して、すべてのプロファイルの実行モードをコンプレイン モードに設定します。

$ sudo aa-complain /etc/apparmor.d/*

次のコマンドを実行して、すべてのプロファイルの実行モードを強制モードに設定します。

$ sudo aa-enforce /etc/apparmor.d/*

新しいプロフィールを作成する

インストールされているすべてのプログラムは、デフォルトでは AppArmore プロファイルを作成しません。システムをより安全に保つために、特定のアプリケーション用に AppArmore プロファイルを作成する必要がある場合があります。新しいプロファイルを作成するには、どのプロファイルにも関連付けられていないが、セキュリティが必要なプログラムを見つける必要があります。リストを確認するには、app-unconfined コマンドを使用します。出力によると、最初の 4 つのプロセスはどのプロファイルにも関連付けられておらず、最後の 3 つのプロセスはデフォルトで強制モードの 3 つのプロファイルによって制限されています。

$ sudo aa-unconfined

制限されていない NetworkManager プロセスのプロファイルを作成するとします。 aa-genprof コマンドを実行してプロファイルを作成します。 「F」と入力してプロファイル作成プロセスを終了します。新しいプロファイルはデフォルトで強制モードで作成されます。このコマンドは空のプロファイルを作成します。

$ sudo aa-genprof NetworkManager

新しく作成されたプロファイルにはルールが定義されていないため、次のファイルを編集してプログラムに制限を設定することで、新しいプロファイルの内容を変更できます。

$ sudo cat /etc/apparmor.d/usr.sbin.NetworkManager

すべてのプロファイルを再読み込み

プロファイルを設定または変更した後は、プロファイルを再ロードする必要があります。次のコマンドを実行して、既存のすべての AppArmor プロファイルを再ロードします。

$ sudo systemctl reload apparmor.service

次のコマンドを使用して、現在ロードされているプロファイルを確認できます。出力には、NetworkManager プログラムの新しく作成されたプロファイルのエントリが表示されます。

$ sudo cat /sys/kernel/security/apparmor/profiles

したがって、AppArmor は、重要なアプリケーションに必要な制限を設定することでシステムを安全に保つための便利なプログラムです。

関連記事: