AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y...
Transcript of AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y...
![Page 1: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/1.jpg)
AppArmorPraktikum angewandte Systemsoftwaretechnik
11.11.2019
Michael Kupfer, Kay Friedrich
Friedrich-Alexander-Universität Erlangen-Nürnberg
Lehrstuhl für Verteilte Systeme und Betriebssysteme
![Page 2: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/2.jpg)
Motivation
![Page 3: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/3.jpg)
Motivation
Standardmäßig: Discretionary Access Control (DAC)Ressourcen werden Benutzern und Gruppen zugeordnetProzesse sind zur Laufzeit einem Benutzer zugeordnetZugriffe auf Ressourcen werden augrund des Benutzers erlaubtoder abgelehnt
Sehr grobe ZugriffsbeschränkungProzesse haben mehr Rechte als sie tatsächlich benötigenKann für Sicherheitslücken/Rechteausweitung genutzt werden
→ AppArmor:Mandatory Access Control (MAC)Feingranularere Vergabe von Rechten
1
![Page 4: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/4.jpg)
Motivation
Standardmäßig: Discretionary Access Control (DAC)Ressourcen werden Benutzern und Gruppen zugeordnetProzesse sind zur Laufzeit einem Benutzer zugeordnetZugriffe auf Ressourcen werden augrund des Benutzers erlaubtoder abgelehnt
Sehr grobe ZugriffsbeschränkungProzesse haben mehr Rechte als sie tatsächlich benötigenKann für Sicherheitslücken/Rechteausweitung genutzt werden
→ AppArmor:Mandatory Access Control (MAC)Feingranularere Vergabe von Rechten
1
![Page 5: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/5.jpg)
Motivation
Standardmäßig: Discretionary Access Control (DAC)Ressourcen werden Benutzern und Gruppen zugeordnetProzesse sind zur Laufzeit einem Benutzer zugeordnetZugriffe auf Ressourcen werden augrund des Benutzers erlaubtoder abgelehnt
Sehr grobe ZugriffsbeschränkungProzesse haben mehr Rechte als sie tatsächlich benötigenKann für Sicherheitslücken/Rechteausweitung genutzt werden
→ AppArmor:Mandatory Access Control (MAC)Feingranularere Vergabe von Rechten
1
![Page 6: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/6.jpg)
Entwicklungsgeschichte
![Page 7: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/7.jpg)
Entwicklungsgeschichte
90er Jahre: Vorgänger SubDomain
Nicht das einzige Projekt, das diesen Ansatz verfolgtKein Projekt soll im Kernel bevorzugt werdenEntwicklung des Linux Security Module (LSM)→ bietet einheitliche Schnittstelle
SubDomain wird zur Nutzung von LSM umgeschrieben
2005: Umbenennung in AppArmor und Aufnahme desKernel-Moduls in den Upstream Kernel
2009: Canonical übernimmt Entwicklung von AppArmor
2
![Page 8: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/8.jpg)
Entwicklungsgeschichte
90er Jahre: Vorgänger SubDomain
Nicht das einzige Projekt, das diesen Ansatz verfolgtKein Projekt soll im Kernel bevorzugt werdenEntwicklung des Linux Security Module (LSM)→ bietet einheitliche Schnittstelle
SubDomain wird zur Nutzung von LSM umgeschrieben
2005: Umbenennung in AppArmor und Aufnahme desKernel-Moduls in den Upstream Kernel
2009: Canonical übernimmt Entwicklung von AppArmor
2
![Page 9: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/9.jpg)
Entwicklungsgeschichte
90er Jahre: Vorgänger SubDomain
Nicht das einzige Projekt, das diesen Ansatz verfolgtKein Projekt soll im Kernel bevorzugt werdenEntwicklung des Linux Security Module (LSM)→ bietet einheitliche Schnittstelle
SubDomain wird zur Nutzung von LSM umgeschrieben
2005: Umbenennung in AppArmor und Aufnahme desKernel-Moduls in den Upstream Kernel
2009: Canonical übernimmt Entwicklung von AppArmor
2
![Page 10: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/10.jpg)
Entwicklungsgeschichte
90er Jahre: Vorgänger SubDomain
Nicht das einzige Projekt, das diesen Ansatz verfolgtKein Projekt soll im Kernel bevorzugt werdenEntwicklung des Linux Security Module (LSM)→ bietet einheitliche Schnittstelle
SubDomain wird zur Nutzung von LSM umgeschrieben
2005: Umbenennung in AppArmor und Aufnahme desKernel-Moduls in den Upstream Kernel
2009: Canonical übernimmt Entwicklung von AppArmor
2
![Page 11: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/11.jpg)
Entwicklungsgeschichte
90er Jahre: Vorgänger SubDomain
Nicht das einzige Projekt, das diesen Ansatz verfolgtKein Projekt soll im Kernel bevorzugt werdenEntwicklung des Linux Security Module (LSM)→ bietet einheitliche Schnittstelle
SubDomain wird zur Nutzung von LSM umgeschrieben
2005: Umbenennung in AppArmor und Aufnahme desKernel-Moduls in den Upstream Kernel
2009: Canonical übernimmt Entwicklung von AppArmor
2
![Page 12: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/12.jpg)
Aufbau & Funktionsweise
![Page 13: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/13.jpg)
Kernel-Konfiguration
LSM- und AppArmor-Support
CONFIG_SECURITY=yCONFIG_AUDIT=yCONFIG_SECURITY_APPARMOR=y
AppArmor-Kernel-Modul aktivieren
in der Kernel-KonfigurationCONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1CONFIG_DEFAULT_SECURITY_APPARMOR=y
oder per Kernel-Parameterapparmor=1security=apparmor
3
![Page 14: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/14.jpg)
Kernel-Konfiguration
LSM- und AppArmor-Support
CONFIG_SECURITY=yCONFIG_AUDIT=yCONFIG_SECURITY_APPARMOR=y
AppArmor-Kernel-Modul aktivieren
in der Kernel-KonfigurationCONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1CONFIG_DEFAULT_SECURITY_APPARMOR=y
oder per Kernel-Parameterapparmor=1security=apparmor
3
![Page 15: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/15.jpg)
Linux Security Module
AppArmor muss sich bei LSM registrieren:
static struct security_operations apparmor_ops = {.name = "apparmor",
....capget = apparmor_capget,.capable = apparmor_capable,
....path_mkdir = apparmor_path_mkdir,.path_rmdir = apparmor_path_rmdir,
....file_open = apparmor_file_open,
...};
4
![Page 16: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/16.jpg)
Funktionsweise
KernelLSM
AppArmor-Modul
Userspace AppArmor Utilities
ProfileInformationen
5
![Page 17: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/17.jpg)
Funktionsweise
KernelLSM
AppArmor-Modul
Userspace AppArmor Utilities
ProfileInformationen
5
![Page 18: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/18.jpg)
Funktionsweise
KernelLSM
AppArmor-Modul
Userspace AppArmor Utilities
ProfileInformationen
5
![Page 19: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/19.jpg)
Anwendung
![Page 20: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/20.jpg)
AppArmor Policies
PoliciesDie AppArmor Policy besteht aus den Profilen in /etc/apparmor.d.Diese werden kompiliert und in den Kernel geladen.
Einsatzbereich der wichtigsten Userspace-Tools:
aa-genprof: Anlegen eines neuen Profils (interaktiv)aa-logprof: Editieren von Profil (interaktiv)aa-enforce: Programm wechselt in Enforce-Modeaa-complain: Programm wechselt in Complain-Modeapparmor_parser: Kompilieren nach manuellem Editieren
6
![Page 21: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/21.jpg)
Profiles
#include <file>profile usr.bin.example { # comment 1
# comment 2/home/*/foo rw,/usr/bin/example_child ix, #inherit profiledeny /**.py x, #deny execution of python files
}
Berechtigungen
r: Readw: Writex: EXecutem: Memory map executable (Bibliothek laden)l: Link (verlinke Files)k: LocK
7
![Page 22: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/22.jpg)
Profiles
Weitere Regeln
capability: Zugriff auf capabilities zulassen (siehe mancapabilities).capability setuid
network: Erlaube Netzwerkzugriff.network inet dgram
deny: Explizit Zugriff verbieten.deny /path/to/file w
audit: Logge den Zugriff auf die Datei.audit /path/to/file2 w
8
![Page 23: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/23.jpg)
Beispiel Zugriff auf Nutzerdateien
@{HOME}/ r,@{HOME}/** r,owner @{HOME}/** w,
audit deny @{HOME}/.ssh/** mrwkl,audit deny @{HOME}/.gnome2_private/** mrwkl,audit deny @{HOME}/.kde{,4}/share/apps/kwallet/** mrwkl,
# Allow read to all files user has DAC access to# and write for files the user# owns on removable media and filesystems./media/** r,/mnt/** r,/srv/** r,/net/** r,owner /media/** w,owner /mnt/** w,owner /srv/** w,owner /net/** w,
9
![Page 24: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/24.jpg)
Infrastruktur
![Page 25: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/25.jpg)
Code-Management
Gitlab mit:Kernel-CodeUserspace-CodeProfilenWikiDokumentation mit Tutorials
Bugreporting über:[email protected] für öffentliche [email protected] für sicherheitsrelevante Bugs
10
![Page 26: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/26.jpg)
Organisation
![Page 27: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/27.jpg)
Organisation innerhalb des Projekts
Members
12 Entwickler in GitlabJohn Johansen und Steve Beattie sind derzeitig ’Projekt-Owner’Monatliches Treffen im IRC-Channel
Zum Projekt Beitragen
Userspace-Tools:Patches über die Mailingliste oder als Merge RequestZustimmung von mind. 1 weiteren Commit-BerechtigtenBei Verweigerung des Patches sollten Dikussionen angestoßenund neue Patches eingesendet werden
Kernel-Modul: Standard Kernel Commit-Policy
11
![Page 28: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/28.jpg)
Fragen?
![Page 29: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/29.jpg)
Quellen (1)
Apparmor lsm.c.https://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git/tree/security/apparmor/lsm.c.06.11.2019.Dokumentation.https://gitlab.com/apparmor/apparmor/-/wiki_pages/Documentation.04.11.2019.Kernel dokumentation.https://gitlab.com/apparmor/apparmor/-/wiki_pages/TechnicalDoc_Kernel.04.11.2019.
![Page 30: AppArmor - Praktikum angewandte Systemsoftwaretechnik · CONFIG_AUDIT=y CONFIG_SECURITY_APPARMOR=y AppArmor-Kernel-Modulaktivieren inderKernel-Konfiguration CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1](https://reader036.fdocument.pub/reader036/viewer/2022090607/605cc47c44073f56bf09ce9e/html5/thumbnails/30.jpg)
Quellen (2)
Launchpad.https://launchpad.net/apparmor.04.11.2019.Release prozess.https://gitlab.com/apparmor/apparmor/-/wiki_pages/ReleaseProcess.04.11.2019.Wiki.https://gitlab.com/apparmor/apparmor/-/wiki_pages/home.04.11.2019.