bane
v0.4.4
Docker容器的AppArmor配置文件生成器。基本上是一個更好的Apparmor個人資料,而不是手工創建一個,因為誰會做到這一點。
“審查Apparmor個人資料拉的請求是我存在的禍根”
傑西·弗雷澤爾(Jess Frazelle)
目錄
安裝
二進制
通過去
用法
檔案地球
配置文件
安裝個人資料
生成的配置文件是什麼樣的?
與Docker集成
有關二進製文件的安裝說明,請訪問“版本”頁面。
$ GO get github.com/genuinetools/bane
$ BANE -HBANE-用於Docker Containsusage的自定義Apparmor配置文件生成器:Bane <command> flags:-d enable debug logging(默認:false) - 保存配置文件的profile -dir目錄(default:/etc/apparmor .d/containers)命令:版本顯示版本信息。
sample.toml是容器中NGINX的Apparmor示例配置。
示例 | 描述 |
---|---|
/dir/file | 匹配特定文件 |
/dir/* | 匹配目錄中的任何文件(包括點文件) |
/dir/a* | 從目錄中匹配目錄中的任何文件 |
/dir/*.png | 匹配目錄中的任何文件與.png結尾 |
/dir/[^.]* | 匹配除點文件以外的目錄中的任何文件 |
/dir/ | 匹配目錄 |
/dir/*/ | 匹配 /dir /中的任何目錄 |
/dir/a*/ | 匹配 / dir /在 |
/dir/*a/ | 匹配 / dir / ending中的任何目錄 |
/dir/** | 匹配 /dir /以下的任何文件或目錄 |
/dir/**/ | 匹配 /dir /以下的任何目錄 |
/dir/**[^/] | 匹配 /以下的任何文件 /dir / |
/dir{,1,2}/** | 匹配 /dir /, /dir1 /和 /dir2 /中的任何文件或目錄 |
現在,我們從上面有了我們的配置文件,讓我們安裝它。 bane
將自動安裝配置文件在目錄/etc/apparmor.d/containers/
中,並運行apparmor_parser
。
$ sudo bane sample.toml#profile已成功安裝了您現在可以使用#` docker run -security-opt =“ apparmor:docker-nginx-sample”運行配置文件。 -opt =“ apparmor:docker-nginx-sample” -p 80:80 nginx
使用自定義Apparmor配置文件從未如此簡單!
現在,讓我們嘗試使用示例配置文件進行惡意活動:
$ docker run -security-opt =“ apparmor:docker-nginx-sample” -p 80:80 -rm -rm -it nginx bashroot@6da5a2a2a930b9:〜#ping 8.8.8.8.8ping:raw socket.raw socket.Root@ 6da5a5a2a2a2a2a2a330b9缺乏特權:/#topbash:/usr/bin/top:許可deniedroot@6da5a2a930b9:〜#touch〜/thingtouch:無法觸摸'thing':許可deniedroot@6da5a2a2a930b9:/#shbash:/bin/sh: #Dashbash: /bin /dash:拒絕權限
使用LogOnWritePaths
時示例dmesg
輸出:
[ 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
對於上述sample.toml
生成的配置文件可作為docker-nginx-samme獲得。
最初,這是希望成為Docker引擎中的本地安全性資料的概念證明。有關此信息的更多信息,請參見Docker/Docker#17142。