私のシステム内の特定のdbus通信を制限するためにapparmorを使用したいと思います。ただし、次の行がsyslog
に表示されます。
Dec 28 09:36:21 apex snapd[1127]: AppArmor status: apparmor is enabled but some features are missing: dbus, network
次のapparmorプロファイルでテストしました。悲しいことに、それはDBUSを制限しません:_(
# Last Modified: Fri Dec 28 09:20:30 2018
#include <tunables/global>
/usr/bin/budgie-panel {
#include <abstractions/base>
# allow all rules
allow *,
# Then deny bind access, for the program /usr/bin/budgie-panel,
# on any bus (either the user's session bus, or the system wide bus),
# to prevent registering the dbus endpoint address "org.freedesktop.Notifications"
#
# This is to keep the address free, for other notification daemons to use
# (such as 'dunst', or 'mako', which provide multi-monitor support)
# This will also mean budgie cannot receive notifications (raven sidebar, and applets)
#
deny dbus bind name=org.freedesktop.Notifications,
}
まあまあ、カーネルフラグがあるはずですか。カーネルでこの機能が有効になっているかどうかを確認するには、/sys/kernel/security/apparmor/features/dbus
にmask
という名前のファイルを含むフォルダーが必要です。しかし、そのフォルダは私のシステムにありません。
おそらく、これは pdate_ubuntu_kernel.sh の使用に切り替えたためです。 https://kernel.ubuntu.com/ から.deb
カーネルパッケージを取得します。それらは典型的な/標準のUbuntuカーネルではありませんか? ubuntu自身のドキュメントによれば、ubuntu 13.10以降、apparmorのdbus機能は存在するはずです。
$ uname -a
Linux apex 4.20.0-042000-lowlatency #201812232030 SMP PREEMPT Mon Dec 24 01:42:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
それで! ...カーネルブートフラグを有効にする方法を知りたいのですが。または、モジュール(modprobe
)をロードします。または、これらの新しいLinuxカーネルでこの機能を動作させるために必要なその他の手順。何を探す/検索するのかわからない!
Apparmorのdbusメディエーションには、apparmorユーザー空間、カーネル、dbusデーモンの協力が必要です。すべてのパーツに必要なサポートが含まれている必要があります。そうでない場合、dbusメディエーションは有効になりません。
あなたの説明から、apparmorユーザー空間とdbusデーモンはdbusメディエーションをサポートするはずですが、カーネルはサポートしません。現在、dbusメディエーションには、現在のリリースでUbuntuカーネルがソースパッチとして実行しているaf_unixソケットにきめ細かなメディエーションを提供するツリー外パッチが必要です。
アップストリームカーネル(リリースされたばかりの4.20および次のリリース4.21を含む)は、きめの細かいaf_unixメディエーションをまだサポートしていません。最近の4.18、4.19、および4.20カーネルにはいくつかの必須パッチが上陸しており、アップストリームのapparmorプロジェクトは4.22でaf_unixメディエーションが細かく上陸することを望んでいます。