LSM 是Linux内核的一个轻量级通用访问控制框架。用户可以根据其需求选择适合的安全模块加载到Linux内核中,从而大大提高了Linux安全访问控制机制的灵活性和易用性。
LSM框架的设计初衷是为了在Linux Kernel中实现一个MAC(Mandat-ory Access Control,强制访问控制) Hook框架,LSM已经作为Linux Kernel的一部分随着内核一起发布了,使用框架的好处就在于,安全人员可以直接基于LSM框架进行上层审计模块的开发,专注于业务逻辑,而不需要关注底层的内核差异兼 容性和稳定性,这是相对于sys_call hook方式最大的优势。它提供了全面的安全策略:比如SELinux、Smack、Tomoyo
和AppArmor
。
student@debian:~$ docker run --rm -it --name lsm-before -p 4321:80 nginx bash
root@6ecbf1e837e9:/# sh
# dash
# bash
root@6ecbf1e837e9:/# exit
exit
# exit
# exit
root@6ecbf1e837e9:/# exit
exit
Apparmor简介
由于SELinux使用复杂,适用于对安全要求特别高的企业或者组织,为了简化操作,就推出了Apparmor,所以可以说Apparmor脱胎于SELinux,但与SELinux基于角色的MAC不同的是,Apparmor是与程序绑定的基于路径的MAC,也就是说如果路径发生改变,策略就会失效。
现在我们添加apparmor
安全选项,再执行sh
或者dash
试试
student@debian:~$ cd /opt/docker-nginx/
student@debian:/opt/docker-nginx$ sudo bane sample.toml
Profile installed successfully you can now run the profile with
`docker run --security-opt="apparmor:docker-nginx-sample"`
student@debian:/opt/docker-nginx$ docker run --rm -it --name lsm-after \
> --security-opt="apparmor:docker-nginx-sample" -p 4320:80 nginx bash
root@0bd1bb6f98b4:/# sh
bash: /bin/sh: Permission denied
root@0bd1bb6f98b4:/# dash
bash: /bin/dash: Permission denied
root@0bd1bb6f98b4:/# bash
root@0bd1bb6f98b4:/#
发现执行命令会提示权限限制。
我们来看看使用bane
创建的apparmor
配置文件:/opt/docker-nginx/docker-nginx-sample
student@debian:/opt/docker-nginx$ cat docker-nginx-sample
#include <tunables/global>
profile docker-nginx-sample flags=(attach_disconnected,mediate_deleted) {
#include <abstractions/base>
network inet tcp,
network inet udp,
network inet icmp,
deny network raw,
deny network packet,
file,
umount,
deny /bin/** wl,
deny /boot/** wl,
deny /dev/** wl,
deny /etc/** wl,
deny /home/** wl,
deny /lib/** wl,
deny /lib64/** wl,
deny /media/** wl,
deny /mnt/** wl,
deny /opt/** wl,
deny /proc/** wl,
deny /root/** wl,
deny /sbin/** wl,
deny /srv/** wl,
deny /tmp/** wl,
deny /sys/** wl,
deny /usr/** wl,
audit /** w,
/var/run/nginx.pid w,
/usr/sbin/nginx ix,
deny /bin/dash mrwklx,
deny /bin/sh mrwklx,
deny /usr/bin/top mrwklx,
简介:CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Paul Menage。CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段。
更多简介:CGroup 介绍、应用实例及原理描述 https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html
student@debian:~$ docker run -d --name='low_priority' --cpuset-cpus=0 --cpu-shares=10 alpine md5sum /dev/urandom
1ba913c97572ecca172babaed0038abfc35670ae1748ed76db8c1c875e173632
student@debian:~$ docker run -d --name='high_priority' --cpuset-cpus=0 --cpu-shares=50 alpine md5sum /dev/urandom
f3757941e55cab375d672931f026fe0ff986d9d082fc1fea62cacd373b2aeb9c
student@debian:~$
student@debian:~$ docker stop low_priority high_priority
low_priority
high_priority
student@debian:~$ docker rm low_priority high_priority
low_priority
high_priority
student@debian:~$
student@debian:~$ docker run -d --name='high_priority' alpine md5sum /dev/urandom
96c1ffae0f6e6837b360f6859d013377ad01a14ba69f21b1af36145230541056
student@debian:~$ docker run -d --name='low_priority' alpine md5sum /dev/urandom
709b1bf31cf2dee3c27b7b024e2c7e1e11846c75736897decce3104d6608f02a
student@debian:~$
可以看到没有限制CPU资源的情况下,CPU资源基本是被平分的。
停止和删除容器。
docker stop low_priority high_priority
docker rm low_priority high_priority
在这个场景中,我们将通过利用有漏洞的应用程序来访问 docker swarm cluster secrets
数据。
在CTF-VM
中运行了一个存在代码执行漏洞的应用程序,且附加了docker secrets
数据。
访问http://CTF-VMIP:8080/?domain=;id
我们可以利用printenv
命令来访问应用程序容器内的环境变量
浏览目录
查看文件
docker安全在线挑战网站:https://contained.af
,感兴趣的可以去玩玩。
DEF CON 26 Workshop - Attacking & Auditing Docker Containers Using Open Source https://github.com/appsecco/defcon-26-workshop-attacking-and-auditing-docker-containers
本文由作者原创翻译
完结撒花
前面内容回顾:
复制链接get新实验!
全新课程《WEB漏洞实战靶场DORABOX》之实验五 <DoraBox之文件上传> http://www.hetianlab.com/expc.do?ec=ECIDfaf3-05da-4d49-9e11-72953b14f22c
全新课程《基于Unicorn Engine的逆向分析实践》
http://www.hetianlab.com/cour.do?c=CCID660c-8b63-44e9-929e-5a1edef2e2b
全新课程《WEB漏洞实战靶场DORABOX》之实验六 <DoraBox之代码执行>http://www.hetianlab.com/expc.do?ec=ECID7423-09b9-4af1-a095-da05fe4962ec
全新课程《基于Unicorn Engine的逆向分析实践》之实验二:《Unicorn Engine基础教程二》http://www.hetianlab.com/expc.do?ec=ECIDf654-f817-4b40-bf7f-ffcdf711c704
全新课程《WEB漏洞实战靶场DORABOX》之实验七 <DoraBox之SSRF及XXE> http://www.hetianlab.com/expc.do?ec=ECIDe165-a74c-455b-86af-0c78598efe71