目前主流的開發采用的是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功能了.