Takip et

Jenkins’i Nginx Ters Proxy Kullanarak SSL ile Yapılandırma (Ubuntu 22.04 Üzerinde)

Jenkins’i Nginx Ters Proxy Kullanarak SSL ile Yapılandırma (Ubuntu 22.04 Üzerinde) Giriş Günümüzün hızla gelişen yazılım geliştirme dün

Jenkins’i Nginx Ters Proxy Kullanarak SSL ile Yapılandırma (Ubuntu 22.04 Üzerinde)

Giriş

Günümüzün hızla gelişen yazılım geliştirme dünyasında, sürekli entegrasyon (CI) ve sürekli dağıtım (CD) süreçleri, projelerin başarısı için vazgeçilmez hale gelmiştir. Bu süreçlerin kalbinde yer alan araçlardan biri de şüphesiz Jenkins’tir. Jenkins, geliştiricilere otomasyon, test ve dağıtım süreçlerini yönetmeleri için güçlü ve esnek bir platform sunar. Ancak, Jenkins sunucularına erişimin genellikle internet üzerinden yapıldığı düşünülürse, güvenlik konusu kritik bir öneme sahiptir. Hassas kod depoları, kimlik bilgileri ve dağıtım süreçleri gibi verilerin güvenliğini sağlamak için SSL/TLS şifrelemesi kullanmak bir zorunluluktur.

Bu makalede, Jenkins sunucunuzu Ubuntu 22.04 işletim sistemi üzerinde Nginx ters proxy kullanarak SSL (HTTPS) ile nasıl yapılandıracağınızı adım adım detaylı bir şekilde anlatacağız. Nginx, yüksek performanslı bir web sunucusu olmasının yanı sıra, ters proxy, yük dengeleme ve SSL sonlandırma gibi gelişmiş özellikler sunarak Jenkins ortamınızı daha güvenli ve verimli hale getirmenize olanak tanır. Let’s Encrypt’in ücretsiz SSL sertifikaları ve Certbot aracı sayesinde, bu güvenlik katmanını eklemek artık her zamankinden daha kolaydır.

Bu rehber, Jenkins’inizi güvenli bir şekilde internete açmak, veri bütünlüğünü sağlamak ve kullanıcılarınızın güvenini kazanmak isteyen sistem yöneticileri ve DevOps mühendisleri için hazırlanmıştır. Makalenin sonunda, tam işlevsel ve güvenli bir Jenkins ortamına sahip olacaksınız.

Ön Koşullar

Bu rehbere başlamadan önce, aşağıdaki ön koşulların yerine getirildiğinden emin olmalısınız:

* Ubuntu 22.04 Sunucusu: SSH erişimi olan ve sudo yetkilerine sahip bir Ubuntu 22.04 sunucusu. Tüm komutlar sudo ayrıcalıklarıyla çalıştırılacaktır.
* Bir Alan Adı (Domain Name): Jenkins kurulumunuza erişmek için kullanacağınız, örneğin jenkins.alanadiniz.com gibi bir alan adına sahip olmanız gerekmektedir.
* DNS Kaydı: Alan adınızın (örneğin jenkins.alanadiniz.com) sunucunuzun genel IP adresini işaret eden bir A kaydına sahip olması gerekmektedir. DNS değişikliklerinin yayılması biraz zaman alabilir, bu nedenle devam etmeden önce bu kaydın doğru şekilde çözümlendiğinden emin olun.
* Jenkins Kurulumu: Jenkins’in sunucunuzda kurulu ve varsayılan 8080 portu üzerinden erişilebilir olması gerekmektedir. Eğer Jenkins kurulu değilse, ilk adımda kurulumunu ele alacağız.
* Güvenlik Duvarı (UFW): Ubuntu’nun varsayılan güvenlik duvarı olan UFW’nin kurulu ve yapılandırılmış olması iyi bir güvenlik uygulamasıdır. Bu rehberde, Nginx’in ihtiyaç duyduğu portları açmak için UFW ayarlarını da yapacağız.

Adım 1: Jenkins Kurulumu ve Başlangıç Yapılandırması (Gerekliyse)

Eğer Jenkins sunucunuzda zaten kurulu ve 8080 portundan erişilebilir durumdaysa, bu adımı atlayabilirsiniz. Aksi takdirde, Jenkins’i kurmak için aşağıdaki adımları izleyin.

Java Kurulumu

Jenkins bir Java uygulamasıdır, bu nedenle öncelikle Java Development Kit (JDK) kurmanız gerekir. Jenkins 2.357 ve sonrası için Java 11 veya Java 17 önerilir. Biz bu rehberde OpenJDK 17’yi kuracağız.

sudo apt update
sudo apt install openjdk-17-jdk -y

Kurulumun başarılı olduğunu doğrulamak için Java sürümünü kontrol edin:

java -version

Çıktı, OpenJDK 17’yi göstermelidir.

Jenkins Deposu Ekleme

Jenkins’i apt paket yöneticisi aracılığıyla kurmak için Jenkins APT deposunu sisteminize eklemeniz gerekir.

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
  https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/" | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null

Jenkins Kurulumu

Depoyu ekledikten sonra, paket listesini güncelleyin ve Jenkins’i kurun:

sudo apt update
sudo apt install jenkins -y

Jenkins Servisini Başlatma ve Kontrol Etme

Jenkins kurulumdan sonra otomatik olarak başlamalıdır. Servisin durumunu kontrol edebilir ve gerekirse manuel olarak başlatabilirsiniz:

sudo systemctl start jenkins
sudo systemctl enable jenkins
sudo systemctl status jenkins

status komutunun çıktısında “active (running)” ifadesini görmelisiniz.

UFW Üzerinden Jenkins Portunu Açma

Eğer UFW kullanıyorsanız, Jenkins’in varsayılan portu olan 8080’e erişime izin vermeniz gerekir:

sudo ufw allow 8080
sudo ufw enable # Eğer UFW aktif değilse

Jenkins İlk Yapılandırması

Şimdi bir web tarayıcısı açın ve sunucunuzun IP adresi veya alan adınızla 8080 portundan Jenkins’e erişin (örneğin, http://sunucu_ip_adresi:8080). İlk erişimde, yönetici parolasını girmeniz istenecektir. Bu parola, aşağıdaki dosyada bulunur:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Parolayı kopyalayıp web arayüzündeki ilgili alana yapıştırın. Ardından, eklentileri yükleme seçeneği sunulacaktır. “Install suggested plugins” (Önerilen eklentileri yükle) seçeneğini tercih etmeniz önerilir. Eklentiler yüklendikten sonra, ilk yönetici hesabını oluşturmanız istenecektir. Gerekli bilgileri girerek hesabı oluşturun ve Jenkins’i kullanmaya başlayın. Bu aşamada Jenkins’e HTTP üzerinden erişiyor olmanız normaldir.

Adım 2: Nginx Kurulumu

Jenkins’i güvenli bir şekilde yayınlamak için Nginx’i ters proxy olarak kullanacağız. Nginx’i kurmak için aşağıdaki adımları izleyin:

sudo apt update
sudo apt install nginx -y

Nginx Servisini Kontrol Etme

Kurulumdan sonra Nginx servisi otomatik olarak başlamalıdır. Durumunu kontrol edin:

sudo systemctl status nginx

Çıktıda “active (running)” ifadesini görmelisiniz.

UFW Üzerinden Nginx Portlarını Açma

UFW kullanıyorsanız, Nginx’in HTTP (80) ve HTTPS (443) portlarına erişime izin vermeniz gerekir. Nginx, UFW ile entegre profillerle gelir:

sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
sudo ufw reload
sudo ufw status

sudo ufw status komutu çıktısında “Nginx HTTP” ve “Nginx HTTPS” profillerinin “ALLOW” olarak listelendiğini görmelisiniz.

Adım 3: Alan Adı ve DNS Ayarlarını Doğrulama

SSL sertifikası alabilmek ve Jenkins’e güvenli bir şekilde erişebilmek için bir alan adına ve bu alan adının sunucunuzun IP adresini işaret eden doğru bir DNS A kaydına sahip olmanız kritik öneme sahiptir.

Örneğin, Jenkins’inize jenkins.alanadiniz.com adresinden erişmek istiyorsanız, DNS sağlayıcınızın kontrol panelinde aşağıdaki gibi bir A kaydı oluşturmalısınız:

* Tip: A
* Ad (Host): jenkins (veya @ eğer doğrudan ana alan adını kullanıyorsanız)
* Değer (Value): Sunucunuzun_Genel_IP_Adresi

DNS değişikliklerinin internet genelinde yayılması birkaç dakika ila birkaç saat sürebilir. Bu süreci hızlandırmak için dig veya nslookup gibi araçları kullanarak alan adınızın doğru IP adresini çözüp çözmediğini kontrol edebilirsiniz:

dig jenkins.alanadiniz.com

veya

nslookup jenkins.alanadiniz.com

Çıktıda, alan adınızın sunucunuzun doğru IP adresine çözümlendiğini görmelisiniz. Bu adım tamamlanmadan devam etmek, SSL sertifikası alma sürecinde sorunlara yol açacaktır.

Adım 4: Nginx için Jenkins Ters Proxy Yapılandırması

Şimdi Nginx’i Jenkins için bir ters proxy olarak yapılandıracağız. Bu, tüm web trafiğinin Nginx üzerinden geçmesini ve Nginx’in trafiği dahili olarak Jenkins’in 8080 portuna yönlendirmesini sağlayacaktır.

Yeni Bir Nginx Sunucu Bloğu Dosyası Oluşturma

Yeni bir yapılandırma dosyası oluşturmak için /etc/nginx/sites-available/ dizininde bir dosya oluşturun. Dosya adı olarak alan adınızı kullanmak iyi bir uygulamadır:

sudo nano /etc/nginx/sites-available/jenkins.alanadiniz.com

Aşağıdaki yapılandırmayı dosyaya yapıştırın. jenkins.alanadiniz.com kısmını kendi alan adınızla değiştirmeyi unutmayın.

server {
    listen 80;
    listen [::]:80;
    server_name jenkins.alanadiniz.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_buffering off;
        proxy_request_buffering off;
        # Jenkins için özel başlıklar
        proxy_set_header X-Jenkins $host;
        proxy_redirect default; # Jenkins'in yeniden yönlendirmelerini doğru şekilde işlemesini sağlar
    }
}

Bu yapılandırmayı açıklayalım:

* listen 80;: Nginx’in 80 (HTTP) portunu dinlemesini sağlar.
* server_name jenkins.alanadiniz.com;: Bu sunucu bloğunun hangi alan adı isteklerine yanıt vereceğini belirtir.
* location / { ... }: Gelen tüm istekleri işler.
* proxy_pass http://localhost:8080;: Gelen istekleri localhost üzerindeki 8080 portunda çalışan Jenkins’e yönlendirir.
* proxy_set_header ...: Bu başlıklar, orijinal istemci IP adresi, ana bilgisayar adı ve protokol gibi bilgileri Jenkins’e iletmek için önemlidir. Bu sayede Jenkins, isteklerin gerçek kaynağını ve nasıl geldiğini bilir. Özellikle X-Forwarded-Proto $scheme; HTTPS kullanıldığında Jenkins’in doğru URL’ler oluşturması için kritiktir.
* proxy_connect_timeout, proxy_send_timeout, proxy_read_timeout, send_timeout: Zaman aşımı ayarlarıdır, büyük derleme işleri veya uzun süreli işlemler için artırılmıştır.
* proxy_buffering off;, proxy_request_buffering off;: Jenkins’in WebSocket veya Server-Sent Events gibi canlı bağlantıları düzgün bir şekilde işlemesini sağlamak için proxy arabelleğini kapatır.
* proxy_set_header X-Jenkins $host;: Jenkins’in doğru URL’yi algılamasına yardımcı olan özel bir başlıktır.
* proxy_redirect default;: Jenkins’in kendi içindeki yeniden yönlendirmelerini (örneğin /login sayfasına) Nginx’in doğru şekilde işlemesini sağlar.

Dosyayı kaydedin ve kapatın (Nano için Ctrl+O, Enter, Ctrl+X).

Yapılandırmayı Etkinleştirme

Oluşturduğunuz yapılandırma dosyasını etkinleştirmek için /etc/nginx/sites-enabled/ dizinine sembolik bir bağlantı oluşturun:

sudo ln -s /etc/nginx/sites-available/jenkins.alanadiniz.com /etc/nginx/sites-enabled/

Varsayılan Nginx Yapılandırmasını Devre Dışı Bırakma (Önerilir)

Çakışmaları önlemek için varsayılan Nginx yapılandırma dosyasını devre dışı bırakmak iyi bir uygulamadır:

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

Nginx Yapılandırmasını Test Etme

Değişiklikleri uygulamadan önce Nginx yapılandırma dosyanızda herhangi bir sözdizimi hatası olup olmadığını kontrol etmek önemlidir:

sudo nginx -t

Eğer her şey yolundaysa, “test is successful” mesajını görmelisiniz.

Nginx’i Yeniden Başlatma

Yapılandırma değişikliklerini uygulamak için Nginx servisini yeniden başlatın:

sudo systemctl restart nginx

Şimdi bir web tarayıcısı açın ve alan adınızla (örneğin http://jenkins.alanadiniz.com) Jenkins’e erişmeye çalışın. Artık 8080 portunu belirtmenize gerek kalmadan Jenkins arayüzünü görmelisiniz. Bu, Nginx’in ters proxy olarak başarıyla çalıştığını gösterir. Ancak henüz SSL kullanmıyoruz.

Adım 5: Let’s Encrypt SSL Sertifikası Alımı (Certbot ile)

Nginx üzerinden HTTPS sağlamak için Let’s Encrypt’in ücretsiz SSL sertifikalarını kullanacağız. Certbot aracı, bu süreci otomatikleştirir.

Certbot Kurulumu

Certbot ve Nginx eklentisini kurun:

sudo apt install certbot python3-certbot-nginx -y

SSL Sertifikası Alma

Certbot’u Nginx eklentisiyle çalıştırarak alan adınız için bir SSL sertifikası alın. Certbot, Nginx yapılandırmanızı otomatik olarak algılayacak ve güncelleyecektir:

sudo certbot --nginx -d jenkins.alanadiniz.com

Komutu çalıştırdıktan sonra, Certbot sizden bazı bilgiler isteyecektir:

1. E-posta adresi: Acil durum bildirimleri ve sertifika yenileme hatırlatıcıları için.
2. Hizmet şartlarını kabul etme: Let’s Encrypt hizmet şartlarını okuyup kabul etmeniz gerekecektir.
3. EFF (Electronic Frontier Foundation) ile e-posta paylaşma: İsteğe bağlıdır, kararınıza göre “Y” veya “N” girebilirsiniz.

Eğer her şey yolundaysa, Certbot sertifikayı başarıyla alacak ve Nginx yapılandırma dosyanızı otomatik olarak güncelleyerek HTTP trafiğini HTTPS’e yönlendirecek şekilde ayarlayacaktır. Başarılı bir mesaj görmelisiniz:

Congratulations! You have successfully enabled HTTPS on https://jenkins.alanadiniz.com

Otomatik Yenilemeyi Test Etme

Let’s Encrypt sertifikaları 90 gün geçerlidir. Certbot, bu sertifikaları otomatik olarak yenilemek için bir cron job veya systemd timer ayarlar. Yenileme mekanizmasının çalıştığını test etmek için aşağıdaki komutu kullanabilirsiniz:

sudo certbot renew --dry-run

Bu komut, sertifikaları yenilemeden yenileme sürecini simüle eder. Eğer bir sorun yoksa, “The dry run was successful.” mesajını görmelisiniz.

Adım 6: Nginx SSL Yapılandırmasının İncelenmesi ve İyileştirilmesi

Certbot, Nginx yapılandırma dosyanızı otomatik olarak günceller. Şimdi bu dosyayı inceleyelim ve güvenlik için bazı ek iyileştirmeler yapalım.

Yapılandırma dosyanızı tekrar açın:

sudo nano /etc/nginx/sites-available/jenkins.alanadiniz.com

Certbot’un eklediği değişiklikleri göreceksiniz. Dosya şimdi yaklaşık olarak şöyle görünmelidir:

server {
    listen 80;
    listen [::]:80;
    server_name jenkins.alanadiniz.com;

    # Certbot'un eklediği HTTP'den HTTPS'ye yönlendirme
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name jenkins.alanadiniz.com;

    ssl_certificate /etc/letsencrypt/live/jenkins.alanadiniz.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jenkins.alanadiniz.com/privkey.pem;

    # Güvenlik iyileştirmeleri
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # HTTP Strict Transport Security (HSTS) - İsteğe bağlı ama önerilir
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_set_header X-Jenkins $host;
        proxy_redirect default;
    }
}

Eklenen ve İyileştirilen Ayarların Açıklaması:

* HTTP’den HTTPS’ye Yönlendirme: Certbot, otomatik olarak 80 portunu dinleyen bir server bloğu ekler ve tüm HTTP isteklerini 301 kalıcı yönlendirmesiyle HTTPS’e yönlendirir (return 301 https://$host$request_uri;). Bu, kullanıcıların her zaman güvenli bağlantı kullanmasını sağlar.
* listen 443 ssl;: Nginx’in 443 (HTTPS) portunu dinlemesini ve SSL kullanmasını belirtir.
* ssl_certificate ve ssl_certificate_key: Certbot tarafından alınan SSL sertifikasının ve özel anahtarının yollarını belirtir.
* ssl_session_cache ve ssl_session_timeout: SSL oturum önbelleğini yapılandırarak performansı artırır.
* ssl_protocols TLSv1.2 TLSv1.3;: Yalnızca güçlü ve modern TLS protokollerinin kullanılmasına izin verir. Eski ve zayıf protokolleri (TLSv1.0, TLSv1.1, SSLv3) devre dışı bırakır.
* ssl_ciphers: Yalnızca güvenli şifreleme algoritmalarının kullanılmasına izin verir. Bu, man-in-the-middle saldırılarına karşı koruma sağlar.
* ssl_prefer_server_ciphers on;: Sunucunun kendi şifreleme tercihlerini kullanmasını sağlar.
* ssl_stapling on;, ssl_stapling_verify on;, resolver: OCSP Stapling’i etkinleştirir. Bu, tarayıcıların sertifikanın iptal edilip edilmediğini kontrol etme sürecini hızlandırır ve gizliliği artırır.
* add_header Strict-Transport-Security ... (HSTS): Bu başlık, tarayıcılara sitenize yalnızca HTTPS üzerinden bağlanmaları gerektiğini söyler. Belirtilen süre boyunca (örneğin 2 yıl), tarayıcı bu siteye yapılan tüm HTTP isteklerini otomatik olarak HTTPS’e dönüştürecektir. Bu, SSL Strip saldırılarına karşı ek bir koruma sağlar ve ilk bağlantıdaki potansiyel güvenlik açığını kapatır. preload direktifi, tarayıcıların HSTS listelerine sitenizi eklemesini sağlar.

Değişiklikleri kaydettikten sonra Nginx yapılandırmasını tekrar test edin ve servisi yeniden başlatın:

sudo nginx -t
sudo systemctl restart nginx

Adım 7: Jenkins’in Güvenli Erişimini Doğrulama

Şimdi bir web tarayıcısı açın ve https://jenkins.alanadiniz.com adresine gidin.

* Tarayıcınızın adres çubuğunda bir kilit simgesi görmelisiniz. Bu, bağlantının güvenli olduğu ve SSL sertifikasının geçerli olduğu anlamına gelir.
* Kilit simgesine tıklayarak sertifika detaylarını inceleyebilir ve Let’s Encrypt tarafından verildiğini doğrulayabilirsiniz.
* Jenkins oturum açma sayfasının HTTPS üzerinden yüklenmesi, Nginx’in SSL sonlandırmasını başarıyla gerçekleştirdiğini ve trafiği Jenkins’e güvenli bir şekilde yönlendirdiğini gösterir.

Adım 8: Jenkins Güvenlik Ayarlarını Gözden Geçirme

Nginx ve SSL yapılandırmasını tamamladıktan sonra, Jenkins’in kendi içindeki bazı ayarları da gözden geçirmek önemlidir.

Jenkins URL’sini Güncelleme

Jenkins’in bazı iç işlevleri (örneğin, webhook’lar, bildirimler, eklentilerin doğru URL’ler oluşturması) için kendi URL’sini bilmesi gerekir. Bu URL’yi HTTPS versiyonuyla güncellemeniz önemlidir:

1. Jenkins arayüzüne yönetici olarak giriş yapın.
2. Sol menüden “Manage Jenkins” (Jenkins’i Yönet) seçeneğine tıklayın.
3. “System” (Sistem) veya “Configure System” (Sistemi Yapılandır) seçeneğine tıklayın.
4. “Jenkins Location” (Jenkins Konumu) bölümünü bulun.
5. “Jenkins URL” alanını http://localhost:8080/ veya eski HTTP adresinizden https://jenkins.alanadiniz.com/ olarak değiştirin.
6. Değişiklikleri kaydetmek için sayfanın altındaki “Save” (Kaydet) düğmesine tıklayın.

CSRF Koruması

Jenkins, varsayılan olarak Çapraz Site İstek Sahteciliği (CSRF) korumasına sahiptir. Bu korumanın aktif olduğundan emin olun. “Manage Jenkins” -> “Configure Global Security” (Genel Güvenliği Yapılandır) bölümünde “Prevent Cross Site Request Forgery exploits” (Çapraz Site İstek Sahteciliği saldırılarını önle) seçeneğinin işaretli olduğundan emin olun.

Kullanıcı Yönetimi ve Yetkilendirme

Jenkins’inize erişen kullanıcıları dikkatlice yönetin. Güçlü parolalar kullanın, gereksiz kullanıcıları kaldırın ve her kullanıcıya yalnızca ihtiyaç duyduğu yetkileri verin. Matrix tabanlı güvenlik veya rol tabanlı stratejiler kullanarak yetkilendirmeyi daha ayrıntılı hale getirebilirsiniz.

Sorun Giderme

Kurulum sırasında karşılaşabileceğiniz yaygın sorunlar ve çözümleri:

* Tarayıcıda “Siteye ulaşılamıyor” veya “Bağlantı reddedildi” hatası:
* Nginx servisinin çalışıp çalışmadığını kontrol edin: sudo systemctl status nginx.
* UFW güvenlik duvarı ayarlarını kontrol edin, 80 ve 443 portlarının açık olduğundan emin olun: sudo ufw status.
* DNS kaydınızın doğru IP adresini işaret ettiğinden emin olun.
* Jenkins’e HTTP üzerinden erişiliyor, ancak HTTPS üzerinden değil:
* Certbot’un sertifikayı başarıyla aldığından emin olun.
* Nginx yapılandırma dosyasında (/etc/nginx/sites-available/jenkins.alanadiniz.com) listen 443 ssl satırının ve ssl_certificate/ssl_certificate_key yollarının doğru olduğundan emin olun.
* Nginx’i yeniden başlattığınızdan emin olun: sudo systemctl restart nginx.
* Nginx yapılandırma hatası (nginx -t komutu başarısız oluyor):
* Yapılandırma dosyasındaki sözdizimi hatalarını kontrol edin. Özellikle noktalı virgülleri (;) ve süslü parantezleri ({}) dikkatlice inceleyin.
* server_name değerinin doğru olduğundan emin olun.
* Jenkins arayüzünde bazı öğeler bozuk görünüyor veya bağlantılar HTTP’ye yönlendiriyor:
* Jenkins’in kendi içindeki “Jenkins URL” ayarını https://jenkins.alanadiniz.com/ olarak güncellediğinizden emin olun (Adım 8).
* Nginx yapılandırmasındaki proxy_set_header X-Forwarded-Proto $scheme; ve proxy_redirect default; ayarlarının doğru olduğundan emin olun.
* Sertifika süresi doldu veya geçersiz:
* Certbot’un otomatik yenileme işlevinin düzgün çalıştığından emin olun. sudo certbot renew --dry-run komutuyla test edin.
* Manuel olarak yenilemek için sudo certbot renew komutunu kullanabilirsiniz.
* Günlükleri Kontrol Etme:
* Nginx hata günlükleri: /var/log/nginx/error.log
* Nginx erişim günlükleri: /var/log/nginx/access.log
* Jenkins günlükleri: /var/log/jenkins/jenkins.log

Bu günlükler, sorunların kök nedenini bulmak için değerli ipuçları sağlar.

Sonuç

Bu detaylı rehberde, Ubuntu 22.04 işletim sistemi üzerinde Jenkins’i Nginx ters proxy kullanarak SSL (HTTPS) ile nasıl güvenli hale getireceğinizi adım adım öğrendiniz. Jenkins kurulumundan Nginx’in yapılandırılmasına, Let’s Encrypt sertifikalarının alınmasından güvenlik iyileştirmelerine kadar tüm süreçleri başarıyla tamamladınız.

Artık Jenkins sunucunuz, internet üzerinden güvenli bir şekilde erişilebilir durumda. Bu yapılandırma, hem hassas verilerinizin şifrelenmesini sağlayarak güvenliği artırır hem de Jenkins’inize profesyonel ve güvenilir bir imaj kazandırır. Nginx’in performans ve esneklik avantajlarından faydalanarak, Jenkins ortamınızı gelecekteki ihtiyaçlara göre ölçeklendirmek ve daha fazla güvenlik özelliği eklemek için sağlam bir temel oluşturdunuz.

Ek Güvenlik Önerileri:

* Güçlü Parolalar ve İki Faktörlü Kimlik Doğrulama (2FA): Jenkins kullanıcıları için güçlü parolalar kullanın ve mümkünse 2FA’yı etkinleştirin.
* IP Kısıtlamaları: Eğer Jenkins’inize erişim belirli IP adresleriyle sınırlı olacaksa, Nginx yapılandırmasına allow ve deny direktifleri ekleyerek erişimi kısıtlayabilirsiniz.
* Jenkins Güncellemeleri: Jenkins ve eklentilerini düzenli olarak güncelleyerek bilinen güvenlik açıklarından korunmaya devam edin.
* Yedekleme: Jenkins yapılandırma dosyalarınızı, işlerinizi ve eklentilerinizi düzenli olarak yedekleyin.
* İzleme ve Denetleme: Jenkins günlüklerini ve sunucu kaynaklarını düzenli olarak izleyin. Anormal aktivite veya performans sorunları için uyarılar ayarlayın.

Bu adımları izleyerek, Jenkins ortamınızın hem güvenli hem de yüksek performanslı olmasını sağlayabilirsiniz. Güvenli bir CI/CD hattı, modern yazılım geliştirme süreçlerinin temel taşıdır ve bu rehber size bu yolda önemli bir adım attırmıştır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.