EDIT 2021-12-12: Mit der neuen Version der kde-frameworks hat sich wohl einiges geändert. Bitte lies den ganzen Thread.
D.10 AppArmor KDE Profile
Ich sagte ja schon in D.9 "Sicherheit bedeutet auch Einschränkung". Diese Einschränkung gilt für Mensch wie für Anwendung gleichermaßen. Wenn Du Programme nutzt, die mit dem großen Internet sprechen, dann haben diese nun halt mal keinen Zugriff auf Dein /home. Desweiteren dürfen sie regelmäßig auch keine anderen Programme starten oder Links setzen um Restriktionen zu umgehen. Nun gibt es Anwendungen, die auf Deine Daten zugreifen wollen (und müssen damit sie überhaupt arbeiten können) und auch ins Internet wollen. Hier müssen wir uns entscheiden. Glücklicherweise können wir aber zweigleisig fahren.
Ein Beispiel hierfür ist das Programm "gwenview". Es ist fähig Bilder nach Facebook und Co. zu übertragen. Ich nutze das nicht, deswegen habe ich das Profil ONLYLOCAL verwendet. Dies sorgt nun dafür, dass bei jedem Start von gwenview eine AUDIT-Meldung im Systemlog landet, die besagt dass "genview" keinen NETLINK aufbauen darf (keine Sorge, sonst geht alles). (Wenn Dich das optisch stört, dann ändere ONLYLOCAL so ab, dass dies nicht protokolliert wird: Indem Du das "audit" vor den "deny"s löscht).
Wenn Du allerdings mit gwenview ins Internet willst und deshalb ONLYNETWORK statt ONLYLOCAL inkludierst, solltest Du eine Zeile löschen. Diese erlaubt lesenden Zugriff auf alles. Warum ist diese im Profil ? Weil gwenview leider sehr neugierig ist und immer gleich mal das ganze Verzeichnis auslesen möchte. In der lokalen Version ist dies sicherheitsunkritisch. Mit Netzwerk-Zugang MUSS das aber raus, so dass gwenview nur noch Bild-Dateien bearbeiten kann ... was dann aber wieder zu vielen (harmlosen) AUDIT-Meldungen führt (bääh kann das Verzeichnis nicht lesen)(keine Sorge, sonst geht alles).
Tja, einen Tod muss man sterben ... dafür kann ich Dir versichern, dass gwenview - falls es wild läuft - allerhöchstens alle Deine Bild-Dateien löschen oder verschlüsseln kann, aber nicht an Deine Buchhaltungs-Daten rankommt. Wenn Du jetzt sagst, Du willst mit gwenview nur die Bilder ansehen, aber gar nichts speichern, dann modifiziere den Zugriff von "rw" auf "r". Jetzt könnte Gwenview nichts mehr schreiben und sollte - selbst mit Internet-Zugang - sehr sicher sein (schlimmstenfalls könnte es nur noch Deine Bild-Dateien übertragen).
Aber auch Du musst Dich einschränken. Alle Programme mit Internet-Zugang können nur auf das Verzechnis /home/*/Downloads zugreifen. Wenn Du mit Deinem Browser versuchst Deinen Download woanders zu speichern wird dies schief gehen (keine Sorge der Browser stürzt nicht ab; also versuche es ruhig). Außerdem lasse ich meinen Browser einfach nicht alles mögliche starten. Wozu auch ? Brauche ich das wirklich ? Solange ich das PDF runterladen kann und mir dann lokal ansehen kann. Hauptsache die Videos auf Youtube werden ordentlich angezeigt. (Für den konqueror habe ich sogar okular integriert; nur beim falkon hatte ich keine Lust mehr).
Ein letztes Wort ... zu Java. Habe ich nicht. Nutze ich nicht. Will ich nicht. Und kann mein Browser auch nicht. Wenn Du Deinen Browser mit Java haben willst, solltest Du ernsthaft an eine eigene virtuelle Maschine denken. Ich will jetzt nicht schlecht über die EP reden, aber nach meinem Verständnis ist das AA-Profil dort nur ein Feigenblatt ... der Browser hat Zugriff auf alles und kann jedes Programm starten ... das bedeutet, Du bist nur so geschützt wie Linux es mit DAC bietet. Dann kann man so ein Profil auch besser gleich weglassen ... Sorry - ich mag es einfach nicht, wenn man Leuten eine Sicherheit vorgaukelt, die einfach nicht gegeben ist (deswegen bin ich auch so kritisch mit FDE).
Ich werde für jede Anwendung die Besonderheiten erläutern. Los gehts mit den ...
Anwendungen ohne Netzwerk-Zugriff
- Profile: /etc/apparmor.d/usr.bin.mupdf-gl
- Beschreibung/Bemerkung: Bei mir ist der mupdf ein Link auf mupdf-gl. Überprüfe das bei Dir. Dies ist die PARANOID-Version, die nur lesenden Zugriff auf .pdf- oder .PDF-Dateien erlaubt. Du kannst dies natürlich bei Bedarf ändern. Falls der mupdf auch noch andere Dateiformate lesen kann, kannst Du dies sicher auch ganz einfach erweitern.
Code: Select all
# version 1
abi <kernel>,
include <local/VARIABLES>
@{SFX}=pdf PDF
profile mupdf-gl /usr/bin/mupdf-gl
{
include <local/ONLYLOCAL>
include <local/ISAKDE>
@{MYDATADIRS}/**.@{SFX} r,
}- Profile: /etc/apparmor.d/usr.bin.okular
- Beschreibung/Bemerkung: Dies ist die lokale Version. Es geht also alles bis auf Netzwerk-Funktionen. Was die Dateiformate betrifft gilt das gleich wie für den mupdf. Bitte verwechsle dieses Profil nicht mit dem beim konqueror. Der lädt okular mit SEINEM Profil, so dass dort okular auf keine lokalen Daten zugreifen kann (außer /home/*/Download). Okular schmeisst ab und zu harmlose AUDITs ins log.
Code: Select all
# version 1
abi <kernel>,
include <local/VARIABLES>
@{SFX}=pdf PDF
profile okular /usr/bin/okular
{
include <local/ONLYLOCAL>
include <local/ISAKDE>
# include <local/USECUPS>
owner /home/*/.local/share/okular/** rw,
owner /home/*/.local/share/okular/bookmarks* l -> /home/*/.local/share/okular/#[0-9]*,
@{MYDATADIRS}/**.@{SFX} rw,
}- Profile: /etc/apparmor.d/usr.bin.gwenview
- Beschreibung/Bemerkung: Siehe Einleitung. Die Dateiformate sind auch nicht vollständig. Ja, man könnte in dieser lokalen Version auch das erlauben: @{MYDATADIRS}/** rw, ... aber ich bin halt ... vorsichtig.
Code: Select all
# version 1
abi <kernel>,
include <local/VARIABLES>
@{SFX}=jpg JPG Jpg jpeg JPEG pic PIC Pic png PNG Png gif GIF Gif bmp BMP Bmp tif TIF tiff TIFF
profile gwenview /usr/bin/gwenview
{
include <local/ONLYLOCAL>
include <local/ISAKDE>
# include <local/USECUPS>
owner /home/*/.local/share/gwenview/** rw,
@{MYDATADIRS}/**.@{SFX} rw,
# delete this line if you switch to ONLYNETWORK
# (then you will have many entries in your syslog; dont care - gwenview still works)
/** r,
}Anwendungen mit Netzwerk-Zugriff
- Profile: /etc/apparmor.d/usr.bin.wesnoth
- Beschreibung/Bemerkung: Das Spiel Wesnoth
Code: Select all
# version 1
abi <kernel>,
profile wesnoth /usr/bin/wesnoth
{
include <local/ONLYNETWORK>
include <local/ISAKDE>
include <local/USESOUND>
owner /home/*/.local/share/wesnoth/** rw,
/var/cache/fontconfig/ r,
/usr/share/wesnoth/fonts/* rw,
}Anwendungen mit Netzwerk-Zugriff die mit der QTWebEngine kommunizieren
- Profile: /etc/apparmor.d/usr.bin.marble
- Beschreibung/Bemerkung: Marble
Code: Select all
# version 2
abi <kernel>,
profile marble /usr/bin/marble
{
include <local/ONLYNETWORK>
include <local/ISAKDE>
include <local/USEQTWEBENGINE>
# include <local/USECUPS>
/** k,
owner /home/*/.local/share/marble/** rw,
owner /home/**/.directory r,
}- Profile: /etc/apparmor.d/usr.bin.konqueror
- Beschreibung/Bemerkung: Der Webbrowser Konqueror. Mit diesem Profil kann der konqueror nur okular starten um PDFs direkt anzeigen zu lassen. Sonstiges lasse ich ihn nicht starten. Veraltet: Wenn ich mit einem Rechts-Klick auf einen Link klicke, geht zwar alles; dies erzeugt aber einen AUDIT dass er /usr/bin/ldd nicht starten konnte. Wenn Du Datei öffnen wählst, gibts auch ein paar AUDITs - keine Sorge Du kommst problemlos in Downloads rein.
Code: Select all
# version 1
abi <kernel>,
profile konqueror /usr/bin/konqueror
{
include <local/ONLYNETWORK>
include <local/ISAKDE>
include <local/USESOUND>
# include <local/USECUPS>
# include <local/USEWEBCAM>
/usr/lib64/qt5/libexec/QtWebEngineProcess ix,
/usr/bin/keditbookmarks ix,
/dev/ r,
/dev/shm/.org.chromium.* rwk,
/proc/*/oom_score_adj rw,
ptrace (read, readby) peer=konqueror,
owner /home/*/.local/share/konqueror/** rwk,
owner /home/*/.local/share/konqueror/* l -> /home/*/.local/share/konqueror/#[0-9]*,
owner /home/*/.local/share/konqueror/autosave/* l -> /home/*/.local/share/konqueror/autosave/#[0-9]*,
owner /home/*/.pki/** wrk,
### okular needs
/usr/bin/okular ix,
owner /home/*/.local/share/okular/** rw,
owner /home/*/.local/share/okular/bookmarks* l -> /home/*/.local/share/okular/#[0-9]*,
}- Profile: /etc/apparmor.d/usr.bin.falkon
- Beschreibung/Bemerkung: Der Webbrowser Falkon. Mit diesem Profil kannst Du keine externen Programme starten - der falkon auch nicht. "Verknüpfung senden" geht auch nicht (hab ich noch nie benutzt). Wenn Du Datei öffnen wählst, gibts auch ein paar AUDITs - keine Sorge Du kommst problemlos in Downloads rein.
Code: Select all
# version 1
abi <kernel>,
profile falkon /usr/bin/falkon
{
include <local/ONLYNETWORK>
include <local/ISAKDE>
include <local/USESOUND>
# include <local/USECUPS>
# include <local/USEWEBCAM>
/usr/lib64/qt5/libexec/QtWebEngineProcess ix,
# needed for private mode
/usr/bin/falkon ix,
/dev/ r,
/dev/shm/.org.chromium.* rwk,
/proc/*/oom_score_adj rw,
ptrace (read, readby) peer=falkon,
owner /home/*/.config/falkon/profiles/*/* l -> /home/*/.config/falkon/profiles/*/#[0-9]*,
owner /home/*/.pki/** wrk,
}Du bist herzlich eingeladen diesen Thread mit Deinen Profilen zu erweitern.
.
