首页 > 系统相关 >gitlab+sonarqube实现自动化代码漏洞扫描(centos内网环境安装配置及使用遇到的问题)

gitlab+sonarqube实现自动化代码漏洞扫描(centos内网环境安装配置及使用遇到的问题)

时间:2023-12-11 16:23:25浏览次数:35  
标签:postgresql scanner centos runner sonarqube gitlab sonar 内网

sonarqube可以与源码管理工具gitlab集成,实现提交代码后自动扫描检测代码的相关漏洞。该CI/CD过程大致为:

1、研发人员提交源码至gitlab服务器 —>

2、gitlab runner执行指定脚本(由项目的.gitlab-ci.yml配置文件指定具体内容,如编译项目、开启代码检测) —>

3、sonar-scanner对项目进行扫描,sonar-scanner将扫描结果发送至服务器进行查看。

在上述过程3中,由于需要在gitlab服务器上通过sonar-scanner对项目进行编译,这就要求gitlab服务器能联网下载项目相关依赖包,否则只能提前将项目依赖包上传至gitlab服务器并在.gitlab-ci.yml的脚本中指定依赖包的本地位置。如果项目依赖发生变化,还得将新的依赖包上传服务器才能完成编译。因此在内网环境下,比较适合稳定没有太大变化的项目使用。且sonarqube社区版只支持主分支的检测,如果想要检测其他分支需要安装开发版或者企业版。以下记录gitlab、sonarqube的安装配置过程(centos内网环境)。

 

一、安装gitlab(社区版)、gitlab-runner

说明:gitlab-runner是gitlab ci自动化流水线的一个服务,主要作用是用于配合gitlab实现自动化执行相关动作,例如自动化的编译、部署、测试等

1、安装gitlab依赖项policycoreutils-python;

2、安装perl环境(有可能不需要,但是我安装时提示了,服务器没有perl);

3、安装git、安装gitlab;

4、修改gitlab的配置文件将external_url改成实际的服务器ip以及想要的端口号,如external_url 'http://172.18.88.45:8055'

5、执行命令gitlab-ctl reconfigure 重启gitlab服务(该过程会很久);

6、访问系统,使用root账号登录(初始密码在/etc/gitlab/initial_root_password里)、修改密码;

7、修改系统为中文:root账号-偏好设置-本地化里,语言选择中文即可(http://172.18.88.45:8055/-/profile/preferences)

8、安装gitlab-runner(网上有提到gitlab-runner的版本最好与gitlab保持一致,否则可能会有意外情况。我这边装的版本是一致的),修改服务配置文件,将用户改为root。默认是gitlab-runner,不改可能有权限问题;

vi /etc/systemd/system/gitlab-runner.service

ExecStart=/usr/bin/gitlab-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--user" "root"

重启服务

systemctl daemon-reload

systemctl restart gitlab-runner

  

二、安装sonarqube(社区版)、sonar-scanner

说明:sonar-scanner主要租用是用于扫描指定代码漏洞,并将结果推送至sonarqube服务器保存查看。这两个一般安装在gitlab服务器上。

1、安装jdk11;

2、修改文件句柄数(最大文件数)和用户最大进程数限制;vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 655350
* hard nproc 655350

3、安装数据库,一般选择postgresql(以postgresql13为例);

a.#创建数据目录(位置自定)
mkdir -p /home/data/postgresql-13.0/

b.#修改目录的属主属组
chown postgres:postgres -R /home/data/postgresql-13.0/

c.#初始化pgsql
sudo -u postgres /usr/pgsql-13/bin/initdb --encoding=UTF-8 --username=postgres --pgdata=/home/data/postgresql-13.0/data
d.#记录配置文件路径

vi /home/data/postgresql-13.0/data/postgresql.conf

listen_addresses = '172.18.88.44' # what IP address(es) to listen on;

e.#定义哪些服务器、可以用什么样的方式,访问postgresql

/home/data/postgresql-13.0/data/pg_hba.conf

host all all 0.0.0.0/0 md5
f.#修改service文件中数据目录

vi /usr/lib/systemd/system/postgresql-13.service

Environment=PGDATA=/home/data/postgresql-13.0/data/
g.#重载服务
systemctl daemon-reload 

h.#启动postgresql
systemctl start postgresql-13
systemctl enable postgresql-13

 4、创建sonarqube使用的数据库和用户

psql -U postgres #连接数据库(此命令会用postgres用户,默认连入postgres数据库。-U指定用户 -d指定数据库)
#新建用户sonarqube,密码xxxxxx
create user sonarqube with password 'xxxxxx';
#创建数据库sonarqube_9_6并指定owner为sonarqube
create database sonarqube_9_6 with owner sonarqube;
#授权sonarqube用户在数据库sonarqube_9_6拥有所有权限
grant all on database sonarqube_9_6 to sonarqube;

 5、安装sonarqube,修改配置文件

#创建用户sonar,因为sonarqube会用到ES,ES不能用root用户启动
useradd sonar

#解压包
unzip sonarqube-9.6.1.59531.zip

 #修改目录的属主属组

chown -R sonar:sonar sonarqube-9.6.1.59531/

#修改配置文件,postgresql连接配置
sonar.jdbc.username=sonarqube
sonar.jdbc.password=xxxxxx
sonar.jdbc.url=jdbc:postgresql://xx.xx.xx.xx:5432/sonarqube_9_6

#端口配置
sonar.web.port=9000

6、启动sonarqube

sudo -u sonar /home/soft/sonarqube-9.6.1.59531/bin/linux-x86-64/sonar.sh start

7、汉化的话,可以

将下载好的汉化包(sonar-l10n-zh-plugin-9.6.jar)移动到插件目录下,然后重启一下sonarqube服务即可
/home/soft/sonarqube-9.6.1.59531/extensions/plugins/

8、安装sonar-scanner

a、修改配置文件(假设安装在/usr/local/sonar-scanner下)

 vi /usr/local/sonar-scanner/conf/sonar-scanner.properties

sonar.host.url=http://172.18.88.44:9000 #sonarqube服务器url
sonar.login=XXXXXXXXXX  #在sonarqube里配置的令牌,后面会讲到在sonarqube里怎么配置
sonar.sourceEncoding=UTF-8 #Default source code encoding

b、修改系统配置文件,增加scanner的配置

vi /etc/profile

export SONAR_SCANNER_HOME=/usr/local/sonar-scanner
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}

 c、重载配置文件

source /etc/profile

d、查看sonar-scanner是否启动了

sonar-scanner -v

  

 三、gitlab与sonarqube的集成

gitlab端:

1、选择具体想要启动CI/CD的项目-设置-CI/CD-Runner,创建令牌,用于gitlab-runner的身份认证

 2、在命令行中执行 gitlab-runner register  ,进行gitlab-runner的注册配置。按照提示,输入相关的gitlab服务地址、令牌token、唯一标识、描述等。全部完成之后,回到gitlab页面中,可以看到可用的指定Runner(上图中的CheckCode)。

修改runner,把运行未标记的作业勾上:

 

 sonarqube端:

1、使用admin登录,配置-ALM-GitLab-创建配置,配置GitLab服务器的信息:

 2、配置完毕后,就可以设置项目相关内容了:项目-新增项目-GitLab,选择需要从gitlab中进行分析的项目(会要求输入gitlab的令牌,用于访问gitlab上的项目。如果前面配置没问题,应该可以看到gitlab中的项目。注意,看到的项目范围跟你输入的gitlab令牌对应的用户权限有关系)

 3、根据项目代码构建方式选择对应的技术:

 4、按照提示创建sonarqube的令牌并在gitlab的ci/cd配置页面中建立对应的变量:

 5、复制.getlab-ci.yml配置文件内容,完成教程,到gitlab对应的项目-ci/cd-编辑器中,粘贴对应的内容

 

 注意:麻烦的(坑)地方来了,由于我们的服务器在内网无法访问互联网,所以默认的脚本需要修改不联网方式,同时需要安装项目对应的sonarscanner(本示例中,安装的是net版本的)、提前将项目依赖包上传到服务器并在脚本中指定位置,否则运行不起来:

windows下查看本地的nuget包位置命令:dotnet nuget locals all --list  需要将本地的package内容上传到服务器上。

 

 完成后提交更改,就可以跑起来了。通过在代码端修改代码并提交gitlab,将会触发扫描任务:

 到sonarqube管理页面中查看扫描结果:该项目没有安全漏洞,有2个bug

  

标签:postgresql,scanner,centos,runner,sonarqube,gitlab,sonar,内网
From: https://www.cnblogs.com/coldlight/p/17887082.html

相关文章

  • ChatGPT叫你如何在centos中配置javapath变量
    当使用vim编辑器时,你可以按照以下步骤来编辑bash配置文件:打开~/.bashrc文件:bashvim~/.bashrc或者,如果你选择在系统级别配置,可以使用:bashsudovim/etc/environment在vim中编辑文件:移动光标到文件末尾,按下i进入插入模式,然后添加以下行:bashexportJ......
  • centos7安装jdk8
    1.去oracle官网下载jdk1.8,需要注册,下载后缀为.tar.gz,比如jdk-8u381-linux-x64.tar.gz2.上传到服务器,解压建立文件夹,将java安装到指定目录mkdir-p/home/java8由于java的安装包解压后默认套了一层,解压后默认会有jdk1.8.0_381这一层文件夹,我不想要,所以解压的时候......
  • [linux] [Centos8] 一台虚拟机的安装配置全过程
    今年7月的时候刚学linux,写过几篇配置,结果学得越多才发现已经过时了,这两天重装的时候被自己的文章搞晕了......
  • centos使用htop查看资源
    环境centos7.9介绍htop是一个用于实时查看和管理系统的进程、内存、CPU使用情况的命令行工具。它提供了一个友好的界面,可以轻松地在终端中监控你的Linux系统。使用安装yuminstallhtop-y如果没有次安装包,更新最新的源yuminstallepel-release-y启动htop3.......
  • CentOS(7.6)环境下迁移Mysql(5.7)的data目录到指定位置
    第一步:关闭Mysql#关闭Mysql服务systemctlstopmysqld#查看Mysql服务状态ps-ef|grepmysql 第二步:创建新目录,并拷贝数据文件#创建data文件目录mkdir/data/mysql/data/#给mysql账号赋权chown-Rmysql:mysql/data/mysql/data/#拷贝数据到data文件下cp-a/var/lib/m......
  • centos 运维 jar 包脚本
    新建sh文件#!/bin/bash#DefinevariablesJAR_FILE="your-application.jar"JAVA_OPTS="-Xmx512m-Xms256m"PID_FILE="pid.txt"#Functiontocheckiftheapplicationisrunningis_running(){[-f"$PID_FILE"]&......
  • CentOS的GPT分区+LVM挂载
    为突破MBR分区限制(最大卷:2T,最多4个主分区或3个主分区加一个扩展分区)常常以GPT分区方式(突破MBR4个主分区限制,每个磁盘最多支持128个分区,支持大于2T的分区,最大卷可达18EB)新建分区并挂载,下面记录自己常用的GPT+LVM的方式挂载新的硬盘的方式。1.查看硬盘标签使用fdisk-l也可查看......
  • centos7.9 编译安装redis 6.2.6
    参考地址:https://zhudo.net/server/linux/149.html 1.下载和安装下载redis需要其他版本去官网自行下载wget-chttps://download.redis.io/releases/redis-6.2.6.tar.gz//解压tar-zvxfredis-6.2.6.tar.gz//把安装包移动到安装目录,并且重命名为redismvredis-6.2.6......
  • centos7.9 编译安装cmake 3.23.0
     参考地址:https://www.zhudo.net/server/linux/125.html1、先检查并卸载老版本yumremovecmake2、准备安装好cmake所需的依赖yum-yinstallgccgcc-c++opensslopenssl-develtar3、下载源码官方地址:https://github.com/Kitware/CMake/releases/download/v3.23.0/......
  • CentOS 7.6 安装 Go 1.20.12 环境教程+更换国内源
    安装因为需要安装httpx,官方github要求使用1.20版本的Go环境,就没有安装最新的1.21。先去官网查看:https://go.dev/dl/如上图,我们选择Linuxamd64的(使用命令下就行,如若不能正常下载,就直接下完传上服务器也一样)wgethttps://go.dev/dl/go1.20.12.linux-amd64.tar.gz2.其次......