目前主流的开发采用的是devops模式(开发、测试、运维一体化)。随着互联网安全要求越来越高,对网络安全就越发变得重要了。传统的测试工程师主要是对功能、接口、性能方面做测试,而对安全方面测试考虑很少。需要专业的白帽子工程师来实现测试,对人的要求较高。目前提出devsecops模式 也就是增加安全测试这块。
DevSecOps 是一种把安全的最佳实战集成到DevOps的流程里面。 DevSecOps包括创立一种 安全即代码(‘Security as Code’ )的文化,从而在发布开发工程师和安全团队之间,建立一种可以持续的,灵活合作的机制和流程,从而把在传统软件开发流程里面最后由安全测试团队把关扫描的安全工作,左移到整个软件开发的全流程,从而大大降低了应用在上线后出现的安全隐患,也大大加快了上线的速度,同时也让其他非安全团队的软件人员在开发,测试,发布的全过程中,有安全意识,而不是时候补救,甚至大大修改框架
下面介绍jenkins+Acunetix实现自动化安全测试
1)安装jenkins 关于Acunetix的插件
在jenkins 插件管理市场中 搜索到Acunetix 插件
安装完成后在已经安装插件列表中会显示
安装好插件后,重启jenkins 使得插件生效
2)安装Acunetix 证书到 JAVA keystore 中
2.1) Acunetix ca 证书是什么东西,在哪里呢?
使用到Acunetix 会用到https 所以我们需要将Acunetix ca证书安装到jenkins 依赖的jdk java keystore中。
Acunetix on windows
Acunetix ca在哪里呢,下面以windows为例,介绍一下
我这里使用的是
acunetix_14.1.210316110.exe 安装版本,安装后会在D:ProgramDataAcunetixcerts 目录下生成 ca证书
Acunetix on linux
我使用的是Docker 容器版本的官方的镜像secfa/docker-awvs,官方镜像地址
容器里面ca 证书在哪呢?目录结构在
/home/acunetix/.acunetix/data/certs
2.2 jdk 如何导入Acunetix ca 证书呢?
Jenkins on Windows
查找当前jenkins 依赖的jdk. 我们的jdk是windows 环境的,所以我的jre security 目前在
D:developjavajdk1.8.0_211jrelibsecuritycacerts
我们使用cmd命令行执行如下命令
keytool -import -trustcacerts -alias AcunetixCA -keystore "D:developjavajdk1.8.0_211jrelibsecuritycacerts" -file D:ProgramDataAcunetixcertsca.cer
解释 通过 keytool 导入 证书 Java keystore 目录“ D:developjavajdk1.8.0_211jrelibsecuritycacerts
导入 目标Acunetix ca “D:ProgramDataAcunetixcertsca.cer
输入密码 changeit
确认已在Windows上成功安装证书
keytool -list -keystore "D:developjavajdk1.8.0_211jrelibsecuritycacerts" -alias AcunetixCA
输入密码 changeit
显示如下信息
Jenkins on Linux
从命令提示符运行以下命令:
keytool -import -trustcacerts -alias AcunetixCA -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el8_1.x86_64/jre/lib/security/cacerts -file /home/acunetix/.acunetix/data/certs/ca.cer
确认已在Windows上成功安装证书
keytool -list -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el8_1.x86_64/jre/lib/security/cacerts -alias AcunetixCA
3)jenkins 配置Jenkins and Acunetix
在jenkins 中 manage Jenkins ——Configure System
在Acunetix API Key 增加Acunetix key
点击“添加” 按钮 设置Jenkins 凭据提供者
Acunetix key 是从哪获取的呢?
登陆Acunetix 平台在点击profile
通过复制生成的api key 列如
1986ad8c0a5b3df4d7028d5f3c06e936cf9fc21aaf2a947ff88827667d8186740
复制的到上面Jenkins 凭据提供者中的secret 中
点击Test Connection 验证配置是否成功
4)jenkins 项目中配置Acunetix实现自动安全测试
新建ddd项目,添加acunetix scan 配置
1 Scan Type
这里面根据扫描的类型(完全扫描、扫描高风险漏洞、扫描XSS漏洞、扫描SQL注入漏洞、弱口令检测、Crawl Only,仅爬虫、恶意软件扫描)等属性进行扫描
2 Scan Target
这个里面是根据acunetix 平台中目前存在的目标项列出,我们根据自己的实际项目选择一个目标项目
3.Fail the build if threat level is
这个根据自己实际项目来(不要使构建失败、高危、中危和高位、低位中危高危)
目前我们设置有漏洞也不阻止构建失败
4.Generate Report
这里面会根据报告模版创建各种报告,目前我们默认就选择developer 就可以了
这里面报告和acunetix平台报告相对应
设置好点击保存
5)jenkins 项目中实现自动安全测试
点击项目构建,完成项目 编译、打包、单元测试、接口测试、安全测试等。
我这里只是设置了安全测试 其他这里就不做重点介绍。
构建后自动生成安全测试报告
以上,我们通过jenkins+Acunetix 实现了 安全自动化测试,这样我们再结合其他单元测试、自动化接口测试,就实现了简单的DevSecOps功能了.