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@6da5a2a2a930b9:〜#touch〜/thingtouch:无法触摸'thing':许可拒绝@6da5a2a2a930b9:/#shbash:/#shbash:/bin/sh:许可deniedroot@6da5a2a2a2a930b9
使用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。