站長資訊網
        最全最豐富的資訊網站

        搭建基于SornaQube的自動化安全代碼檢測平臺

        一、背景和目的

          近年來,隨著新業務、新技術的快速發展,應用軟件安全缺陷層出不窮。雖然一般情況下,開發者基本都會有單元測試、每日構建、功能測試等環節來保證應用的可用性。但在安全缺陷方面,缺乏安全意識、技能和工具,最終導致了安全缺陷的出現。

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

        二、自動化安全代碼檢測平臺概述

        2.1. 什么是安全代碼審計工具?

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

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

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

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

          2)工具誤報較高,如何提高準確率,軟件開發人員很難處理;

          3)單一工具如何與開發過程進行結合。

          4)安全代碼審計工作在企業里很有可能是安全專業人員的職責,這樣企業里會出現安全和開發隔離的情況。

        2.3. 什么是自動化安全代碼檢測平臺

        自動化安全代碼檢測平臺應該具有以下的幾個功能:

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

          2)自動、高效、準確的進行檢測

          3)自動生成檢測報告,供項目管理者和開發人員查看

        三、搭建基于SonarQube的自動化安全代碼檢測平臺搭建實踐

        3.1. 檢測平臺概述

        這個平臺環境主要是基于Jenkins、SVN、Maven、SonarQube集成搭建的,下面分別大概介紹一下這幾個軟件:

        Jenkins(本次環境使用的是:sonarqube-6.7.6)是一個開源軟件項目,是基于Java開發的一種持續集成工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。先了解一下持續集成的概念:持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。而 Jenkins就是基于Java開發的一種持續集成工具,用于監控持續重復的工作。

        SVN(本次環境使用的是:Subversion1.9.7)是Subversion的簡稱,是一個開放源代碼的版本控制系統,用于多個人共同開發同一個項目,共用資源的目的。

        Maven(本次環境使用的是:Maven 3.5.2)是通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。Maven主要做了兩件事:統一開發規范與工具、統一管理jar包。

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

        3.2. 自動化安全代碼檢測平臺搭建的核心思路。

        在基于SonarQube的平臺中,SVN是檢測的入口,SonarQube是檢測的主要工具和檢測報告生成出口,Jenkins作為一個持續集成工具將SVN和SonarQube關聯起來,監控SVN的動作并適時觸發SonarQube對提交的代碼進行檢測。SonarQube類似一個路由器,以插件的形式集成了許多缺陷檢測工具,由于大多數檢測工具要求對輸入的項目進行編譯并提取相關的信息,因此,在本平臺上也安裝了Maven。在SonarQube開始檢測之前,Jenkins首先調用Maven對代碼進行編譯,然后將源代碼和編譯的輸出信息送給SonarQube進行檢測。

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

        1. 在代碼審計融入到軟件項目的持續開發過程中,自動生成高質量的檢測報告,無需人工干預,提高了軟件開發效率;

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

        3. 以阿里云鏡像的方式提供給大家使用,最大限度的保護了個人和公司的知識產權,方便工具的落地使用。

        目前,我們的團隊還在不斷地集成新的工具,以及開發更加高效和精確的檢測器,保證了平臺的持續更新升級,大家在簡單配置之后,能夠體檢到最好的代碼審計服務。

        3.3. 搭建方法和步驟

        3.3.1. 基礎環境準備

        硬件要求:

          CPU:1核心

          內存:4G(最少4G)

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

        然后,系統啟動后,使用root安裝jdk1.8和MySQL,并修改環境配置文件,具體操作命令可參考如下: 

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

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

        b. 添加環境變量配置,命令如下:

        vi /etc/profile

        在該文件的末尾加上以下內容后保存:

        #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. 更新生效,并測試,命令如下:

        source  /etc/profile       jave -version

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

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

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

        在安裝過程中,會要求設置root密碼,設置的密碼為:mysql

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

        mysql -u root -p

        3.3.2. 新建用戶

        一般情況下,開發者不能直接使用root用戶來管理和使用系統,最好通過一個專有用戶來進行操作,因此我們新建一個用戶qube,具體命令為:

        adduser qube

        本鏡像中,qube用戶的密碼設置為admin

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

         vi /etc/sudoers

        修改文件內容如下:

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

        保存退出,qube用戶就擁有了sudo權限

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

        3.3.3. 安裝SVN服務端

        1. 安裝SVN服務端

         yum install subversion 

        2. 配置SVN服務端

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

        接下來,進行身份認證、權限等相關配置。配置文件都在/opt/svn/repos/目錄下,我們主要關心的是conf和db文件,conf文件夾下是存放主配置文件和用戶、權限位置,db文件夾是存放svn轉儲后的數據、在conf目錄下authz文件是設置用戶權限,passwd文件是存儲用戶及密碼,svnserve.conf是主配置文件,先配置主配置文件:

        vim svnserve.conf

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

        再配置passwd文件:

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

        [users]     admin = admin

        最后配置authz文件

        vim authz
        #增加以下信息,admin擁有根目錄所有權限

        [/]  admin = rw

        3. 啟動服務

        輸入命令:

        svnserve -d -r /opt/svn/repos

        4. 驗證

        輸入命令:

        netstat -antp |grep svnserve 

        出現以下信息,即正常:

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

        3.3.4. 安裝SonarqubeSonar-scanner

        1. 下載SonarQube和Sonar-scanner

        可從以下信息得到下載:

        點擊這個http://www.linuxidc.com/Linux/2013-12/93755.htm 鏈接關注 Linux公社官方微信關注后回復數字157962。即可得到網友的分享密碼。

        如果取消關注Linux公社公眾號,即使再次關注,也將無法提供本服務!

        鏈接:https://pan.baidu.com/s/13Xq93FJ0RWFkLre2ILQdlA  密碼:獲得見上面的方法,地址失效請在下面留言。

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

        官網下載如下,要登陸的

        首先,在本機打開網站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

        安裝比較簡單,直接解壓即可:

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

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

        /opt/sonarqube//opt/sonar-scanner 

        3. 配置環境變量

        vim /etc/profile

        加入以下內容:

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

        保存退出vi后,更新:

        .  /etc/profile

        4. 創建數據庫sonar

        登陸MySQL

        mysql -u root -p

        創建sonar數據庫和用戶(用戶名和密碼都為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

        修改內容:

        sonar.jdbc.username=sonar     數據庫用戶名  sonar.jdbc.password=sonar      數據庫密碼  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

        修改內容:

        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. 運行sonarqube

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品人妻无码专区中文字幕 | 亚洲国产精品lv| 免费视频成人国产精品网站| 成人区人妻精品一区二区不卡视频| 久久久精品国产亚洲成人满18免费网站 | 亚洲精品国精品久久99热| 欧美精品黑人巨大在线播放| 精品亚洲成a人片在线观看少妇| 久久久久久无码国产精品中文字幕| 北条麻妃国产九九九精品视频| 国产精品国产三级专区第1集| 精品国产一区二区三区不卡 | 国产大片91精品免费观看不卡| 无码囯产精品一区二区免费| 亚洲成人国产精品| 日韩精品无码永久免费网站| 国产区精品福利在线观看精品| 91精品国产成人网在线观看| 国产人成精品午夜在线观看| 91精品全国免费观看青青| 精品久久久久香蕉网| 亚洲一区爱区精品无码 | 国产精品国产三级在线专区| 欧美精品在线一区二区三区| 国产精品视频一区国模私拍| 2022免费国产精品福利在线| 国产欧美精品一区二区三区| 欧美精品一区二区蜜臀亚洲| 少妇人妻偷人精品无码视频 | 亚洲精品456播放| 日韩在线精品一二三区| 欧美成人精品一区二三区在线观看 | 无码精品蜜桃一区二区三区WW| 久久精品国产亚洲5555| 久久国产成人亚洲精品影院| 国产午夜亚洲精品国产成人小说 | 99久久国语露脸精品国产| 2022国产精品自产拍在线观看| 国产精品亚洲午夜一区二区三区| 好属妞这里只有精品久久| 精品国产麻豆免费人成网站|