web-dev-qa-db-ja.com

Apparmor-「すべてを許可する」ルールを適用してから引き締める方法

Apparmorは非常に新しいので、プログラムに簡単な1行の制限を設定することから始めたいと思います。その他はすべてそのままにしておきます。また、他の理由により、この特定の実行可能ファイルを簡単にプロファイルすることはできません。これは、ユーザーログイン時にGDM/gnomeセッションによって起動/ノックオフされるウィンドウマネージャーの一部です。

このような少しを達成したいと思っています:

# Last Modified: Fri Dec 28 09:20:30 2018
#include <tunables/global>

/usr/bin/budgie-panel {

  #include <abstractions/base>

  # allow all rules first
  allow *,

  # Then deny 1 specific dbus bind access
  deny dbus bind name=org.freedesktop.Notifications,

}

しかし、allow *, apparmorプロファイルで「すべて許可」の正しい構文は?これについて説明する明確なドキュメントが見つかりません。

5
Dreamcat4

しかし、allow *,「すべて許可」の正しい構文

すべてを許可するための正しい構文は次のようになります。

profile DAC /path/to/exec {
  # Allow all rules
  capability,
  network,
  mount,
  remount,
  umount,
  pivot_root,
  ptrace,
  signal,
  dbus,
  unix,
  file,
}

実際には、さらに2つのルールがあります。

  1. rlimit(AppArmorはプロファイルに関連付けられたリソース制限を設定および制御できます)
  2. change_profile(制限されたタスクがどのプロファイルにどの権限を移行できるかを制御します)

しかし、この特定のケースでは意味がありません。

2
canondmajor

これは正しいアプローチではありません。

一般に、ブラックリストはセキュリティポリシーの不十分な基盤であり、ホワイトリストに基づいている必要があり、AppArmorの構文はこれに基づいています。そのためには、プロファイルの詳細から開始する必要がありますが、プロファイルアクションを強制する代わりに不平を言うように設定します。これは、プロファイル(flags=(complain))またはaa-complainコマンドを使用して設定できます。次に、操作を許可する特定のディレクティブが冗長になります。

信頼できるドキュメントは SuSEによって発行された だと思います。しかし、簡単に言うと、ファイルアクセスの場合の構成形式は次のとおりです。

<object> <permissions>,

オブジェクトのグロビング(パスの場合)は、コマンドラインでよく知っているものとは少し異なることに注意してください。さらに dbus固有のものはこちら があります。

4
symcbean