Takip et

HAProxy’yi Ubuntu 14.04 Üzerinde Let’s Encrypt ile Güvenli Hale Getirme

HAProxy’yi Ubuntu 14.04 Üzerinde Let’s Encrypt ile Güvenli Hale Getirme HAProxy, yüksek performanslı bir yük dengeleyici ve ters proxy olarak mo

HAProxy’yi Ubuntu 14.04 Üzerinde Let’s Encrypt ile Güvenli Hale Getirme

HAProxy, yüksek performanslı bir yük dengeleyici ve ters proxy olarak modern web altyapılarının temel taşlarından biridir. Uygulamaların yüksek erişilebilirlik, ölçeklenebilirlik ve performans gereksinimlerini karşılamak için tasarlanmıştır. Ancak, günümüz internet ortamında sadece performansı artırmak yeterli değildir; güvenlik de en az performans kadar kritik bir öneme sahiptir. Kullanıcı verilerinin korunması, veri bütünlüğünün sağlanması ve yasal uyumluluk gereksinimleri, SSL/TLS şifrelemesinin vazgeçilmez olmasını sağlamıştır. Let’s Encrypt, bu güvenlik ihtiyacını ücretsiz, otomatik ve açık bir sertifika yetkilisi olarak karşılayarak, web sitelerinin HTTPS’ye geçişini büyük ölçüde kolaylaştırmıştır.

Bu makale, Ubuntu 14.04 işletim sistemi üzerinde çalışan bir HAProxy kurulumunu Let’s Encrypt sertifikaları ile nasıl güvenli hale getireceğinizi adım adım detaylandırmaktadır. Ubuntu 14.04, eski bir sürüm olmasına rağmen, bazı kurumsal veya özel projelerde hala kullanılıyor olabilir. Bu nedenle, bu platforma özel kurulum ve yapılandırma adımlarını ele almak, bu tür sistemlerin modern güvenlik standartlarına uygun hale getirilmesine yardımcı olacaktır. HAProxy’nin temel kurulumundan başlayarak, Let’s Encrypt sertifikalarının alınması, HAProxy’ye entegrasyonu ve otomatik yenileme süreçleri detaylı bir şekilde açıklanacaktır.

Giriş

İnternet trafiğinin büyük bir kısmı artık şifreli bağlantılar üzerinden gerçekleşmektedir. HTTPS (HTTP Secure), kullanıcıların tarayıcıları ile web sunucuları arasındaki iletişimi şifreleyerek veri güvenliğini sağlar. Bu şifreleme, bir SSL/TLS sertifikası aracılığıyla gerçekleştirilir. Geleneksel olarak, bu sertifikalar ücretli ve manuel kurulum süreçleri gerektiriyordu. Let’s Encrypt’in ortaya çıkışı ile bu durum değişti. Let’s Encrypt, herkesin alan adları için güvenilir sertifikaları ücretsiz ve otomatik olarak almasını sağlayan bir sertifika yetkilisidir (CA). Bu, özellikle küçük ve orta ölçekli işletmeler ile bireysel geliştiriciler için HTTPS’yi erişilebilir hale getirmiştir.

HAProxy, TCP ve HTTP tabanlı uygulamalar için yüksek erişilebilirlik, yük dengeleme ve proxy çözümleri sunan açık kaynaklı bir yazılımdır. Gelişmiş yönlendirme kuralları, oturum kalıcılığı, sağlık kontrolleri ve performans optimizasyonları sayesinde, karmaşık ve yüksek trafikli sistemlerde kritik bir rol oynar. HAProxy’nin kendisi bir web sunucusu olmamasına rağmen, gelen trafiği SSL/TLS şifrelemesi ile sonlandırıp (SSL Offloading), şifresi çözülmüş trafiği arka uç sunucularına iletebilir. Bu, arka uç sunucularının SSL/TLS yükünü hafifletir ve performanslarını artırır.

Ubuntu 14.04, LTS (Uzun Süreli Destek) bir sürüm olmasına rağmen, 2019 yılında standart desteği sona ermiştir. Ancak bazı eski sistemler veya özel uygulamalar nedeniyle hala kullanılıyor olabilir. Bu makale, bu tür bir ortamda HAProxy ve Let’s Encrypt entegrasyonunu ele alarak, güvenlik açıklarını kapatmaya ve modern şifreleme standartlarını uygulamaya yardımcı olacaktır.

Ön Gereksinimler

Bu makaledeki adımları başarıyla uygulayabilmek için aşağıdaki ön gereksinimlere sahip olmanız gerekmektedir:

* Ubuntu 14.04 Sunucusu: Root erişimi veya sudo yetkilerine sahip bir Ubuntu 14.04 işletim sistemine sahip bir sunucu.
* HAProxy Kurulumu: Sunucunuzda HAProxy’nin kurulu ve temel olarak yapılandırılmış olması. Eğer kurulu değilse, kurulum adımları makalede kısaca belirtilecektir.
* Alan Adı: HAProxy’yi güvenli hale getirmek istediğiniz bir alan adı (örneğin, ornekalanadi.com). Bu alan adının DNS kayıtları (A veya AAAA kayıtları) sunucunuzun genel IP adresine işaret etmelidir. Let’s Encrypt sertifikaları yalnızca gerçek, doğrulanabilir alan adları için verilir.
* Güvenlik Duvarı Ayarları: Sunucunuzun güvenlik duvarında (UFW, iptables vb.) 80 (HTTP) ve 443 (HTTPS) portlarının dışarıdan erişime açık olması gerekmektedir. Let’s Encrypt, alan adı doğrulaması için 80 numaralı portu kullanabilir ve HTTPS trafiği için 443 numaralı portun açık olması zorunludur.
* Temel Linux Bilgisi: Komut satırı kullanımı, dosya düzenleme ve servis yönetimi gibi temel Linux komutları hakkında bilgi sahibi olmak.

HAProxy Kurulumu ve Temel Yapılandırma

Eğer HAProxy sunucunuzda kurulu değilse, aşağıdaki adımları izleyerek kurabilirsiniz. Ubuntu 14.04’ün varsayılan depoları genellikle HAProxy 1.5 sürümünü içerir. Daha yeni özellikler (örneğin HTTP/2 veya TLS 1.3 desteği) için daha güncel bir sürüm gerekebilir, ancak bu makalede temel SSL/TLS yapılandırması için 1.5 sürümü yeterlidir.

HAProxy Kurulumu

Paket listesini güncelleyin ve HAProxy’yi kurun:

sudo apt-get update
sudo apt-get install haproxy

Kurulum tamamlandıktan sonra, HAProxy servisinin durumunu kontrol edebilirsiniz:

sudo service haproxy status

Eğer servis çalışmıyorsa, başlatın:

sudo service haproxy start

HAProxy’nin sistem başlangıcında otomatik olarak başlamasını sağlamak için:

sudo update-rc.d haproxy enable

Temel HTTP Yük Dengeleme Yapılandırması

HAProxy’nin ana yapılandırma dosyası /etc/haproxy/haproxy.cfg konumundadır. Bu dosyayı düzenlemeden önce bir yedeğini almak iyi bir uygulamadır:

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

Şimdi, dosyayı bir metin düzenleyici ile açın (örneğin nano):

sudo nano /etc/haproxy/haproxy.cfg

Varsayılan yapılandırma dosyasının içeriğini temizleyip, basit bir HTTP yük dengeleme yapılandırması ile başlayabiliriz. Aşağıdaki örnek, gelen HTTP trafiğini iki adet arka uç web sunucusuna (örneğin Nginx veya Apache) yönlendiren temel bir yapılandırmayı göstermektedir:

global
    log /dev/log    local0 notice
    chroot /var/lib/haproxy
    user haproxy
    group haproxy
    daemon
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_in
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    server web1 192.168.1.10:80 check
    server web2 192.168.1.11:80 check

Yukarıdaki yapılandırmayı açıklayalım:

* global: HAProxy’nin genel ayarlarını içerir. Loglama, kullanıcı/grup ayarları ve istatistik soketi gibi ayarlar burada tanımlanır.
* defaults: frontend ve backend bölümleri için varsayılan ayarları belirler. mode http HTTP trafiği için, timeout değerleri bağlantı sürelerini kontrol eder.
frontend http_in: Gelen HTTP (80 portu) trafiğini dinleyen bölümdür. bind :80 tüm IP adresleri üzerinden 80 numaralı portu dinler. default_backend web_servers gelen tüm trafiği web_servers adlı arka uca yönlendirir.
* backend web_servers: Gerçek web sunucularını tanımlar. balance roundrobin gelen istekleri sırayla sunuculara dağıtır. server web1 192.168.1.10:80 check ve server web2 192.168.1.11:80 check örnek arka uç sunucularıdır. check parametresi sağlık kontrolü yapılmasını sağlar. Bu IP adreslerini kendi arka uç sunucularınızın IP adresleri ile değiştirmeniz gerekmektedir.

Yapılandırmayı kaydettikten sonra, HAProxy yapılandırma dosyasının sözdizimini kontrol edin:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Eğer Configuration file is valid mesajını görürseniz, HAProxy servisini yeniden başlatabilirsiniz:

sudo service haproxy restart

Bu noktada, http://ornekalanadi.com adresine erişmeye çalıştığınızda, HAProxy’nin arka uç sunucularınızdan birine trafik yönlendirmesi gerekmektedir.

Let’s Encrypt ve Certbot Kurulumu

Let’s Encrypt sertifikalarını almak ve yönetmek için genellikle Certbot aracı kullanılır. Certbot, ACME (Automated Certificate Management Environment) protokolünü uygulayan ve sertifika alımını, kurulumunu ve yenilemesini otomatikleştiren bir istemcidir. Ubuntu 14.04 için Certbot’un kurulumu, resmi PPA (Personal Package Archive) kullanılarak gerçekleştirilir.

Certbot Kurulumu

Certbot’u kurmak için aşağıdaki adımları izleyin:

1. Certbot PPA’sını sisteminize ekleyin:

sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:certbot/certbot

add-apt-repository komutu bulunamazsa, python-software-properties paketini kurmanız gerekebilir:

sudo apt-get install python-software-properties

2. Paket listesini güncelleyin:

sudo apt-get update

3. Certbot’u kurun:

sudo apt-get install certbot

Certbot artık sisteminizde yüklüdür.

Let’s Encrypt Sertifikası Alma

HAProxy, Certbot ile doğrudan bir entegrasyon eklentisine sahip değildir (Nginx veya Apache gibi). Bu nedenle, sertifika almak için certonly komutunu ve --standalone veya --webroot doğrulama yöntemlerini kullanmamız gerekecektir.

* --standalone yöntemi: Certbot, sertifika alımı sırasında geçici olarak kendi web sunucusunu 80 numaralı portta çalıştırır. Bu, HAProxy’nin 80 numaralı portu serbest bırakmasını gerektirdiğinden, kısa bir kesinti yaşanır. İlk sertifika alımı için genellikle en basit yöntemdir.
* --webroot yöntemi: Certbot, belirtilen bir dizine doğrulama dosyalarını yerleştirir ve bu dosyaların HTTP üzerinden erişilebilir olmasını bekler. Bu yöntem, HAProxy’nin 80 numaralı portu dinlemeye devam etmesini sağlar, ancak .well-known/acme-challenge isteklerini bu dizini sunan bir arka uç sunucusuna (örneğin Nginx veya Apache) yönlendirmek veya Certbot’un kendi web sunucusunu bu dizini sunacak şekilde yapılandırmak gerekir. HAProxy’nin tek başına çalıştığı bir senaryoda bu daha karmaşık olabilir.

Bu makalede, ilk sertifika alımı için --standalone yöntemini kullanacağız, çünkü bu, HAProxy’nin tek başına çalıştığı bir ortamda en kolay başlangıçtır. Otomatik yenileme bölümünde ise kesintisiz yenileme için --standalone yöntemini pre-hook ve post-hook ile otomatikleştireceğiz.

Sertifika Alımı (Standalone Yöntemi)

1. HAProxy’yi durdurun: Certbot’un kendi web sunucusunu 80 numaralı portta çalıştırabilmesi için HAProxy’nin 80 numaralı portu serbest bırakması gerekir.

sudo service haproxy stop

2. Sertifikayı alın: certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com komutunu çalıştırın. yourdomain.com ve www.yourdomain.com yerine kendi alan adlarınızı yazın. Birden fazla alan adı için -d parametresini tekrar kullanabilirsiniz.

sudo certbot certonly --standalone -d ornekalanadi.com -d www.ornekalanadi.com

Certbot sizden e-posta adresinizi girmenizi ve Let’s Encrypt hizmet şartlarını kabul etmenizi isteyecektir. Başarılı olursa, sertifika dosyalarınız /etc/letsencrypt/live/ornekalanadi.com/ dizininde oluşturulacaktır.

3. HAProxy’yi başlatın: Sertifikalar alındıktan sonra HAProxy’yi tekrar başlatın.

sudo service haproxy start
HAProxy İçin Sertifika Dosyalarını Hazırlama

HAProxy, SSL/TLS sertifikasını ve özel anahtarı tek bir PEM formatında dosya olarak bekler. Let’s Encrypt, bu dosyaları ayrı ayrı sağlar (fullchain.pem ve privkey.pem). Bu iki dosyayı birleştirmeniz gerekmektedir.

1. HAProxy sertifikaları için bir dizin oluşturun:

sudo mkdir -p /etc/haproxy/certs

2. Sertifika ve özel anahtarı birleştirin:

sudo cat /etc/letsencrypt/live/ornekalanadi.com/fullchain.pem /etc/letsencrypt/live/ornekalanadi.com/privkey.pem | sudo tee /etc/haproxy/certs/ornekalanadi.com.pem

Bu komut, fullchain.pem (sertifika zinciri) ve privkey.pem (özel anahtar) dosyalarını birleştirerek /etc/haproxy/certs/ornekalanadi.com.pem adlı yeni bir dosya oluşturur.

3. Dosya izinlerini ayarlayın: Özel anahtar içeren bu dosyanın sadece root kullanıcısı tarafından okunabilir olması önemlidir.

sudo chmod -R go-rwx /etc/haproxy/certs

Artık HAProxy için SSL/TLS sertifika dosyanız hazır.

HAProxy’yi SSL/TLS ile Yapılandırma

Şimdi HAProxy yapılandırma dosyasını (/etc/haproxy/haproxy.cfg) Let’s Encrypt sertifikalarını kullanacak şekilde düzenlememiz gerekiyor. Bu, 443 numaralı portu dinleyen yeni bir frontend tanımlamayı ve HTTP trafiğini HTTPS’ye yönlendirmeyi içerecektir.

1. HAProxy yapılandırma dosyasını açın:

sudo nano /etc/haproxy/haproxy.cfg

2. Mevcut frontend http_in bölümünü HTTP’den HTTPS’ye yönlendirme yapacak şekilde güncelleyin ve yeni bir frontend https_in bölümü ekleyin:

global
        log /dev/log    local0 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s

    defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000ms
        timeout client  50000ms
        timeout server  50000ms
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

    # HTTP (80 portu) trafiğini HTTPS'ye yönlendirme
    frontend http_in
        bind *:80
        redirect scheme https code 301 if !{ ssl_fc }

    # HTTPS (443 portu) trafiği
    frontend https_in
        bind *:443 ssl crt /etc/haproxy/certs/ornekalanadi.com.pem
        # SSL/TLS güvenlik ayarları
        ssl-default-bind-ciphers ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:ECDHE+AES256:DHE+AES256:ECDHE+AES128:DHE+AES128:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!HMAC_SHA1:!SHA1:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-CAMELLIA256-SHA:!DHE-RSA-CAMELLIA128-SHA
        ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
        # HSTS (Strict-Transport-Security) başlığı ekleme
        rspadd  Strict-Transport-Security:\ max-age=15768000
        default_backend web_servers

    backend web_servers
        balance roundrobin
        server web1 192.168.1.10:80 check
        server web2 192.168.1.11:80 check

Yapılandırmadaki önemli değişiklikler:

* frontend http_in:
bind :80 ile 80 numaralı portu dinlemeye devam eder.
* redirect scheme https code 301 if !{ ssl_fc } kuralı, SSL/TLS ile şifrelenmemiş (yani HTTP) gelen tüm istekleri kalıcı olarak (301 kodu ile) HTTPS’ye yönlendirir.
* frontend https_in:
bind :443 ssl crt /etc/haproxy/certs/ornekalanadi.com.pem ile 443 numaralı portu dinler. ssl parametresi SSL/TLS sonlandırmayı etkinleştirir ve crt parametresi sertifika dosyasının yolunu belirtir.
* ssl-default-bind-ciphers ve ssl-default-bind-options: Güvenli şifreleme süitlerini ve TLS protokol sürümlerini (örneğin TLS 1.2’yi zorlamak için SSLv3, TLSv1.0, TLSv1.1’i devre dışı bırakma) yapılandırır. Bu ayarlar, bilinen güvenlik açıklarına karşı koruma sağlar ve daha güçlü şifrelemeyi teşvik eder. Ubuntu 14.04’teki HAProxy 1.5 sürümü genellikle TLS 1.2’yi destekler, ancak TLS 1.3 desteği için daha yeni bir HAProxy sürümü (1.9+) gerekebilir.
* rspadd Strict-Transport-Security:\ max-age=15768000: HSTS (HTTP Strict Transport Security) başlığını ekler. Bu başlık, tarayıcılara belirli bir süre boyunca (burada 6 ay) alan adınıza her zaman HTTPS üzerinden erişmeleri gerektiğini bildirir. Bu, man-in-the-middle saldırılarına karşı ek koruma sağlar.

Yapılandırmayı kaydettikten sonra, HAProxy yapılandırma dosyasının sözdizimini tekrar kontrol edin:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Eğer geçerliyse, HAProxy servisini yeniden başlatın:

sudo service haproxy restart

Şimdi tarayıcınızdan http://ornekalanadi.com adresine gidin. Otomatik olarak https://ornekalanadi.com adresine yönlendirilmeniz ve bağlantının güvenli (yeşil kilit simgesi) olduğunu görmeniz gerekir.

Sertifika Otomatik Yenileme

Let’s Encrypt sertifikaları 90 gün boyunca geçerlidir. Bu nedenle, sertifikaların süresi dolmadan önce düzenli olarak yenilenmesi gerekir. Certbot, bu yenileme işlemini otomatikleştirmek için renew komutunu sağlar.

Yenileme Komutu

Certbot’u yenileme modunda çalıştırmak için basitçe şunu kullanın:

sudo certbot renew

Bu komut, süresi dolmak üzere olan tüm sertifikaları kontrol eder ve uygun olanları yeniler. Varsayılan olarak, sertifikalar süresi dolmasına 30 günden az kaldığında yenilenir.

HAProxy’nin 80 numaralı portu dinlediği bir ortamda, certbot renew komutu yine --standalone doğrulama yöntemini kullanmaya çalışır ve bu da HAProxy’nin durdurulmasını gerektirir. Bunu otomatikleştirmek için cron işi ile pre-hook ve post-hook seçeneklerini kullanabiliriz.

Cron İşi ile Otomatik Yenileme

Sertifikaların otomatik olarak yenilenmesi için bir cron işi ayarlamak en iyi yöntemdir. Bu cron işi, Certbot’u düzenli aralıklarla çalıştıracak ve yenileme başarılı olursa HAProxy’yi yeniden başlatacaktır.

1. Cron tablounuzu düzenlemek için:

sudo crontab -e

2. Aşağıdaki satırı dosyanın sonuna ekleyin:

0 /12    /usr/bin/certbot renew --quiet --pre-hook "service haproxy stop" --post-hook "service haproxy start"

Bu satırı açıklayalım:
0 /12 *: Cron zamanlamasıdır. Her 12 saatte bir (yani günde iki kez) çalışır. Bu, sertifikaların süresi dolmadan önce yenilenmesi için yeterli bir sıklıktır.
* /usr/bin/certbot renew: Certbot’un yenileme komutunu çalıştırır.
* --quiet: Sadece hatalar veya önemli olaylar olduğunda çıktı verir.
* --pre-hook "service haproxy stop": Certbot yenilemeye başlamadan hemen önce HAProxy servisini durdurur. Bu, Certbot’un 80 numaralı portu kullanmasına izin verir.
* --post-hook "service haproxy start": Certbot yenilemeyi tamamladıktan sonra HAProxy servisini başlatır.
* Önemli Not: Certbot’un --post-hook sonrası HAProxy’nin yeniden başlatılması, yeni sertifika dosyasının HAProxy tarafından yüklenmesini sağlar. Ancak, yeni sertifika dosyası /etc/letsencrypt/live/ornekalanadi.com/ konumunda oluştuğunda, HAProxy’nin beklediği birleştirilmiş PEM dosyasını (/etc/haproxy/certs/ornekalanadi.com.pem) güncellememiz gerekir. Bu adımı post-hook içinde yapmalıyız.

Güncellenmiş cron işi aşağıdaki gibi olmalıdır:

0 /12    /usr/bin/certbot renew --quiet --pre-hook "service haproxy stop" --post-hook "cat /etc/letsencrypt/live/ornekalanadi.com/fullchain.pem /etc/letsencrypt/live/ornekalanadi.com/privkey.pem > /etc/haproxy/certs/ornekalanadi.com.pem && service haproxy start"

Bu post-hook komutu, yeni sertifikaları birleştirir ve ardından HAProxy’yi başlatır.
Dikkat: Cron işi root kullanıcısı altında çalıştığı için sudo komutlarına gerek yoktur.

3. Dosyayı kaydedin ve kapatın. Cron işi otomatik olarak etkinleşecektir.

Yenileme Testi

Yenileme işlemini gerçekten çalıştırmadan test etmek için dry-run parametresini kullanabilirsiniz:

sudo certbot renew --dry-run

Bu komut, sertifikaların yenilenip yenilenemeyeceğini kontrol eder, ancak gerçek bir yenileme yapmaz. Herhangi bir sorun olup olmadığını anlamak için iyi bir yöntemdir.

Ek Güvenlik Önlemleri ve En İyi Uygulamalar

HAProxy ve Let’s Encrypt entegrasyonunu tamamladıktan sonra, sisteminizin genel güvenliğini artırmak için ek adımlar atmanız önemlidir.

Güvenlik Duvarı Yapılandırması

Sadece gerekli portların (80 ve 443) dışarıdan erişime açık olduğundan emin olun. Diğer tüm portları kapatmak, saldırı yüzeyini azaltır. Ubuntu’da UFW (Uncomplicated Firewall) kullanabilirsiniz:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow ssh # SSH erişimi için
sudo ufw enable
sudo ufw status

HAProxy Sürüm Yönetimi

Ubuntu 14.04’ün varsayılan depolarındaki HAProxy sürümü (genellikle 1.5.x) eski olabilir. Daha yeni güvenlik yamaları, performans iyileştirmeleri ve özellikler (örneğin HTTP/2, TLS 1.3 desteği) için daha güncel bir HAProxy sürümüne yükseltmek isteyebilirsiniz. Bunun için HAProxy’nin resmi PPA’sını veya derleme yöntemini kullanabilirsiniz. Ancak bu, Ubuntu 14.04 gibi eski bir sistemde ek bağımlılık sorunlarına yol açabilir ve dikkatli bir şekilde test edilmelidir.

Loglama ve İzleme

HAProxy loglarını düzenli olarak kontrol etmek, olası güvenlik ihlallerini veya performans sorunlarını tespit etmek için kritik öneme sahiptir. HAProxy loglarını syslog üzerinden merkezi bir loglama sunucusuna göndermek veya bir izleme aracı (örneğin Prometheus, ELK Stack) ile entegre etmek iyi bir uygulamadır.

HAProxy yapılandırmanızdaki global bölümünde log ayarlarını kontrol edin:

global
    log /dev/log    local0 notice
    # ...

Bu ayar, HAProxy loglarını syslog‘a gönderir. Loglar genellikle /var/log/syslog veya /var/log/haproxy.log (rsyslog yapılandırmasına bağlı olarak) adresinde bulunabilir.

DDoS Koruması

HAProxy, temel DDoS koruma yeteneklerine sahiptir. stick-table ve rate-limit gibi özellikler kullanarak belirli IP adreslerinden gelen aşırı istekleri sınırlayabilir veya engelleyebilirsiniz.

Örnek bir rate limiting yapılandırması:

frontend https_in
    # ... diğer ayarlar ...
    acl abuse src_http_req_rate(mylimit) ge 100
    http-request deny if abuse
    stick-table type ip size 1m expire 30s store http_req_rate(10s) name mylimit
    # ...

Bu örnek, bir IP adresinden 10 saniye içinde 100’den fazla istek geldiğinde bu IP’den gelen istekleri engeller.

HTTP/2 ve TLS 1.3

HAProxy 1.8 ve üzeri sürümler HTTP/2 desteği sunarken, TLS 1.3 desteği HAProxy 1.9 ve üzeri sürümlerde mevcuttur. Ubuntu 14.04’teki HAProxy 1.5.x sürümü bu özellikleri doğrudan desteklemeyebilir. Eğer bu özelliklere ihtiyacınız varsa, daha yeni bir HAProxy sürümüne yükseltme yapmanız veya daha güncel bir işletim sistemi kullanmanız gerekebilir.

Güvenlik Başlıkları

HSTS’ye ek olarak, diğer güvenlik başlıklarını da (örneğin X-Frame-Options, X-Content-Type-Options, Content-Security-Policy) HAProxy üzerinden ekleyebilirsiniz. Bu başlıklar, çeşitli tarayıcı tabanlı saldırılara karşı ek koruma sağlar.

Örnek olarak X-Frame-Options başlığını eklemek:

frontend https_in
    # ...
    rspadd X-Frame-Options:\ SAMEORIGIN
    # ...

Sorun Giderme

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

HAProxy Yapılandırma Hataları

* Belirti: HAProxy servisi başlatılamıyor veya yeniden başlatılamıyor.
* Çözüm: HAProxy yapılandırma dosyasının sözdizimini kontrol edin:

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Hata mesajlarını dikkatlice okuyun ve belirtilen satırlardaki sorunları düzeltin. Log dosyalarını (/var/log/syslog veya /var/log/haproxy.log) kontrol etmek de yardımcı olabilir.

Certbot Hataları

* Belirti: Sertifika alımı başarısız oluyor.
* Çözüm:
* Port 80 meşgul hatası: Certbot’un --standalone modunda çalışabilmesi için 80 numaralı portun boş olması gerekir. HAProxy veya başka bir web sunucusunun durdurulduğundan emin olun.
* DNS sorunları: Alan adınızın DNS kayıtlarının doğru bir şekilde sunucunuzun IP adresine işaret ettiğinden emin olun. dig yourdomain.com komutu ile kontrol edebilirsiniz.
* Güvenlik duvarı: 80 ve 443 portlarının açık olduğundan emin olun.
* Certbot loglarını kontrol edin: /var/log/letsencrypt/ dizinindeki log dosyaları detaylı hata mesajları içerir.

HTTPS Bağlantı Sorunları

* Belirti: Tarayıcıda “Bağlantınız güvenli değil” hatası veya sertifika geçersiz uyarısı.
* Çözüm:
* Sertifika yolu hatası: HAProxy yapılandırmasında crt parametresinin doğru sertifika dosya yolunu gösterdiğinden emin olun.
* PEM dosyası birleştirme: fullchain.pem ve privkey.pem dosyalarını doğru sırayla birleştirdiğinizden emin olun.
* Sertifika süresi: Sertifikanın süresinin dolup dolmadığını kontrol edin.
* SSL/TLS ayarları: ssl-default-bind-ciphers ve ssl-default-bind-options ayarlarının çok kısıtlayıcı olup olmadığını veya eski tarayıcılarla uyumsuzluk yaratıp yaratmadığını kontrol edin. SSL Labs gibi araçlarla sertifika ve TLS yapılandırmanızı test edebilirsiniz.
* Güvenlik duvarı: 443 portunun açık olduğundan emin olun.

Sonuç

Bu makalede, Ubuntu 14.04 üzerinde HAProxy’yi Let’s Encrypt sertifikaları ile güvenli hale getirme sürecini adım adım ele aldık. HAProxy’nin temel kurulumundan başlayarak, Certbot aracılığıyla Let’s Encrypt sertifikalarının nasıl alınacağını, bu sertifikaların HAProxy’ye nasıl entegre edileceğini ve son olarak otomatik yenileme sürecini nasıl yapılandıracağımızı öğrendik. Ayrıca, sistemin genel güvenliğini artırmak için ek önlemler ve sık karşılaşılan sorunların giderme yöntemleri hakkında bilgi verdik.

HAProxy ve Let’s Encrypt kombinasyonu, yüksek performanslı ve güvenli bir web altyapısı oluşturmak için güçlü bir çözümdür. Let’s Encrypt’in sunduğu ücretsiz ve otomatik sertifikalar sayesinde, SSL/TLS şifrelemesi artık her web sitesi için erişilebilir hale gelmiştir. HAProxy ise bu şifrelemeyi verimli bir şekilde sonlandırarak arka uç sunucularının yükünü hafifletir ve uygulamaların performansını artırır.

Ubuntu 14.04 gibi eski bir işletim sistemi üzerinde çalışmak, bazı kısıtlamaları (örneğin eski HAProxy veya Certbot sürümleri) beraberinde getirse de, bu makaledeki adımlar sayesinde sisteminizi modern güvenlik standartlarına uygun hale getirebilirsiniz. Ancak uzun vadede, daha güncel işletim sistemlerine ve yazılım sürümlerine geçiş yapmak, en yeni güvenlik yamalarından ve performans iyileştirmelerinden faydalanmak adına şiddetle tavsiye edilir.

Bu entegrasyon, uygulamanızın güvenliğini artırmakla kalmayacak, aynı zamanda arama motoru sıralamalarında HTTPS’nin bir faktör olması nedeniyle SEO performansınıza da olumlu katkı sağlayacaktır. Unutmayın, güvenlik sürekli bir süreçtir ve sistemlerinizi düzenli olarak güncel tutmak, logları izlemek ve en iyi uygulamaları takip etmek hayati öneme sahiptir.

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

Gönder

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.
Exit mobile version