站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        搭建基于SornaQube的自動(dòng)化安全代碼檢測(cè)平臺(tái)

        一、背景和目的

          近年來,隨著新業(yè)務(wù)、新技術(shù)的快速發(fā)展,應(yīng)用軟件安全缺陷層出不窮。雖然一般情況下,開發(fā)者基本都會(huì)有單元測(cè)試、每日構(gòu)建、功能測(cè)試等環(huán)節(jié)來保證應(yīng)用的可用性。但在安全缺陷方面,缺乏安全意識(shí)、技能和工具,最終導(dǎo)致了安全缺陷的出現(xiàn)。

          對(duì)于軟件開發(fā)安全意識(shí)和軟件開發(fā)安全技能方面本文中不再做詳述,軟件開發(fā)者可通過培訓(xùn)和實(shí)踐提高自身意識(shí)和技能,本文目的主要是提供一種思路和方法,讓軟件開發(fā)者像測(cè)試軟件功能一樣,測(cè)試軟件安全缺陷,并且能夠融入到整個(gè)的軟件開發(fā)過程中。

        二、自動(dòng)化安全代碼檢測(cè)平臺(tái)概述

        2.1. 什么是安全代碼審計(jì)工具?

          代碼安全審計(jì)工具是以靜態(tài)的方式在程序中查找可能存在的安全缺陷,如:緩沖區(qū)溢出、空指針引用、資源泄露和SQL注入等。安全代碼測(cè)試工具目前比較多,例如Fortify、FindBugs等,大家感興趣可以通過互聯(lián)網(wǎng)搜索到這些工具的一些描述,本文中也不再贅述。

        2.2. 軟件開發(fā)人員是否可以自行直接利用這些安全代碼審計(jì)工具完成測(cè)試?

        答案在理論上是可以的,但是在實(shí)踐中基本是很難落地。原因有如下幾點(diǎn):

          1)工具眾多,很難選擇;

          2)工具誤報(bào)較高,如何提高準(zhǔn)確率,軟件開發(fā)人員很難處理;

          3)單一工具如何與開發(fā)過程進(jìn)行結(jié)合。

          4)安全代碼審計(jì)工作在企業(yè)里很有可能是安全專業(yè)人員的職責(zé),這樣企業(yè)里會(huì)出現(xiàn)安全和開發(fā)隔離的情況。

        2.3. 什么是自動(dòng)化安全代碼檢測(cè)平臺(tái)

        自動(dòng)化安全代碼檢測(cè)平臺(tái)應(yīng)該具有以下的幾個(gè)功能:

          1)能夠融入到軟件開發(fā)的過程中

          2)自動(dòng)、高效、準(zhǔn)確的進(jìn)行檢測(cè)

          3)自動(dòng)生成檢測(cè)報(bào)告,供項(xiàng)目管理者和開發(fā)人員查看

        三、搭建基于SonarQube的自動(dòng)化安全代碼檢測(cè)平臺(tái)搭建實(shí)踐

        3.1. 檢測(cè)平臺(tái)概述

        這個(gè)平臺(tái)環(huán)境主要是基于Jenkins、SVN、Maven、SonarQube集成搭建的,下面分別大概介紹一下這幾個(gè)軟件:

        Jenkins(本次環(huán)境使用的是:sonarqube-6.7.6)是一個(gè)開源軟件項(xiàng)目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。先了解一下持續(xù)集成的概念:持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成它們的工作,通過每個(gè)成員每天至少集成一次,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來驗(yàn)證,從而盡早地發(fā)現(xiàn)集成錯(cuò)誤。而 Jenkins就是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作。

        SVN(本次環(huán)境使用的是:Subversion1.9.7)是Subversion的簡(jiǎn)稱,是一個(gè)開放源代碼的版本控制系統(tǒng),用于多個(gè)人共同開發(fā)同一個(gè)項(xiàng)目,共用資源的目的。

        Maven(本次環(huán)境使用的是:Maven 3.5.2)是通過一小段描述信息來管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件項(xiàng)目管理工具。Maven主要做了兩件事:統(tǒng)一開發(fā)規(guī)范與工具、統(tǒng)一管理jar包。

        SonarQube(本次環(huán)境使用的是:6.7.6)是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái),用于管理源代碼的質(zhì)量,可以從七個(gè)維度檢測(cè)代碼質(zhì)量通過插件形式,可以支持包括java,C#,C/C++等二十幾種編程語言的代碼質(zhì)量管理與檢測(cè)。

        3.2. 自動(dòng)化安全代碼檢測(cè)平臺(tái)搭建的核心思路。

        在基于SonarQube的平臺(tái)中,SVN是檢測(cè)的入口,SonarQube是檢測(cè)的主要工具和檢測(cè)報(bào)告生成出口,Jenkins作為一個(gè)持續(xù)集成工具將SVN和SonarQube關(guān)聯(lián)起來,監(jiān)控SVN的動(dòng)作并適時(shí)觸發(fā)SonarQube對(duì)提交的代碼進(jìn)行檢測(cè)。SonarQube類似一個(gè)路由器,以插件的形式集成了許多缺陷檢測(cè)工具,由于大多數(shù)檢測(cè)工具要求對(duì)輸入的項(xiàng)目進(jìn)行編譯并提取相關(guān)的信息,因此,在本平臺(tái)上也安裝了Maven。在SonarQube開始檢測(cè)之前,Jenkins首先調(diào)用Maven對(duì)代碼進(jìn)行編譯,然后將源代碼和編譯的輸出信息送給SonarQube進(jìn)行檢測(cè)。

        將這些工具集成在一起的好處在于:

        1. 在代碼審計(jì)融入到軟件項(xiàng)目的持續(xù)開發(fā)過程中,自動(dòng)生成高質(zhì)量的檢測(cè)報(bào)告,無需人工干預(yù),提高了軟件開發(fā)效率;

        2. SonarQube以插件的形式可以集成眾多的檢測(cè)工具,目前已知可以支持XX種工具。檢測(cè)工具的更新升級(jí),不會(huì)影響到正常的軟件開發(fā)流程;

        3. 以阿里云鏡像的方式提供給大家使用,最大限度的保護(hù)了個(gè)人和公司的知識(shí)產(chǎn)權(quán),方便工具的落地使用。

        目前,我們的團(tuán)隊(duì)還在不斷地集成新的工具,以及開發(fā)更加高效和精確的檢測(cè)器,保證了平臺(tái)的持續(xù)更新升級(jí),大家在簡(jiǎn)單配置之后,能夠體檢到最好的代碼審計(jì)服務(wù)。

        3.3. 搭建方法和步驟

        3.3.1. 基礎(chǔ)環(huán)境準(zhǔn)備

        硬件要求:

          CPU:1核心

          內(nèi)存:4G(最少4G)

          操作系統(tǒng):linux(Ubuntu,CentOS均可)

        然后,系統(tǒng)啟動(dòng)后,使用root安裝jdk1.8和MySQL,并修改環(huán)境配置文件,具體操作命令可參考如下: 

        1. 安裝JDK1.8.0_151,操作如下:

        a. 在官方網(wǎng)站上下載tar包,并上傳至目錄/usr/bin下,然后是用tar命令解壓;

        b. 添加環(huán)境變量配置,命令如下:

        vi /etc/profile

        在該文件的末尾加上以下內(nèi)容后保存:

        #JDK  JAVA_HOME=/usr/bin/jdk1.8.0_151  JRE_HOME=/usr/bin/jdk1.8.0_151/jre  CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  PATH=$JAVA_HOME/bin:$PATH

        c. 更新生效,并測(cè)試,命令如下:

        source  /etc/profile       jave -version

        如果返回了java的版本信息,即設(shè)置成功。

        2. 安裝MySQL 5.7.20,操作如下:

        yum update  yum install -y mysql-server mysql-client

        在安裝過程中,會(huì)要求設(shè)置root密碼,設(shè)置的密碼為:mysql

        安裝完成后,使用root用戶登錄MySQL數(shù)據(jù)庫,登陸成功即安裝成功,命令為:

        mysql -u root -p

        3.3.2. 新建用戶

        一般情況下,開發(fā)者不能直接使用root用戶來管理和使用系統(tǒng),最好通過一個(gè)專有用戶來進(jìn)行操作,因此我們新建一個(gè)用戶qube,具體命令為:

        adduser qube

        本鏡像中,qube用戶的密碼設(shè)置為admin

        如果需要給qube用戶sudu權(quán)限,可修改/etc/sudoers文件,具體操作如下:

         vi /etc/sudoers

        修改文件內(nèi)容如下:

        # User privilege specification  root    ALL=(ALL:ALL) ALL  qube    ALL=(ALL:ALL) ALL

        保存退出,qube用戶就擁有了sudo權(quán)限

        添加好此用戶后,我們就使用該用戶登錄并完成后續(xù)的操作。

        3.3.3. 安裝SVN服務(wù)端

        1. 安裝SVN服務(wù)端

         yum install subversion 

        2. 配置SVN服務(wù)端

        mkdir -p /opt/svn/repos  svnadmin create /opt/svn/repos 

        接下來,進(jìn)行身份認(rèn)證、權(quán)限等相關(guān)配置。配置文件都在/opt/svn/repos/目錄下,我們主要關(guān)心的是conf和db文件,conf文件夾下是存放主配置文件和用戶、權(quán)限位置,db文件夾是存放svn轉(zhuǎn)儲(chǔ)后的數(shù)據(jù)、在conf目錄下authz文件是設(shè)置用戶權(quán)限,passwd文件是存儲(chǔ)用戶及密碼,svnserve.conf是主配置文件,先配置主配置文件:

        vim svnserve.conf

        anon-access = none     /**匿名用戶不可讀不可寫**/  auth-access = write    /**授權(quán)用戶可寫**/  password-db = passwd   /**指定賬號(hào)密碼配置文件**/  authz-db = authz      /**指定權(quán)限配置文件**/  realm = /opt/svn/repos   /**指定版本庫所在目錄**/

        再配置passwd文件:

        vim passwd
        #格式是用戶名=密碼,采用明文密碼。這里設(shè)置了一個(gè)用戶admin,密碼為admin

        [users]     admin = admin

        最后配置authz文件

        vim authz
        #增加以下信息,admin擁有根目錄所有權(quán)限

        [/]  admin = rw

        3. 啟動(dòng)服務(wù)

        輸入命令:

        svnserve -d -r /opt/svn/repos

        4. 驗(yàn)證

        輸入命令:

        netstat -antp |grep svnserve 

        出現(xiàn)以下信息,即正常:

        tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 28967/svnserve 

        3.3.4. 安裝SonarqubeSonar-scanner

        1. 下載SonarQube和Sonar-scanner

        可從以下信息得到下載:

        點(diǎn)擊這個(gè)http://www.linuxidc.com/Linux/2013-12/93755.htm 鏈接關(guān)注 Linux公社官方微信關(guān)注后回復(fù)數(shù)字157962。即可得到網(wǎng)友的分享密碼。

        如果取消關(guān)注Linux公社公眾號(hào),即使再次關(guān)注,也將無法提供本服務(wù)!

        鏈接:https://pan.baidu.com/s/13Xq93FJ0RWFkLre2ILQdlA  密碼:獲得見上面的方法,地址失效請(qǐng)?jiān)谙旅媪粞浴?/p>

        ——————————————分割線——————————————

        官網(wǎng)下載如下,要登陸的

        首先,在本機(jī)打開網(wǎng)站http://www.sonarqube.org/downloads/,

        找到下載地址:https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.1.zip

        和https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778.zip

        然后下載:

        cd /opt  wget  https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.1.zip wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778.zip

        2. 安裝SonarQube和Sonar-scanner

        安裝比較簡(jiǎn)單,直接解壓即可:

        yum install unzip unzip sonarqube-6.7.1.zip unzip sonar-scanner-cli-3.0.3.778.zip

        由于解壓以后文件目錄名稱較長(zhǎng),可以使用mv命令來更改名稱,更改為:

        /opt/sonarqube//opt/sonar-scanner 

        3. 配置環(huán)境變量

        vim /etc/profile

        加入以下內(nèi)容:

        #SonarQube  export SONAR_HOME=/opt/sonarqube/  export SONAR_RUNNER_HOME=/opt/sonar-scanner/  export PATH=$PATH:$SONAR_RUNNER_HOME/bin

        保存退出vi后,更新:

        .  /etc/profile

        4. 創(chuàng)建數(shù)據(jù)庫sonar

        登陸MySQL

        mysql -u root -p

        創(chuàng)建sonar數(shù)據(jù)庫和用戶(用戶名和密碼都為sonar)

        mysql> CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  Query OK, 1 row affected (0.00 sec)  mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';  Query OK, 0 rows affected (0.10 sec)

        mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';  Query OK, 0 rows affected, 1 warning (0.00 sec)  mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';  Query OK, 0 rows affected, 1 warning (0.00 sec)

        mysql> FLUSH PRIVILEGES;  Query OK, 0 rows affected (0.00 sec)  mysql>

        5. 配置sonarqube,修改配置文件sonar.properties

        cd /opt/sonarqube/conf
        vim sonar.properties

        修改內(nèi)容:

        sonar.jdbc.username=sonar     數(shù)據(jù)庫用戶名  sonar.jdbc.password=sonar      數(shù)據(jù)庫密碼  sonar.jdbc.url=jdbc:mysql:// localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false  sonar.web.port=9000 

        6. 配置sonar-scanner,修改配置文件sonar-scanner.properties

        cd /opt/sonar-scanner/conf
        vim sonar-scanner.properties

        修改內(nèi)容:

        sonar.host.url=http://localhost:9000  sonar.jdbc.username=sonar  sonar.jdbc.password=sonar  sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

        7. 運(yùn)行sonarqube

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 色综合久久精品中文字幕首页 | 久久福利青草精品资源站| 国产VA免费精品高清在线| 老司机亚洲精品影院| 久久99精品免费一区二区| 国产在线精品一区二区不卡| 人人妻人人澡人人爽精品日本| 久久99精品久久久久久齐齐| 中文字幕成人精品久久不卡| …久久精品99久久香蕉国产 | 国产精品视频永久免费播放| 偷拍精品视频一区二区三区| 国产精品视频九九九| 久久99国产精品一区二区| 国产精品久久午夜夜伦鲁鲁| 久久久免费精品re6| 亚洲成人国产精品| 麻豆精品| 久久无码人妻精品一区二区三区| 国产精品 综合 第五页| 911亚洲精品国产自产| 久久国产精品99精品国产987| 国产成人精品高清在线观看99| 国产精品熟女一区二区| 激情亚洲一区国产精品| 精品人妻无码一区二区色欲产成人| 亚洲精品无码久久久影院相关影片| 欧美精品91欧美日韩操| 久久精品成人| 久久青青草原精品国产不卡| 欧美成人精品高清视频在线观看 | 四虎永久在线精品免费一区二区| 精品久久久久中文字| 好湿好大硬得深一点动态图91精品福利一区二区 | 青青青国产依人精品视频 | 91精品无码久久久久久五月天| 日韩麻豆国产精品欧美| 91精品久久久久久无码| 国产高清在线精品一区小说| 国产精品无码永久免费888| 国产精品原创巨作?v网站|