Apparmor -Profilgenerator für Docker -Container. Grundsätzlich ein besseres Apparmorenprofil, als von Hand zu erstellen, denn wer würde das jemals tun?
"Die Überprüfung von Apparmor -Profilanfragen ist der Fluch meiner Existenz"
Jess Frazelle
Inhaltsverzeichnis
Installation
Binärdateien
Via Go
Verwendung
Dateikugel
Konfigurationsdatei
Installieren eines Profils
Wie sieht das generierte Profil aus?
Integration in Docker
Für Installationsanweisungen aus Binärdateien besuchen Sie bitte die Seite "Releases".
$ GE GITHUB.com/Genuinetools/bane
$ bane -hbane -benutzerdefinierter Apparmor -Profilgenerator für Docker ContainerSuSage: Bane <Befehl> Flags: -D -Debug -Protokollierung (Standard: Falsch) -profile -Dir -Verzeichnis zum Speichern der Profile (Standard: /etc/apparmor.d/containers) Befehle: Version anzeigen die Versionsinformationen.
sample.toml ist eine Apparmor -Beispielkonfiguration für Nginx in einem Container.
Glob -Beispiel | Beschreibung |
---|---|
/dir/file | Passen Sie eine bestimmte Datei an |
/dir/* | Passen Sie alle Dateien in einem Verzeichnis an (einschließlich Punktdateien) |
/dir/a* | Passen Sie eine beliebige Datei in einem Verzeichnis an, das mit a beginnt |
/dir/*.png | Passen Sie eine beliebige Datei in einem Verzeichnis an, das mit .png endet |
/dir/[^.]* | Stimmen Sie eine beliebige Datei in einem Verzeichnis außer DOT -Dateien ab |
/dir/ | übereinstimmen ein Verzeichnis |
/dir/*/ | Übereinstimmen ein Verzeichnis innerhalb /Dir / / |
/dir/a*/ | überein jedes Verzeichnis innerhalb / Dir / Beginn mit a |
/dir/*a/ | überein jedes Verzeichnis innerhalb / Dir / endet mit a |
/dir/** | Stimmen Sie eine Datei oder ein Verzeichnis in oder unter /unter /dir /überein an / |
/dir/**/ | Übereinstimmen ein Verzeichnis in oder unter /unter /dir / / |
/dir/**[^/] | Übereinstimmen eine Datei in oder unter /unter /dir / / |
/dir{,1,2}/** | Stimmen Sie eine Datei oder ein Verzeichnis in oder unter /unter /dir /, /dir1 /und /dir2 /an |
Jetzt, da wir unsere Konfigurationsdatei von oben haben, installieren wir sie. bane
installiert das Profil automatisch in apparmor_parser
/etc/apparmor.d/containers/
.
$ sudo bane sample.toml# profile erfolgreich installiert -opt = "Apparmor: Docker-Nginx-Probe" -P 80:80 nginx
Die Verwendung von benutzerdefinierten Apparmorprofilen war noch nie einfacher!
Versuchen wir nun, mit dem Beispielprofil böswillige Aktivitäten durchzuführen:
$ docker run--Security-opt = "Apparmor: Docker-Nginx-Sample" -P 80:80--RM -it nginx bashroot@6da5a2a930b9: ~# Ping 8.8.8. :/# topbash:/usr/bin/top: Erlaubnis Deniedroot@6da5a2a930b9: ~# touch ~/Thingtouch: Kann 'Ding' nicht berühren: Erlaubnis Deniedroot@6da5a2a930b9:/# shbash:/bin/sh: Erlaubnis Deniedroot@6da5a2a930b9:/# Dashbash:/Bin/Dash: Erlaub
Beispiel dmesg
-Ausgabe bei Verwendung von LogOnWritePaths
:
[ 1964.142128] type=1400 audit(1444369315.090:38): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="docker-nginx" pid=3945 comm="apparmor_parser" [ 1966.620327] type=1400 audit(1444369317.570:39): apparmor="AUDIT" operation="open" profile="docker-nginx" name="/1" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624381] type=1400 audit(1444369317.574:40): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624446] type=1400 audit(1444369317.574:41): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624463] type=1400 audit(1444369317.574:42): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624494] type=1400 audit(1444369317.574:43): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624507] type=1400 audit(1444369317.574:44): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624534] type=1400 audit(1444369317.574:45): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624546] type=1400 audit(1444369317.574:46): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624582] type=1400 audit(1444369317.574:47): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0
Für das obige sample.toml
Das generierte Profil ist als Docker-Nginx-Stichprobe verfügbar.
Dies war ursprünglich ein Beweis für das Konzept für das, was hoffentlich zu einem nativen Sicherheitsprofil in der Docker -Engine werden wird. Weitere Informationen dazu finden Sie unter Docker/Docker#17142.