|  |  | 

General Topics Software Security

Azure Linux Ubuntu 18.04 LTS üzerine Sonarqube Latest (8.x.x) Kurulumu

img-responsive

Ön Hazırlık

  • Kurulumda Azure Ubuntu LTS 10.84 Linux VM kullanılmıştır.
  • Sonarqube Latest (8.7.0.41497) Kullanılmıştır
  • Veritabanı Ms SQL 2017 CU Kullanılmıştır (Collation CA ve AS olmak zorunda – SQL_Latin1_General_CP1_CS_AS )
  • İşlemler öncesinde mutlaka BT Sistem ve Network ekibinden internet çıkışı için izin verilmesi istenmelidir. Bu izin gerekli dosyaların yüklenmesi ve sistem güncellemesi için gereklidir.​
  • Gerekli çıkış izinlerinden sonra aşağıdaki komutlar sırası ile çalıştırılmalıdır. Herhangi bir hata olmaması durumunda kurulum aşamalarına devam edilmelidir. Aksi halde kurulum sırasında sorun yaşanabilir.

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install -y curl gnupg2 unzip

sudo apt install default-jre

İlk Olarak Aşağıdaki Komutlar Çalıştırılır.

Sonar Kurulum Adımları

Sonar’ı Çalıştırmak İçin Gerekli Olan Kullanıcı ve Grup Yaratılır

sudo groupadd -r sonarqube

sudo useradd -r -g sonarqube sonarqube

Sonar Kurulum Dosyaları Resmî Sitesinden İndirilir ve Kurulur

Resmi adres harici başka bir adresten hazır veya farklı bir dosya indirilmemelidir.

​cd /opt

curl -o sonarqube.zip -fSL https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip

curl -o sonarqube.zip.asc -fSL https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.7.0.41497.zip.asc

gpg –batch –verify sonarqube.zip.asc sonarqube.zip

unzip -q sonarqube.zip

mv sonarqube-8.7.0.41497 sonarqube

İlgili Kurulum Dizinlerine (Recursive -R) ile grup ve kullanıcı ataması yapılır

chown -R sonarqube:sonarqube sonarqube

Aşağıdaki komut (Runser) ile test çalıştırması yapılır.

Sonar “root" olarak çalıştırlmaz!

sudo runuser -u sonarqube /opt/sonarqube/bin/sonar.sh start

Aşağıdaki Komut ile Test Çalıştırılmasının Durumu Kontrol Edilir

Runuser başka bir kullanıcı yetkisi ile çalıştırmayı ifade eder

​sudo runuser -u sonarqube /opt/sonarqube/bin/sonar.sh status

Olası Hata Durumunda Bakılabilecek Log Dosyaları

cat /opt/sonarqube/logs/sonar.[tarih_bilgisi].log

cat /opt/sonarqube/logs/web.log

cat /opt/sonarqube/logs/access.log

Nginx Sunucu Kurulum Adımları ve Reverse Proxy Olarak Ayarlanması:

Gerekli Uygulamalar Kurulur ve Default Tanım Silinir

sudo apt-get install nginx

sudo unlink /etc/nginx/sites-enabled/default

HTTPS/TLS SSL için Sertifikalar Sistem Ekibinden Temin Edilir ve Kullanıcı Dizinine Kopyalanır

/home/sonaruser/certs/sonarqube-site.crt

/home/sonaruser/certs/sonarqube-site.key

vi Komutu ile Nginx için Reverse Proxy Ayarları Oluşturulur

cd /etc/nginx/sites-available/

sudo vi reverse-proxy.conf

Dosya İçeriği Aşağıdaki Şekilde Oluşturulur ve “:!qw” Komut Dizisi ile Kayıt Edildikten Sonra Kapatılır.

#nginx reverse proxy settings – mksecurity

server {

                listen 80;

                server_name sonar.site.com;

                return 301 https://sonar.site.com$request_uri;

}

server {

                listen 443 ssl http2 default_server;

                listen [::]:443 ssl http2 default_server;

                server_name sonar.site.com;

                ssl_certificate /home/sonaruser/certs/sonarqube-site.crt;

                ssl_certificate_key  /home/sonaruser/certs/sonarqube-site.key;

                location / {

                               proxy_pass http://sonar.site.com:9000;

                               proxy_set_header Host $host;

                               proxy_set_header X-Forwarded-For $remote_addr;

                               proxy_set_header X-Forwarded-Proto https;

                               proxy_set_header X-Real-Ip $remote_addr;

                               proxy_set_header X-Scheme $scheme;

                               }

                }

Performans Hataları İçin Güncelleme (413 Request Entity Too Large)

Yedek almayı unutmayın ( cp nginx.conf ngnix.conf.old )

vi /etc/nginx/nginx.conf

http { } etiketi içerisine,
client_max_body_size 128M;
parametresini ekleyin

Nginx için Sembolik Link Oluşturulur ve Çalıştırma Testleri Yapılır

Artık sistem Reverse Proxy olarak hizmet verecek durumu gelmiştir. Running ve Yeşil (OK)

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

service nginx configtest

sudo /etc/init.d/nginx restart

systemctl status nginx.service

“nginx.service – A high performance web server and a reverse proxy server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Sat 2021-03-13 05:19:16 UTC; 2 days ago”

Açılışta Otomatik Başlatma (Init.d)

Sistem her yeniden başladığında bu servis ile Sonar’ı da yeniden başlatacaktır.

“vi” komutu ile /etc/init.d/ Klasöründe “sonar” Adında Bir Script Dosyası Oluşturulur

sudo vi /etc/init.d/sonar

Dosya içeriği aşağıdaki gibi oluşturulur ve “:!qw” komut dizisi ile kayıt edilip kapatılır.

#!/bin/sh

#

# rc file for SonarQube

#

# chkconfig: 345 96 10

# description: SonarQube system (www.sonarsource.org)

#

### BEGIN INIT INFO

# Provides: sonar

# Required-Start: $network

# Required-Stop: $network

# Default-Start: 3 4 5

# Default-Stop: 0 1 2 6

# Short-Description: SonarQube system (www.sonarsource.org)

# Description: SonarQube system (www.sonarsource.org)

### END INIT INFO

/usr/bin/sonar $*

/usr/bin/sonar için Sembolik Link Oluşturulur ve Başlatılır (Windows’taki shortcurt benzeri)

sudo ln -s /opt/sonarqube/bin/linux-x86-64/sonar.sh /usr/bin/sonar

sudo chmod 755 /etc/init.d/sonar

sudo update-rc.d sonar defaults

sudo systemctl enable sonar.service

sudo systemctl status sonar.service

Veritabanı Ayarları

Buraya kadar işlemler tamamlandı ise sorunsuz şekilde sonarqube çalışıyor olmalı. Bu aşamadan sonra sonar için farklı bir veritabanı bağlantısı ayarlanabilir.

Bu ayalar sadece MsSQL için gösterilmiştir, farklı ayarlar için sonar.properties dosyasındaki açıklamalara göre değişiklik yapılması gereklidir. Örneğimizde SQL Server 2017 ve veritabanı adı ise “sonarqube”.

Sonar Ayarlar Dosyası Açılır

sudo vi /opt/sonarqube/conf/sonar.properties

Aşağıdaki DB Parameterleri Uygun Değerleri ile Güncellenir

sonar.jdbc.username=[VERI_TABANI_KULLANICISI]

sonar.jdbc.password=[VERI_TABANI_SIFRESI]

sonar.jdbc.url=jdbc:sqlserver://[SQL_SERVER_ADRESI]:1433;databaseName=sonarqube

Performans Değişiklikleri

Performans İyileştirmesi için Aşağıdaki Parametreler Girilir

Dikkat buradaki ayarlar sunucunun kapasitesine göre ayarlanır.

Örnekte sistem 8Gb Ram’e sahiptir.

Hiçbir zaman kapasite üstü değer girilmemelidir.

sonar.web.javaOpts=-Xmx2g -Xms1g -XX:+HeapDumpOnOutOfMemoryError

sonar.ce.javaOpts=-Xmx6g -Xms4g -XX:+HeapDumpOnOutOfMemoryError

ElasticSearch VM.MAP Count Arttırımı

sudo sysctl -w vm.max_map_count=262144

azure-linux-ubuntu-18-04-lts-uzerine-sonarqube-latest-8-x-x-kurulumu

ABOUT THE AUTHOR

Application Security , Information and Software Security Specialist Ethical Hacker and Pentester

POST YOUR COMMENTS