利用SonarQube + jenkins + maven搭建代码安全审计平台

软件产品代码安全问题,一直是影响软件产品质量的重要因素,糟糕的代码质量,导致产品上线后漏洞百出,再想修补时耗时耗力。因此,在产品开发阶段引入代码安全审查,改善代码质量,减少代码安全问题,是避免产品安全漏洞比较经济有效的手段。目前国内外有许多代码审计商业产品,如Fortify、Checkmarx、360代码卫士等,价格不菲,另外也有一些以云服务方式的代码审计产品,需要代码上传到云端进行审计,存在核心代码泄露的风险。实际上,利用现有的一些开源软件组合,也能轻松实现自动化的代码安全审计。本文利用SonarQube + jenkins + maven搭建代码安全审查平台。

系统环境:centos7

1、安装Java8

  • 如果系统原有安装低版本的java,需要先卸载掉
  • 下载jdk8 ,网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 上传新的jdk-8u121-linux-x64.rpm软件到/tmp,安装java
    rpm -ivh jdk-8u121-linux-x64.rpm
  • 安装完成后,使用命令 java -version确认安装成功
  • 配置JDK环境变量JDK环境变量。
    修改系统环境变量文件
    vi + /etc/profile
    向文件里面追加以下内容:
JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

使修改生效
source /etc/profile //使修改立即生效
echo $PATH //查看PATH值

2、安装PostgreSQL9.2

  • 安装postgresql软件包
    sudo yum install postgresql-server postgresql
  • 初始化db
    sudo su - postgres
    initdb -D /var/lib/pgsql/data
  • 启动/停止服务
    systemctl status postgresql.service
    systemctl start postgresql.service
    systemctl stop postgresql.service
  • 建立用户和数据库
$ sudo su - postgres
$ psql -U postgres -W
$ Password for user postgres: postgres
postgres=# CREATE USER sunarqube WITH PASSWORD 'mypassword';
postgres=# CREATE DATABASE sonarqube OWNER sunarqube ENCODING 'UTF8';

3、安装SonarQube5.6

  • 下载SonarQube5.6,网址:https://www.sonarqube.org/downloads/
  • 解压sonarqube-5.6.6.zip,命令unzip
  • 编辑安装目录/conf/sonar.properties,配置数据库,以PostgreSQL为例
sonar.jdbc.username=sunarqube
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
  • 启动sonarqube,服务默认启动9000端口
    ./bin/linux-x86-64/sonar.sh start
  • 浏览器打开http://x.x.x.x:9000/ ,默认管理员登录为admin/admin
  • 注意:浏览器打不开查看一下iptables防火墙拦截,postgresql数据库是否启动
  • 之后就是安装中文插件、java、python等插件,不再详述。

4、安装sonarqube-scan3.0.3

  • 下载sonarqube-scan3.0.3,网址:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip
  • 解压到/opt/sonar-scanner目录,进入conf目录,vi sonar-scanner.properties,更改配置为:
sonar.host.url=http://x.x.x.x:9000
sonar.sourceEncoding=UTF-8
  • 设置环境变量,vi /etc/profile,增加如下内容:
SONAR_SCANNER_HOME=/opt/sonar-scanner
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SONAR_SCANNER_HOME/bin
使修改生效
source /etc/profile   //使修改立即生效
echo $PATH   //查看PATH值

4、安装jenkins

  • 安装jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
  • 启动/停止jenkins服务,默认启动在8080端口
    sudo service jenkins start/stop/restart
    sudo chkconfig jenkins on
  • 打开浏览器访问http://x.x.x.x:8080 首次访问进行初始化配置,按提示操作即可

5、配置jenkins+SonarQube

  • 安装SonarQube Scanner for Jenkins插件,具体不再详述
  • 配置jenkins的全局配置,增加SonarQube servers,如下图


    利用SonarQube + jenkins + maven搭建代码安全审计平台_第1张图片
    图片.png
  • 其中Server authentication token的值是需要登录SonarQube的管理员账号配置界面中生成,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第2张图片
图片.png
  • 配置jenkins的Global Tool Configuration,增加SonarQube Scanner,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第3张图片
图片.png
  • 以上jenkins+SonarQube配置完成,在jenkins中新建一个测试项目,使用sonarqube扫描,会报Please provide compiled classes of your project with sonar.java.binaries错误,错误原因是没有再项目中找到编译的classes文件,下面安装maven解决编译问题

6、安装maven3.5

  • 下载maven3.5,网址:http://maven.apache.org/download.cgi
  • tar -xvf apache-maven-3.5.0-bin.tar.gz解压到/opt目录
  • 设置环境变量,vi /etc/profile,
MAVEN_HOME=/opt/apache-maven
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SONAR_SCANNER_HOME/bin:$MAVEN_HOME/bin
使修改生效
source /etc/profile   //使修改立即生效
echo $PATH   //查看PATH值
  • 检验maven是否安装成功
    mvn -v

7、使用SonarQube + jenkins + maven进行代码安全扫描

  • 在jenkins里新建一个maven项目,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第4张图片
图片.png
  • 源码管理可以使用git或svn,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第5张图片
图片.png
  • 构建触发器、构建环境、bulid都默认,在bulid后增加执行sunarqube scanner操作,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第6张图片
图片.png
  • 配置sunarqube scanner的参数,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第7张图片
图片.png

具体scanner参数含义见以下网址:https://docs.sonarqube.org/display/SONAR/Analysis+Parameters

  • 注意:findbugs的规则检查需要编译,所以在build后执行sonarqube scanner,sonar.java.binaries配置为编译后的class文件目录
  • 配置完成后保存,开始构建,构建完成后,点击SonarQube菜单进入代码安全扫描报告,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第8张图片
图片.png
  • SonarQube对项目代码的Bugs、漏洞等形成详细报告,供开发人员后续改进代码质量,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第9张图片
图片.png
  • 可以查看漏洞的详细信息和代码,如下图
利用SonarQube + jenkins + maven搭建代码安全审计平台_第10张图片
图片.png

通过以上开源软件组合,可以实现系统开发阶段自动化方式的代码安全审查,减少人工审查工作量,提高代码审查效率,可有效地帮助开发人员改善代码质量。

你可能感兴趣的:(利用SonarQube + jenkins + maven搭建代码安全审计平台)