UbuntuでのAppArmorの使い方

Ubuntu Apparmor Featured

Ubuntuを使用しているときにAppArmorという名前を聞いたことがあるかもしれませんが、アプリケーションメニューに表示されず、グラフィカルな形でも現れないため、それが何をするものなのか、なぜシステムにとって重要なのかを知らない人もいるかもしれません。簡単に言うと、AppArmorは、個々のプログラムを設定されたファイルと機能のリストに制限するセキュリティモジュールであり、これによりシステムに悪影響を及ぼさないようにするものです。

Linuxシステムを安全に保つために、SELinuxとAppArmorの違いを学びましょう。

目次

  • AppArmorとは?
  • AppArmorの動作
  • AppArmorのステータスを確認する
  • 無効になったAppArmorプロファイルを見つける
  • AppArmorプロファイルの有効化と無効化
  • AppArmorプロファイルはどのようなものか?
  • アプリケーションを制限するための独自のプロファイルを作成する
  • AppArmorの停止と再起動
  • よくある質問

AppArmorとは?

AppArmorは、プログラムが限られたリソースのセットに制限されるMandatory Access Control (MAC) システムです。プログラムは、システムの奥深くに入り込み混乱を引き起こさないように、ファイル、属性、機能のセットに制限されます(許可が与えられない限り)。Windowsのユーザーアカウント制御(UAC)モデルのようにユーザーに制御権を与えるのではなく、AppArmorはアクセス制御属性をプログラム自体に結びつけます。

AppArmorの動作

AppArmorはカーネルレベルで動作し(独自のカーネルをコンパイルする際のヒントをチェックしてください)、初回ブート時にロードされます。AppArmorは、プログラムが何をできるか、できないかを定義する一連のルールであるプロファイルを介して権限を管理します。

プロファイルは、「強制」と「報告」の2つのモードで実行できます。強制モードは、プロファイルで定義されたポリシーを厳密に適用し、ポリシー違反の試みを報告します。報告モードはポリシー違反の試みのみを報告し、ポリシーを適用しません。ほとんどのプロファイルは強制モードでロードされますが、報告モードでロードされるサードパーティプロファイルもかなりの数あります。

AppArmorのステータスを確認する

Ubuntu 7.04以上を使用している場合、AppArmorはデフォルトでインストールされており、コンピュータを起動するときにロードされます。AppArmorのステータスを確認するには、ターミナルに以下のコマンドを入力します:

sudo apparmor_status

以下の画像に表示される内容が見られます。

Ubuntu Apparmor Sudo Status

私のシステムでは、36個のプロファイルが強制モードで読み込まれていることが確認できます。

無効になったAppArmorプロファイルを見つける

AppArmorには、いくつかのプリロードされたプロファイルが含まれており、その中にはデフォルトで無効になっているものがあります。これらは「/etc/apparmor.d/disable」フォルダで確認できます。最新バージョンのAppArmorでは、rsyslogdプロファイルが有効になっていないことがわかります。

Ubuntu Apparmor Disable Folder Usr Sbin Rsyslogd

このプロファイルはデフォルトで無効です。これは、ユーザーがrsyslogdに対して行った構成変更が、AppArmorと互換性がなくなることが多いためです。

ヒント:Webminを使用してUbuntuマシンをリモート管理する方法を学びましょう。

AppArmorプロファイルの有効化と無効化

システムに複数のプロファイルを読み込むことができますが、各プロファイルは個別に有効または無効にすることができます。例えば、先ほど述べたrsyslogdプロファイルを有効にすることができます。以下の手順に従って学びましょう。

ターミナルを開き、以下のコマンドを入力します:

sudo apt install apparmor-utils

これにより、このチュートリアルの後続のコマンドを実行するために必要なツールがインストールされます。プロファイルを有効にするには、以下のコマンドを入力します:

sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogd

無効にするには、以下のように入力します:

sudoln-s/etc/apparmor.d/usr.sbin.rsyslogd /etc/apparmor.d/disable/  
sudo apparmor_parser -R/etc/apparmor.d/usr.sbin.rsyslogd

AppArmorプロファイルはどのようなものか?

AppArmorプロファイルは複雑なソフトウェアのように聞こえますが、実際には、アプリケーションがアクセスできるフォルダやディレクトリを記述したファイルパスを持つ簡単なテキストファイルです。「/etc/apparmor.d」フォルダ内の任意のプロファイルをダブルクリックすると、簡単にテキストエディタで開くことができます。

Rsyslogdプロファイルは以下の画像のようになります。

Ubuntu Apparmor Rsyslogd Profile Text View

アプリケーションを制限するための独自のプロファイルを作成する

Ubuntuはすでにかなり良好な保護を提供していますが、Ubuntuによって保護されていないカスタムアプリケーションを制限したい場合、アプリケーションをロックダウンするための独自のAppArmorプロファイルを作成することができます。これは、バックグラウンドで実行されるアプリケーションがあるサーバーで特に有用です。

注意:独自のプロファイルを作成する前に、アプリケーション用のプロファイルが利用可能かどうかを確認するために、既存のAppArmorプロファイルライブラリを先に調べることをお勧めします。また、apparmor-profilesをインストールして、追加のプロファイルリストを入手することもできます。

プロファイリングを開始するには、以下のコマンドを実行します:

sudo aa-genprof /path/to/application

/path/to/applicationは、プロファイルを付けたいアプリケーションのファイルパスです。デフォルトのアプリケーションフォルダーは「/usr/bin」ですが、アプリケーションやインストール方法によって異なる場合があります(例:”/snap/bin”)。

Ubuntu Apparmor Aa Genprof Snap Bin Krita

ターミナルを実行したままで、プロファイルを作成するアプリケーションを開始します。この例では、Kritaを使用します。通常通りアプリケーションを使用します。

アプリケーション上で行ったすべてのアクションについて、ターミナルに戻ってShift + Sを押すと変更をスキャンします。

Ubuntu Apparmor Aa Genprof Shift S

ここから、アプリケーションがアクセスしているパスとアクションの重大度を見ることができます。「Allow (A)」または「Deny (D)」のアクションを選択します。

この操作をアプリケーション上で行った他のアクションに対しても繰り返します。最良の結果を得るためには、プロファイリングを開始する前にアクションのリストを計画しておくことをお勧めします。

最後に、完了したらShift + Fを押してプロファイリングを終了し、Shift + Sを押してプロファイルを保存します。

作成されると、プロファイルは「/etc/apparmor.d」フォルダに保存され、強制モードでロードされます。

プロファイルの編集

新しく作成したプロファイルを編集するには、以下のコマンドを使用します:

sudo aa-logprof /etc/apparmor.d/

この場合、は、前にaa-genprofコマンドを使用して作成された新しいプロファイルの名前に置き換えます。

AppArmorはログエントリをスキャンし、プロファイルに変更を加えることを許可します。

AppArmorの停止と再起動

何らかの理由でAppArmorを停止する必要がある場合、次のコマンドで簡単に停止できます:

sudo service apparmor stop

このコマンドでステータスを確認して、停止したことを確認できます:

systemctl status apparmor

Ubuntu Apparmor Disabled

そして、再びAppArmorを起動するには:

sudo service apparmor restart

再度ステータスを確認すると、AppArmorが動作していることを示す緑のランプが表示されます。

Ubuntu Apparmor Enabled

独自のサーバーを運営している場合は、Linuxサーバーを保護するためのヒントを確認してください。

よくある質問

なぜAppArmorはデフォルトでrsyslogを無効にするのですか?

rsyslogは、システムログの処理を含む設定可能なソフトウェアであり、ログメッセージを異なる宛先に受信、変換、配信します。そのAppArmorプロファイル「usr.sbin.rsyslogd」は含まれていますが、デフォルトで無効になっています。

CanonicalのエンジニアJamie Strandbogeによると、rsyslogが非常に設定可能であるため、プロファイルが常に正しく機能しない可能性があるため、このような事態が発生しているとのことです。

AppArmorバージョン2と3の違いは何ですか?

AppArmor 3.xは、2020年10月1日にリリースされたAppArmorの最新バージョンであり、重要な拡張が行われています。AppArmor 2.xは非常に古く、2007年頃にリリースされています。どうやら2.xシリーズのアクティブな開発はもはや行われないようです。最新のバージョン2.13.6は2020年12月にリリースされ、AppArmor 2.14は開発ウェブサイトで「キャンセルされた」とされています。AppArmor 3.0.7は2022年8月9日にリリースされました。

AppArmorがある場合、依然としてウイルス対策が必要ですか?

はい、AppArmorを実行している場合でも、ウイルス対策プログラムは依然として必要です。両者は全く異なる機能を持ち、互いに補完しあいます。Linuxシステムはマルウェアの作成者に対してターゲットにされることが少ないとはいえ、Ubuntuにウイルス対策を持つことは良いことです。

バイナリブロブとは何か、なぜそれがセキュリティリスクなのかについて学んでください。Linux-Libreがどのようにして通常のLinuxよりも優れた保護を提供できるかを知ってください。

すべてのスクリーンショットはBrandon Liによるものです。