Aqua容器安全解决方案POC测试步骤.docx
《Aqua容器安全解决方案POC测试步骤.docx》由会员分享,可在线阅读,更多相关《Aqua容器安全解决方案POC测试步骤.docx(32页珍藏版)》请在三一办公上搜索。
1、Aqua容器安全解决方案POC测试步骤2017-10-27Version 1.0说明包含于此篇文档中的信息属于商业或财务机密(或授权)信息。文档为安领有限公司所专有,且只用于评估目的,除非被安领有限公司授权,否则此文档的全部或者部分信息不得用于再版或者引用。版本历史日期版本描述2017-10-271.0内容1.准备工作52.镜像扫描62.1白名单镜像62.2禁止未扫描镜像运行62.3镜像安装包的黑白名单62.4自定义规则扫描镜像62.5包含敏感信息的镜像72.6结合Jenkins进行镜像扫描73.威胁阻止93.1Process limits93.2只允许Link内容器互相通信94.敏感信息管理
2、104.1自纳管Secret104.2CyberArk纳管Secret105.容器运行限制125.1以指定用户运行容器125.2限制容器运行时的只读文件135.3限制容器运行时的可执行命令145.4限制Container运行时的进出网络155.5黄金镜像-保证Container不对容器内任何文件进行修改165.6限制Container不以特权模式运行175.7限制Container挂载的数据卷175.8自主学习并生成安全规则185.9限制容器运行时使用的资源及进程数195.10环境变量加密206.网络控制216.1容器与Host之间网络限制216.2容器与容器间的网络限制217.主机权限管控2
3、37.1角色权限管控237.2自定义Role角色237.3通过image的label来分发权限248.其他258.1Rootplease容器修改主机配置文件258.2私有Registry搭建258.3Swarm部署Aqua Agent268.4Rancher部署Aqua Agent271. 准备工作在Docker Host主机上安装完Aqua Server环境后,可执行以下步骤将测试用镜像及配置文件导入到环境中。1. 将optfolder下的文件夹上传到Docker Host的/opt路径下2. 通过df -h命令确保测试主机/var路径挂载磁盘剩余空间大于10G,否则导入镜像会导致磁盘满3.
4、 将测试镜像上传到Docker Host主机内,并通过docker loadImagesAdd imageslocal engine,手动逐一添加步骤2里导入的镜像文件。除了imagescan/labeltest外都导入,此镜像将用于未扫描镜像测试。注:如果不想逐一添加也可配置自动拉取本地镜像,SystemIntegrationsLocal Engine勾选Automatically Pull New Images。这样Aqua Agent就会在配置的指定拉取时间拉取本地镜像进行扫描。 5. 登录Aqua Web端SystemSettings,点击Import按钮导入aqua_文件6. 通过g
5、roupadd docker添加docker用户组2. 镜像扫描2.1 白名单镜像1. 通过Image Assurance内配置,首先设置Disallow Images by CVE Severity,则执行docker run -v /:/hostOS -i -t chrisfosterelli/rootplease失败2. 通过Image Assurance内配置,设置chrisfosterelli/rootplease镜像为WhitelistImage,则执行docker run -v /:/hostOS -i -t chrisfosterelli/rootplease成功2.2 禁止未
6、扫描镜像运行1. 通过Image Assurance内配置,设置Block Unregistered Images,同时对应label (key=vaule)的镜像可以做例外,如下图2. 执行docker run -d imagescan/labeltest未扫描镜像可以正常运行,因为此镜像已打了license=GPLv2的label,如果将此例外去了即被禁止运行2.3 镜像安装包的黑白名单1. 通过Image Assurance内,设置Package Blacklist,禁止包含黑名单Package的镜像运行,可填写python包,所有版本,则执行docker run -d centos被禁
7、止2. 通过Image Assurance内,设置Package Whitelist,可以设置镜像必须包含的安装程序包,如未包含白名单内安装包,镜像将被禁止执行,可填写python包,所有版本,则执行docker run -d alpine被禁止2.4 自定义规则扫描镜像1. 通过Image Assurance内,设置Custom Checks可以使用自定义规则脚本进行扫描,脚本返回0则禁用镜像。使用默认SSH包检查脚本即可,任何安装了SSH包的镜像都将被禁用2. 在Images页面将imagescan/centoswithssh镜像Rescan重新扫描3. 执行docker run -it
8、-rm imagescan/centoswithssh /bin/bash 被禁止,因为此镜像安装了SSH包被Disallow2.5 包含敏感信息的镜像1. 在SystemSettings内,勾选Scan Options下的Scan sensitive data in images并Save2. 通过Image Assurance内,设置Disallow Images with Sensitive Data,可以设置包含敏感信息(比如Private RSA key)的镜像被禁止运行3. 执行docker run -d imagescan/sensitivedata失败,因为其/opt路径下有i
9、d_rsa的Private RSA key2.6 结合Jenkins进行镜像扫描1. 在Docker host主机上执行:chmod -R 777 /opt/jenkinsdocker run -d -u root -v/opt/jenkins:/var/jenkins_home -v /var/run/:/var/run/ -v $(which docker):/usr/bin/docker:ro -v /usr/lib64/.0:/usr/lib/x86_64-linux-gnu/.0 -v /usr/lib64/.0:/usr/lib/x86_64-linux-gnu/.0 -v /us
10、r/lib64/.1.02:/usr/lib/x86_64-linux-gnu/.1.02 -v /usr/lib64/.11:/usr/lib/x86_64-linux-gnu/.11 -v /usr/lib64/.1:/usr/lib/x86_64-linux-gnu/.1 -v/usr/lib64/.7:/usr/lib/x86_64-linux-gnu/.7 -p 9090:8080 -name jenkins -restart=always jenkins2. 生成的jenkins可通过http:/:9090进入,用户名为admin,密码为password。3. 进入Manage J
11、enkinsConfigure System将以下各项按实际情况填写,其中的IP地址都是docker host测试主机的。4. 点击test项目manage,设置项目要扫描的镜像名及其所属Registry名,此处Registry名为在Aqua Server SystemIntegrationsRegistry里进行绑定的名字。5. 最后运行test项目的build即可,里面已添加了Aqua镜像扫描的步骤,从Console output查看扫描执行结果3. 威胁阻止3.1 Process limits1. 通过Threat Mitigation内,勾选Fork Guadr下的Enable For
12、k Bomb Protection,设置Process limit为10后保存2. 执行docker run -d threattest/process,里面已开启了超过10个进程,多余进程会被禁止生成3.2 只允许Link内容器互相通信1. 执行以下命令生成两个容器:docker run -it -v /opt/aquatest:/usr/share/nginx/html:ro -p 80:80 -d -name nginxweb networktest/nginxwebdocker run -it -d -name test centos生成后进入test容器可以curl到nginx发布的
13、网页docker exec -it test /bin/bashcurl http:/2. 在Threat MitigationBlock Networking Between unlinked Containers下勾选Block Network保存后,再次进入test容器无法curl到网页3. 重新生成新的带link的centos访问容器即可curl到网页docker run -it -d -link nginxweb:testlink centos4. 敏感信息管理4.1 自纳管Secret1. 通过之前的配置导入,前台网页Secret内应已有一个ord2. 运行docker run -
14、it -d -name secret secrettest/static_password此容器已将ord作为Password环境变量打入。用户执行docker inspect secret|grep password 只会看到Password=ord,看不到真实值3. 用户执行docker exec -it secret /bin/bash进入容器执行env命令后,可看到真实值。同时用户如在前台网页端对ord的值进行更改后,容器内对应值也会动态刷新到,不需要重启容器4.2 CyberArk纳管Secret1. Aqua可以CyberArk的CCP进行绑定配置,通过其获取CyberArk平台内
15、保存的密码。通过SystemIntegrationsSecret Key Stores,点击Add Secret Key Store进行绑定,其中的Test Connection按钮没有任何实际作用。l Connecition URL: CCP的访问地址,只需要填写IP地址,不需要后缀l AppID:CCP使用的AppIDl Safe: 获取密码账号所在Safel Pull Interval: 定期刷新时间 (测试下来没有实际功能,即无法将新值自动刷新到容器内)2. 在绑定的Cyberark Vault内,创建Windows Safe,配置CCP相关APPID和Provider用户对此Safe
16、有获取密码权限,同时创建一个测试账号,账号名为CyberArkVaultTest3. 在Aqua网页端SecretsAdd New Secret,在Store处选择步骤一新建的CyberArk Store名,在Name处填写Vault内账号名,即CyberArkVaultTest4. 点击Save的同时,Aqua会尝试获取密码,如有报错会直接在页面内显示出来5. 运行docker run -it -d -name secret secrettest/static_password此容器已将ArkVaultTest作为CyberArkPassword环境变量打入。用户执行docker inspe
17、ct secret|grep Cyber 只会看到CyberArkPassword=ArkVaultTest,看不到真实值6. 用户执行docker exec -it secret /bin/bash进入容器执行env命令后,可看到真实值。5. 容器运行限制5.1 以指定用户运行容器当运行容器时没以-u参数指定运行用户环境时,Docker默认将以root用户运行容器,最高用户权限所带来的风险可想而知。用户可通过Aqua Security中的Runtime profile来限制容器运行时只能以当前Host用户的UID和GID来运行1. 不加-u参数运行容器后,得到的UID和GID为Host当前用
18、户docker2. 同时我们可以限制容器不以root用户运行。3. 当以root用户运行容器时,得到Permission Denied的报错,同时Aqua Security内也有对应Block日志。运行命令为docker run -it runtime/runuser /bin/sh5.2 限制容器运行时的只读文件1. 用户通常希望在Container运行时不要对容器的一些关键系统或程序文件进行修改,比如/etc、/bin目录等。Aqua Security可以通过Runtime Profile来做到这点2. 设置对/etc目录的只读后,以root用户运行容器仍旧无法对/etc目录下的任何文件进
19、行修改。运行命令为docker run -it runtime/file /bin/sh,之后vi /etc/hostname修改文件会有如下报错5.3 限制容器运行时的可执行命令1. 限制用户在容器运行时的可执行命令是十分重要的,其能有效避免一些误操作所带来的严重后果。Aqua Security可通过Runtime profile里的Allowed Executables来设置容器运行时的可执行命令白名单,如下图我们只允许执行/bin/bash命令。2. 当用户试图执行ls命令时,得到Permission denied的报错,同时Aqua Security处也有对应Block日志。3. 当用
20、户在Allowed Executables处加上ls命令后,此命令即可正常在容器内执行。即使sh脚本中有相关命令也同样被禁止5.4 限制Container运行时的进出网络1. 对于Container运行时的对外通信,用户可以限制其进出网络,从而隔绝容器不必要的网络通信。用户可以在Aqua Security内Runtime profile的Network选项禁止对应镜像生成的Container的对外通信。2. 这样当Container内部尝试与外部网络通信时,就会失败。同时Aqua Security也会记录对应的Block事件。测试命令为docker run -it runtime/networ
21、k /bin/sh5.5 黄金镜像-保证Container不对容器内任何文件进行修改1. 针对一些黄金镜像,用户不希望容器对其进行任何修改。则我们可以在Aqua Security的runtime profile中的Container Engine Controls中勾选Read-only root file system。2. 用户尝试修改、新增、删除容器内的文件报错,无法进行增删改。测试语句docker run -it runtime/goldenimage /bin/sh5.6 限制Container不以特权模式运行1. 容器运行时如果加上-privileged参数,即会以特权模式运行,可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Aqua 容器 安全 解决方案 POC 测试 步骤
链接地址:https://www.31ppt.com/p-4117250.html