Sonarqube - công cụ phát hiện lỗi bảo mật code cho Website

Sugi_b3o

Moderator
Thành viên BQT
30/08/2016
316
446 bài viết
Sonarqube - công cụ phát hiện lỗi bảo mật code cho Website
SonarQube là một nền tảng mã nguồn mở được phát triển bởi SonarSource để liên tục kiểm tra chất lượng code, review tự động với việc phân tích code để phát hiện lỗi, đoạn code không tốt, hoặc lỗ hổng bảo mật trên 20 ngôn ngữ lập trình.

3.png

Sonarqube hiện hỗ trợ các ngôn ngữ lập trình sau: Java (including Android), C#, PHP, JavaScript, C/C++, COBOL, PL/SQL, PL/I, ABAP, VB.NET, VB6, Python, RPG, Flex, Objective-C, Swift, Web and XML.

Nó được tích hợp vào công cụ phát triển Eclipse, Visual Studio, IntelliJ IDEA thông qua plugin SonarLint và tích hợp với các công cụ khác như LDAP, Active Directory, GitHub….
-----------------------------------------------------------------------------------------------------

Kiểm tra và cấu hình trước khi cài đặt trên Linux

Mã:
vi /etc/sysctl.conf
vm.max_map_count=262144

1.png

Mã:
vi /etc/security/limits.conf

* soft     nproc          8192

* hard     nproc          8192

* soft     nofile         65536

* hard     nofile         65536

(Yêu cầu restart sau khi cấu hình)

2.png

Kiểm tra seccomp

[imath]grep SECCOMP /boot/config-[/imath](uname -r)

Kết quả trả về mong muốn

3.png

Cài đặt các gói yêu cầu:

Java11:
Mã:
curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
sudo mv jdk-11.0.2/ /usr/local/
sudo vim /etc/profile.d/jdk11.sh
export JAVA_HOME=/usr/local/jdk-11.0.2
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile.d/jdk11.sh

Kiểm tra version sau khi đã cài xong

Postgresql10:
Mã:
yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-libs-10.7-2PGDG.rhel7.x86_64.rpm
yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-10.7-2PGDG.rhel7.x86_64.rpm
yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-latest-x86_64/postgresql10-server-10.7-2PGDG.rhel7.x86_64.rpm

Kiểm tra version

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Chỉnh file pg_hba
Mã:
sudo nano /var/lib/pgsql/10/data/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32    md5
# IPv6 local connections:
host    all             all             ::1/128             md5

6.png

Khởi động postgreasql

Mã:
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

Kiểm tra postgreasql

sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"

Tạo user postgres

Mã:
sudo passwd postgres

su - postgres

createuser sonar;

psql

ALTER USER sonar WITH ENCRYPTED password 'P@ssword';

CREATE DATABASE sonar OWNER sonar;

\q

exit

Tải ứng dụng

Mã:
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.0.zip

sudo unzip sonarqube-8.0.zip -d /opt

sudo mv /opt/sonarqube-8.0 /opt/sonarqube

sudo useradd sonar

sudo chown -R sonar:sonar /opt/sonarqube


Chỉnh cấu hình để kết nối db, port, webservice

Mã:
sudo vi /opt/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar                                                                                                               

sonar.jdbc.password=P@ssword

sonar.jdbc.url=jdbc:postgresql://localhost/sonar

sonar.web.host=0.0.0.0

Chỉnh cấu hình service

sudo vi /etc/systemd/system/sonarqube.service

7.png

Mã:
[Unit]

Description=SonarQube service

After=syslog.target network.target


[Service]

Type=simple

User=sonarqube

Group=sonarqube

PermissionsStartOnly=true

ExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/lib/sonar-application-8.0.jar

StandardOutput=syslog

LimitNOFILE=65536

LimitNPROC=8192

TimeoutStartSec=5

Restart=always

SuccessExitStatus=143


[Install]

WantedBy=multi-user.target

Run

Mã:
/opt/sonarqube/bin/linux-x86-64/sonar.sh start

/opt/sonarqube/bin/linux-x86-64/sonar.sh status

/opt/sonarqube/bin/linux-x86-64/sonar.sh restart

Check service

sudo systemctl status sonarqube

Let’s scan

Hướng dẫn sử dụng SonarQube

Bước 1: Click vào “Login” và sử dụng tài khoản mặc định “admin” với password “admin” để đăng nhập

8.jpeg

Bước 2: Điền tên của Project của bạn để tạo token

9.jpeg

Bước 3: Chọn ngôn ngữ chính cho Project của bạn

10.png

Bước 4: Thực hiện theo thứ tự:

– Chọn hệ điều hành
– Định nghĩa 1 project key
– Download Scanner tool.

11.png

Ví dụ: Git clone 1 dự án có mã nguồn mở tại đây

Các bạn cấu hình file sonar-project.properties

Mã:
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0

sonar.sources=src,copybooks

sonar.sourceEncoding=UTF-8

## Cobol Specific Properties

# comma-separated paths to directories with copybooks
sonar.cobol.copy.directories=copybooks
# comma-separated list of suffixes
sonar.cobol.file.suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy

## Flex Specific Properties

# retrieve code coverage data from the Cobertura report
sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml

# PL/I Specific Properties
sonar.pli.marginLeft=2
sonar.pli.marginRight=0

Sau khi config xong bạn tải file sonar-scanner về và chạy lệnh scan như ví dụ bên dưới
Sau khi scan xong, về lại trang chủ để xem report project của các bạn

12.png

Hướng dẫn cài đặt Sonarque trên docker


Pull docker & tạo file cấu hình

Mã:
docker pull sonarqube
Mã:
$ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

Sau đó chạy lệnh

Mã:
$ docker run -d --name sonarqube \
-p 9000:9000 -p 9092:9092 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=sonar \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar \
sonarqube

Khởi động với lệnh

Mã:
$ docker start sonarqube

Hướng dẫn cài đặt trên Windows

BƯỚC 1: CÀI ĐẶT JDK 11

  • Tải JDK 11 và cài đặt vào ổ C:Java
  • Mở Control Panel, chọn Advanced System Settings
  • Set JAVA_HOME: đường dẫn cài đặt JDK

15.png

  • Set Path: đường dẫn chứa thư mục bin của JDK

16.png

BƯỚC 2: TẢI CÁC PACKAGE

17.png


18.png

Các bạn giải nén tất cả và đổi tên thư mục thành sonarqube và sonar-scanner.

Copy tất cả các thư mục trên vào Program Files của ổ C.

BƯỚC 3: START SERVER CỦA SONARQUBE

Mở file sonar.properties tại C:program Filessonarqubeconf. Bỏ comment lệnh #sonar.search.port=9001 và đổi lại thành sonar.search.port=0

Vào trong thư mục C:program Filessonarqubebinwindows-x86-64, tìm và chạy file StartSonar.bat để bật server sonarqube lên. Sau khi chạy thành công thì vẫn để cửa sổ chứ không được tắt.

Thấy dòng chữ SonarQube is up là thành công.

19.png

 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bạn cóhướng dẫn sử dụng sonarqube vs docker không ạ?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
ở đây sao lại mở 2 port bạn nhỉ
```
$ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
```
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thẻ
scan code sonarqube
Bên trên