防具とは何ですか?


93

私は防具について多くの話を聞きます、私は次を知りたいです:

  • 防具とは何ですか?
  • apparmorはどのように機能しますか?

回答:


92

それは何ですか

Apparmorは、必須アクセス制御(またはMAC)システムです。LSMカーネル拡張機能を使用して、プログラムを特定のリソースに制限します。AppArmorは、システムの起動時にカーネルにロードされたプロファイルでこれを行います。Apparmorには、強制と苦情の2種類のプロファイルモードがあります。強制モードのプロファイルは、そのプロファイルのルールを強制し、syslogまたはで違反の試みを報告しauditdます。苦情モードのプロファイルは、プロファイルルールを強制せず、違反の試みを記録するだけです。

Ubuntuでは、デフォルトでApparmorがインストールされます。アプリケーションをプロファイルに限定し、プログラムがアクセスする必要があるファイルと権限を決定します。一部のアプリケーションには独自のプロパティが付属し、さらに多くのapparmor-profilesパッケージがパッケージに含まれています。

を実行apparmor-profilesしてインストールできsudo apt-get install apparmor-profilesます。

この投稿のために書き直したUbuntuフォーラムで、Apparmorの良い例を見つけました。

Apparmorは、アプリケーションが悪を回すのを防ぐセキュリティフレームワークです。たとえば、Firefoxを実行して、homeフォルダーを削除するマルウェアをインストールしようとする悪いサイトにアクセスすると、ApparmorにはFirefoxに制限がありますが、Firefoxは望ましくないこと(音楽、ドキュメントなどにアクセスするなど)を実行できません。この方法では、アプリケーションが危険にさらされても、害はありません。

使い方

apparmor-utilsパッケージには、AppArmorのを設定するためのコマンドラインツールが含まれています。これを使用して、Apparmorの実行モードを変更したり、プロファイルのステータスを検索したり、新しいプロファイルを作成したりできます。

これらは最も一般的なコマンドです:

注:プロファイルはに保存されます/etc/apparmor.d/

  • Apparmorのステータスはで確認できますsudo apparmor_status。*ロードされたすべてのプロファイル、強制モードのすべてのプロファイル、苦情モードのすべてのプロファイル、強制/苦情で定義されているプロセスなどのリストを取得します。
  • プロファイルを苦情モードにするにはsudo aa-complain /path/to/bin、を使用します。ここ/path/to/binで、はプログラムbinフォルダです。たとえば、running:sudo aa-complain /usr/bin/firefoxはFirefoxをコンプレインモードにします。
  • sudo aa-enforce /path/to/binプログラムプロファイルを実施するために使用します。
  • およびを使用して、すべてのプロファイルを苦情/強制モードにロードできます。 sudo aa-complain /etc/apparmor.d/*sudo aa-enforce.d/*

プロファイルをカーネルにロードするには、を使用しますapparmor_parser-rパラメーターを使用してプロファイルを再ロードできます。

  • プロファイルをロードするには、を使用します。cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aこれにより、のコンテンツがprofile.nameApparmorのパーサーに効果的に出力されます。
  • プロファイルをリロードするには-r、次のようにパラメーターを使用します。cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Apparmorのすべてのプロファイルをリロードするには、次を使用します。 sudo service apparmor reload

プロファイルを無効にするには、リンクにそれを/etc/apparmor.d/disable/使用してln、次のように: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/その後、実行しますsudo apparmor_parser -R /etc/apparmor.d/profile.name

注:混同しないでくださいapparmor_parser -rapparmor_parser -R 彼らは同じものではありません!

  • プロファイルを再度有効にするには、プロファイルへのシンボリックリンクを削除してから/etc/apparmor.d/disable/-aパラメーターを使用してロードします。sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • を使用してApparmorを無効にしsudo service apparmor stop、カーネルモジュールを削除できます。sudo update-rc.d -f apparmor defaults
  • Apparmorを起動しsudo service apparmor start、カーネルモジュールをロードしますsudo update-rc.d apparmor defaults

プロフィール

プロファイルは/etc/apparmor.d/、プロファイルの実行可能ファイルへの完全パスに基づいて保存され、「/」を「。」に置き換えて名前が付けられます。例えば/etc/apparmor.d/bin.pingのためのプロファイルであるpingの中で/bin

プロファイルで使用されるエントリには、主に2つのタイプがあります。

  1. パスエントリは、アプリケーションがアクセスできるファイルを決定します。

  2. 機能エントリは、プロセスが使用できる特権を決定します。

例としてping、にあるのプロファイルを見てみましょうetc/apparmor.d/bin.ping

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>ファイルglobalをディレクトリtunablesに含めます。これにより、複数のアプリケーションに関連するステートメントを共通ファイルに配置できます。

/bin/ping flags=(complain)プロファイルされたプログラムへのパスを設定し、文句を言うモードを設定します。

capability net_rawアプリケーションがCAP_NET_RAW Posix.1e機能にアクセスできるようにします。

/bin/ping mixr アプリケーションによるファイルへの読み取りおよび実行アクセスを許可します。

/etc/modules.conf r,rアプリケーションが与える読みの権限を/etc/modules.conf

注:プロファイルを作成/編集した後、変更を有効にするにはプロファイルをリロードする必要があります。

使用できる権限のリストは次のとおりです。

  • r -読む
  • w - 書く
  • ux -制約のない実行
  • Ux -制約のない実行-環境をスクラブ
  • px -個別プロファイルの実行
  • Px -個別プロファイルの実行-環境をスクラブ
  • ix -実行を継承
  • m -許可PROT_EXECmmap(2)の通話
  • l -リンク

ソース


それは、ユーザーとして動作し、システム上のほとんどのファイルを変更する権限を持っていないプログラムのようなものですか?
イズカタ

はいといいえ。特定のアプリケーションでできることを定義するプロファイルを設定します。次に、そのプロファイルにプログラムを追加すると、そのプロファイル内のプログラムが実行できることを制限します。そのため、管理者(あなた)がプロファイルでできると言っているものにしかアクセスできないため、ユーザーのようです。
セス

ああ、プロファイルはプログラムのユーザーグループのようなものです;)
Izkata

はい、そうです;)
セス

apparmorを使用して、すべてのインターネット接続をブロックし、誰がアクセスしようとしているのかを言うことができると思いますか?そのログに基づいて、各アプリケーションの権限を作成しますか?それはwindow $のZonalarmのように動作させ、LeopardFlowerやProgramGuardのようなLinuxの古い「アプリケーションごとのファイアウォール」のように動作させることです(これらはもはやコンパイル可能ではないようです)。物事を機能させるカーネルモジュール。
アクエリアスパワー14年

6

AppArmorはMandatory Access Control(MAC)システムであり、限られたリソースのセットにプログラムを限定するカーネル(LSM)拡張です。AppArmorのセキュリティモデルは、アクセス制御属性をユーザーではなくプログラムにバインドすることです。AppArmorの制限は、通常ブート時にカーネルにロードされるプロファイルを介して提供されます。AppArmorプロファイルは、強制と苦情の2つのモードのいずれかになります。施行モードでロードされたプロファイルは、プロファイルで定義されたポリシーの施行に加えて、ポリシー違反の試行を報告します(syslogまたはauditdを介して)。苦情モードのプロファイルはポリシーを強制しませんが、代わりにポリシー違反の試みを報告します。

AppArmorは、パスベースであり、強制モードプロファイルと苦情モードプロファイルの混合を可能にし、インクルードファイルを使用して開発を容易にし、他の一般的なMACシステムよりもはるかに低い障壁を持つという点で、Linux上の他のいくつかのMACシステムとは異なります。

AppArmorは、Immunixで最初に見られ、後にUbuntu、Novell / SUSE、およびMandrivaに統合された確立されたテクノロジーです。AppArmorのコア機能は、2.6.36以降のメインラインLinuxカーネルに含まれています。AppArmor、Ubuntu、およびその他の開発者は、追加のAppArmor機能をメインラインカーネルにマージするための作業を継続しています。

あなたに役立つリンクがいくつかありました:Wiki.Ubuntu.com Ubuntuforums.org

Ubuntu 12.04およびUbuntu 12.10の Apparmorガイド

それがあなたを助けることを願っています。


3

これはApparmor wikiからの引用です:

AppArmorは、効果的で使いやすいLinuxアプリケーションセキュリティシステムです。AppArmorは、適切な動作を強制し、未知のアプリケーションの欠陥の悪用を防止することにより、ゼロデイ攻撃などの外部または内部の脅威からオペレーティングシステムとアプリケーションをプロアクティブに保護します。AppArmorセキュリティポリシーは、個々のアプリケーションがアクセスできるシステムリソースと、特権を完全に定義します。AppArmorには多くのデフォルトポリシーが含まれており、高度な静的分析と学習ベースのツールの組み合わせを使用して、非常に複雑なアプリケーションのAppArmorポリシーも数時間で正常にデプロイできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.