AppArmor

AppArmor(Application Armor)とは、Linux Security Modulesの一種であり、各プログラムにセキュリティプロファイルを結びつけ、プログラムのできることに制限をかけるプログラムである。プロファイルは、ネットワークアクセス、Raw socket アクセス、ファイルへの読み書き実行などの機能を制限することができる。
AppArmor - Wikipedia

profile

profileとはあるプログラムのできること(例えば、xxxというファイルにアクセスするなど)を記述したものになっている。

profile mode

  • enforce: 対象のプログラムがプロファイルに違反するとその処理を止める。
  • complain: 対象のプログラムがプロファイルに違反するとその処理をログに残す。
  • unconfined: 対象のプログラムがプロファイルに違反しても何もしない。

コマンド

aa-status, apparmor_status

全てのプロファイルを表示する。

aa-genprof

対話形式でプロファイルを生成してくれる。
このコマンドを実行すると、途中で対象のプログラムを実行するように求められる。
プログラムを実行すると、その実行ログに基づいて、プロファイルを生成してくれる。
作成されたプロファイルは自動でcomplainモードにセットされる。

www.server-world.info

aa-enforce

指定したプログラムのプロファイルをenforceモードに指定する。

aa-complain

指定したプログラムのプロファイルをcomplainモードに指定する。

aa-logprof

対象のプログラムのsyslogを元にプロファイルを更新してくれる。
どのプロファイルを対象とするか、どの挙動をプロファイルに含めるか等は対話形式で選択するようになっている。

aa-unconfined

TCP portやUDP portを開けるにも関わらず、AppArmorプロファイルがロードされていないプログラムの一覧を表示する。

apparmor_parse

profileの追加

apparmor_parser -a プロファイルのファイルパス

profileの削除

apparmor_parser -R プロファイルのファイルパス

profileのreplace

apparmor_parser -r プロファイルのファイルパス

DockerコンテナでAppArmorを使う場合

まず、host側でprofileを登録する。 dockerのコンテナ起動時に以下のようにする。

docker run --security-opt apparmor=プロファイル名 

matsuand.github.io