Aqua容器安全解决方案POC测试步骤Word下载.docx

上传人:b****4 文档编号:7779292 上传时间:2023-05-09 格式:DOCX 页数:31 大小:1.26MB
下载 相关 举报
Aqua容器安全解决方案POC测试步骤Word下载.docx_第1页
第1页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第2页
第2页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第3页
第3页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第4页
第4页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第5页
第5页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第6页
第6页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第7页
第7页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第8页
第8页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第9页
第9页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第10页
第10页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第11页
第11页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第12页
第12页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第13页
第13页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第14页
第14页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第15页
第15页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第16页
第16页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第17页
第17页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第18页
第18页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第19页
第19页 / 共31页
Aqua容器安全解决方案POC测试步骤Word下载.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Aqua容器安全解决方案POC测试步骤Word下载.docx

《Aqua容器安全解决方案POC测试步骤Word下载.docx》由会员分享,可在线阅读,更多相关《Aqua容器安全解决方案POC测试步骤Word下载.docx(31页珍藏版)》请在冰点文库上搜索。

Aqua容器安全解决方案POC测试步骤Word下载.docx

localengine,手动逐一添加步骤2里导入的镜像文件。

除了imagescan/labeltest外都导入,此镜像将用于未扫描镜像测试。

注:

如果不想逐一添加也可配置自动拉取本地镜像,System>

Integrations>

LocalEngine>

勾选AutomaticallyPullNewImages。

这样AquaAgent就会在配置的指定拉取时间拉取本地镜像进行扫描。

5.登录AquaWeb端>

System>

Settings,点击Import按钮导入aqua_文件

6.通过groupadddocker添加docker用户组

2.镜像扫描

2.1白名单镜像

1.通过ImageAssurance内配置,首先设置DisallowImagesbyCVESeverity,则执行

dockerrun-v/:

/hostOS-i-tchrisfosterelli/rootplease失败

2.通过ImageAssurance内配置,设置chrisfosterelli/rootplease镜像为WhitelistImage,则执行

/hostOS-i-tchrisfosterelli/rootplease成功

2.2禁止未扫描镜像运行

1.通过ImageAssurance内配置,设置BlockUnregisteredImages,同时对应label(key=vaule)的镜像可以做例外,如下图

2.执行dockerrun-dimagescan/labeltest未扫描镜像可以正常运行,因为此镜像已打了license=GPLv2的label,如果将此例外去了即被禁止运行

2.3镜像安装包的黑白名单

1.通过ImageAssurance内,设置PackageBlacklist,禁止包含黑名单Package的镜像运行,可填写python包,所有版本,则执行dockerrun-dcentos被禁止

2.通过ImageAssurance内,设置PackageWhitelist,可以设置镜像必须包含的安装程序包,如未包含白名单内安装包,镜像将被禁止执行,可填写python包,所有版本,则执行dockerrun-dalpine被禁止

2.4自定义规则扫描镜像

1.通过ImageAssurance内,设置CustomChecks可以使用自定义规则脚本进行扫描,脚本返回0则禁用镜像。

使用默认SSH包检查脚本即可,任何安装了SSH包的镜像都将被禁用

2.在Images页面将imagescan/centoswithssh镜像Rescan重新扫描

3.执行dockerrun-it--rmimagescan/centoswithssh/bin/bash被禁止,因为此镜像安装了SSH包被Disallow

2.5包含敏感信息的镜像

1.在System>

Settings内,勾选ScanOptions下的Scansensitivedatainimages并Save

2.通过ImageAssurance内,设置DisallowImageswithSensitiveData,可以设置包含敏感信息(比如PrivateRSAkey)的镜像被禁止运行

3.执行dockerrun-dimagescan/sensitivedata失败,因为其/opt路径下有id_rsa的PrivateRSAkey

2.6结合Jenkins进行镜像扫描

1.在Dockerhost主机上执行:

chmod-R777/opt/jenkins

dockerrun-d\

-uroot\

 

-v 

/opt/jenkins:

/var/jenkins_home\

-v/var/run/:

/var/run/\

-v$(whichdocker):

/usr/bin/docker:

ro\

-v/usr/lib64/.0:

/usr/lib/x86_64-linux-gnu/.0\

-v/usr/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\

/usr/lib64/.7:

/usr/lib/x86_64-linux-gnu/.7\

-p9090:

8080\

--namejenkins\

--restart=always\

jenkins

2.生成的jenkins可通过http:

//<

DockerHostIP>

:

9090进入,用户名为admin,密码为password。

3.进入ManageJenkins>

ConfigureSystem将以下各项按实际情况填写,其中的IP地址都是dockerhost测试主机的。

4.点击test项目>

manage,设置项目要扫描的镜像名及其所属Registry名,此处Registry名为在AquaServer>

System>

Registry里进行绑定的名字。

5.最后运行test项目的build即可,里面已添加了Aqua镜像扫描的步骤,从Consoleoutput查看扫描执行结果

3.威胁阻止

3.1Processlimits

1.通过ThreatMitigation内,勾选ForkGuadr下的EnableForkBombProtection,设置Processlimit为10后保存

2.执行dockerrun-dthreattest/process,里面已开启了超过10个进程,多余进程会被禁止生成

3.2只允许Link内容器互相通信

1.执行以下命令生成两个容器:

dockerrun-it-v/opt/aquatest:

/usr/share/nginx/html:

ro-p80:

80-d--namenginxweb\networktest/nginxweb

dockerrun-it-d--nametestcentos

生成后进入test容器可以curl到nginx发布的网页

dockerexec-ittest/bin/bash

curlhttp:

dockerhostip>

2.在ThreatMitigation>

BlockNetworkingBetweenunlinkedContainers下勾选BlockNetwork保存后,再次进入test容器无法curl到网页

3.重新生成新的带link的centos访问容器即可curl到网页

dockerrun-it-d--linknginxweb:

testlinkcentos

4.敏感信息管理

4.1自纳管Secret

1.通过之前的配置导入,前台网页Secret内应已有一个ord

2.运行dockerrun-it-d--namesecretsecrettest/static_password

此容器已将ord作为Password环境变量打入。

用户执行dockerinspectsecret|greppassword只会看到Password={ord},看不到真实值

3.用户执行dockerexec-itsecret/bin/bash进入容器执行env命令后,可看到真实值。

同时用户如在前台网页端对ord的值进行更改后,容器内对应值也会动态刷新到,不需要重启容器

4.2CyberArk纳管Secret

1.Aqua可以CyberArk的CCP进行绑定配置,通过其获取CyberArk平台内保存的密码。

通过System>

SecretKeyStores,点击AddSecretKeyStore进行绑定,其中的TestConnection按钮没有任何实际作用。

●ConnecitionURL:

CCP的访问地址,只需要填写IP地址,不需要后缀

●AppID:

CCP使用的AppID

●Safe:

获取密码账号所在Safe

●PullInterval:

定期刷新时间(测试下来没有实际功能,即无法将新值自动刷新到容器内)

2.在绑定的CyberarkVault内,创建WindowsSafe,配置CCP相关APPID和Provider用户对此Safe有获取密码权限,同时创建一个测试账号,账号名为CyberArkVaultTest

3.在Aqua网页端>

Secrets>

AddNewSecret,在Store处选择步骤一新建的CyberArkStore名,在Name处填写Vault内账号名,即CyberArkVaultTest

4.点击Save的同时,Aqua会尝试获取密码,如有报错会直接在页面内显示出来

5.运行dockerrun-it-d--namesecretsecrettest/static_password

此容器已将ArkVaultTest作为CyberArkPassword环境变量打入。

用户执行dockerinspectsecret|grepCyber只会看到CyberArkPassword={ArkVaultTest},看不到真实值

6.用户执行dockerexec-itsecret/bin/bash进入容器执行env命令后,可看到真实值。

5.容器运行限制

5.1以指定用户运行容器

当运行容器时没以-u参数指定运行用户环境时,Docker默认将以root用户运行容器,最高用户权限所带来的风险可想而知。

用户可通过AquaSecurity中的Runtimeprofile来限制容器运行时只能以当前Host用户的UID和GID来运行

1.不加-u参数运行容器后,得到的UID和GID为Host当前用户docker

2.同时我们可以限制容器不以root用户运行。

3.当以root用户运行容器时,得到PermissionDenied的报错,同时AquaSecurity内也有对应Block日志。

运行命令为dockerrun-itruntime/runuser/bin/sh

5.2限制容器运行时的只读文件

1.用户通常希望在Container运行时不要对容器的一些关键系统或程序文件进行修改,比如/etc、/bin目录等。

AquaSecurity可以通过RuntimeProfile来做到这点

2.设置对/etc目录的只读后,以root用户运行容器仍旧无法对/etc目录下的任何文件进行修改。

运行命令为dockerrun-itruntime/file/bin/sh,之后vi/etc/hostname修改文件会有如下报错

5.3限制容器运行时的可执行命令

1.限制用户在容器运行时的可执行命令是十分重要的,其能有效避免一些误操作所带来的严重后果。

AquaSecurity可通过Runtimeprofile里的AllowedExecutables来设置容器运行时的可执行命令白名单,如下图我们只允许执行/bin/bash命令。

2.当用户试图执行ls命令时,得到Permissiondenied的报错,同时AquaSecurity处也有对应Block日志。

3.当用户在AllowedExecutables处加上ls命令后,此命令即可正常在容器内执行。

即使sh脚本中有相关命令也同样被禁止

5.4限制Container运行时的进出网络

1.对于Container运行时的对外通信,用户可以限制其进出网络,从而隔绝容器不必要的网络通信。

用户可以在AquaSecurity内Runtimeprofile的Network选项禁止对应镜像生成的Container的对外通信。

2.这样当Container内部尝试与外部网络通信时,就会失败。

同时AquaSecurity也会记录对应的Block事件。

测试命令为dockerrun-itruntime/network/bin/sh

5.5黄金镜像---保证Container不对容器内任何文件进行修改

1.针对一些黄金镜像,用户不希望容器对其进行任何修改。

则我们可以在AquaSecurity的runtimeprofile中的ContainerEngineControls中勾选Read-onlyrootfilesystem。

2.用户尝试修改、新增、删除容器内的文件报错,无法进行增删改。

测试语句dockerrun-itruntime/goldenimage/bin/sh

5.6限制Container不以特权模式运行

1.容器运行时如果加上‘-privileged’参数,即会以特权模式运行,可访问Host上的所有设备,此容器几乎与主机上其他运行的进程一样可访问主机资源,这将带来十分高的安全风险。

所以我们可以通过AquaRuntimeProfile里的配置禁用特权模式运行容器。

2.设置后,当用户再次想以特权模式运行容器时得到‘Blockedbyruntimeprofile’的报错,同时AquaAudit日志里也有相关Block信息,测试命令为dockerrun-it--privilegedruntime/nonprivileged/bin/sh。

5.7限制Container挂载的数据卷

1.挂载数据卷是Container容器间分享永久数据的一种方式,这些永久数据通常都会影响应用运行时的配置,一些误操作的写入可能会导致Container内的应用无法正常运行,所以针对挂载数据卷的限制也是十分必要的。

我们可以通过AquaRuntimeProfile里的Allowedvolumes配置来指定Container运行时允许挂载的数据卷及其写入读取权限。

2.当用户想要挂载其他数据卷时,得到‘Blockedbyruntimeprofile’的报错。

同样当用户想要以ReadWrite权限挂载时也会报错,运行语句为dockerrun--rm-it-v/data:

/dataruntime/volumes/bin/sh。

必须指定ro权限才能正确挂载,,运行语句为dockerrun–rm-it-v/data:

/data:

roruntime/volumes/bin/sh。

5.8自主学习并生成安全规则

1.有时我们自定义的规则无法满足一些复杂的Container运行情景,此时我们可以让Aqua进行自主学习,其会根据指定image生成的Container运行情况,自动生成对应的Container运行规则。

如下图,我们在AquaSystem及image级别开启了自动Profile生成。

2.待配置的10分钟学习时间过后,Aqua即会根据之前Container运行的情况,自动生成对应的运行规则,用户可在此基础上再进行自定义调整。

5.9限制容器运行时使用的资源及进程数

1.通过Aqua的runtimeprofile可以对容器使用的CPU、内存及进程数进行限制,比如下图限制容器只能运行10个以内的进程。

2.运行dockerrun-dthreattest/process就会报错,此容器启动会自动开启超过10个ping命令进程,进入容器内部执行其他进程也都会被拒绝。

在audit内有Block的日志.

5.10环境变量加密

1.通过Aqua的RuntimeProfile的EnvironmentVariables内可以启用环境变量加密

2.执行dockerrun-d-it-epassword=test123--nameencrypttestruntime/encryptenv/bin/sh

3.执行dockerinspectencrypttest|greppassword得到加密密文

4.执行dockerexec-itencrypttest/bin/bash进入容器后执行env命令才能看到变量的真实值

6.网络控制

6.1容器与Host之间网络限制

1.运行dockerrun-it-v/opt/aquatest:

80--namenginxweb-dnetworktest/nginxweb生成测试容器,可直接通过http:

dockerhostIP>

访问到发布的页面

2.登录Aqua>

ContainerFirewall,点击已有NginxWebHost策略,对80端口做策略限制中的IP换成你的测试用主机IP后保存

3.点击Services>

AddNewService新建服务,取名为NginxWeb。

将步骤1正在运行的容器添加进去,同时防火墙策略选择步骤2中NginxWebHost即可。

这样在指定测试主机访问http:

页面即失败,在Audit页面可查看对应Block日志

6.2容器与容器间的网络限制

1.保留章节6.1中的Service及容器,运行另一个centos容器dockerrun-it-d--namecentoswebcentos/bin/bash,进入到容器内部可访问之前nginxweb容器的页面

dockerexec-itcentosweb/bin/bash

ContainerFirewall,点击已有NginxWebContainer策略,其已对NginxWeb服务做了80端口的访问限制,无需做任何修改。

AddNewService新建服务,取名为CentosWeb。

将步骤1正在运行的centosweb容器添加进去,同时防火墙策略选择步骤2中NginxWebContainer即可。

这样再次进入到centosweb容器内部访问http:

7.主机权限管控

7.1角色权限管控

1.Aqua页面>

UserAccessControl下已有CustomImageOperator策略,其定义imageoperator用户对所有container、image拥有DockerUser权限(只能run或审计,不能commit)

2.通过以下命令在DockerHost主机上新建用户并加入到Docker用户组

useraddimageoperator

passwdimageoperator

usermod-Gdockerimageoperator

3.Su到Imageoperator用户,运行dockerimage、dockerrun--rmcentos都成功,但如果执行dockercommitcentosuactest/centos则报权限不足而失败

7.2自定义Role角色

UserAccessControl>

Manageaccessroles>

Addnewroles,名字填写CustomAuditor,下方命令列表将所有Auditor相关命令都加入进去,同时加上exec命令

2.Aqua页面>

UserAccessControl下已有CustomAuditor策略,其定义customauditor用户对所有container、image拥有CustomAuditor权限(审计加上exec进入容器内部权限)

3.通过以下命令在DockerHost主机上新建用户并加入到Docker用户组

useraddcustomauditor

passwdcustomauditor

usermod-Gdockercustomauditor

4.su到customauditor用户,运行dockerimage、dockerps、dockerexec-it<

containername>

/bin/bash都成功,但如果执行dockerrun-itcentos/bin/bash则报权限不足而失败

7.3通过image的label来分发权限

Images下,确保uactest/label镜像已被打上uaclabel的标签

UserAccessControl下已有Customlabeladmin策略,其定义labeladmin用户对标签为uaclabel的镜像及其容器有所有执行权限。

useraddlabeladmin

passwdlabeladmin

usermod-Gdockerlabeladmin

4.Su到labeladmin用户,运行dockerrun-ituactest/label/bin/bash成功,但如果执行dockerrun-itcentos/bin/bash则报权限不足而失败

8.其他

8.1Rootplease容器修改主机配置文件

1.在DockerHost主机上使用useraddroot1和passwdroot1新增root1用户并设置密码,其为普通用户,无法执行passwdroot命令

2.执行dockerrun-v/:

/hostOS-i-t--namerootpleasechrisfosterelli/rootplease开启容器

3.执行dockerexec-itrootplease/bin/sh进

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2