HAProxy, load balancing, Keepalived ve güvenlik ile ilgili faydalı notları aşağıda bulabilirsiniz.
Notlar
- Web sunucularını sadece load balancerlardan gelen isteklere cevap verecek şekilde ayarlayın. Eğer dışarıdan direkt olarak gelen isteklere açık olursanız, sahte isteklerede açık olmuş olursunuz.
- Kullanıcı ile iletişimin kurulduğu tek yer load balancerdir. Bu da web sunucularının ve yerel ağın güvenilir bir şekilde saklanmasına yardımcı olur.
Varsayalım ki sizin web sunucunuzun IP'si 192.168.50.10
ve load balancerin IP'si ise 192.168.50.30
. Eğer aşağıdaki kod parçacığını virtual host dosyanıza eklerseniz, web sunucunuzu sadece load balancer kullanabilir. Web sunucusuna gelen direkt isteklere 403 Forbidden
hatası iletilir.
# /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
...
<Directory /var/www/html/>
Order allow,deny
Allow from 192.168.50.30
Allow from 127.0.0.1
</Directory>
...
</VirtualHost>
- Güvenlik mekanizması her zaman load balancerdan başlar.
- Load balancerları sadece belirlenen protokollerden gelen isteklere cevap verecek şekilde ayarlayabilirsiniz. Örneğin: http, https, tcp, ssl.
- Load balancer iş yoğunluğunu web sunucuları arasında eşit olarak paylaştırır.
- Hangi isteğin hangi web sunucusuna iletileceğine load balancer karar verir.
- Layer 4 model load balancer, gelen istekleri gelişi güzel olarak bildiği tüm web sunucuları arasında eşit olarak paylaştırır.
- Layer 7 model load balancer gelen istekleri isteğin geldiği URL adresine göre veya header bilgilerine göre, sadece alakalı web sunucusuna yönlendirir.
- Varsayılan olarak ayarlı sistem yetersizliği mesajı
503
, HAProxy config dosyasıyla değiştirilebilir.
- Güvenlik veya bakım amacıyla, HAProxy belirli sunuculara olan ulaşımı
server webserver 192.168.1.202:80 check disabled
ile bloke edebilir.
- Güvenlik amacıyla, HAProxy ile belirli IP adreslerini servislerimize ulaşamasınlar diye bloke edebiliriz.
Varsayalım ki 192.168.50.1
IP adresi bir saldırgana ait ve onu bloke etmek istiyoruz. Bu ayar, isteği yapana 403 Forbidden
hatasını iletilir.
# /etc/haproxy/haproxy.cfg
frontend http-in
....
acl nasty-man src 192.168.50.1
http-request deny if nasty-man
....
- Kullanıcı session uygulamaları için Central Session Storage seçeneğinin kullanımı, Sticky Sessions/Session Affinity ve Cookie-based Sessions seçeneklerine nazaran daha uygundur.
- HAProxy her iki saniyede bir (konfigürason ile değiştirilebilir) web sunucusunu kontrol ettiği için, Apache
access.log
dosyası şişecektir. Bu tarz gereksiz şişmeleri engellemek için /etc/apache2/sites-enabled/000-default.conf
ve /etc/apache2/apache2.conf
dosyalarının uygun bir şekilde ayarlanması gerekir.
- Keepalived sanal bir IP yaratır ve aktif olarak çalışan load balancera atar. Bu IP adres daha sonra kullanıcılar tarafından kullanılır.
- Keepalived
/etc/keepalived/keepalived.conf
dosyasındaki priority
değerine bakarak, hangi load balancer sunucunun "master" olacağına karar verir. Yüksen değer "master", düşük değer "backup" demektir.
- Keepalived sanal IP adress atama kayıtları
/var/log/haproxy.log
dosyasında bulunabilir.
Güvenlik yazıları
Saldırılara karşı uygulama tabanlı güvenlik HAProxy (Web Application Firewall - WAF) tarafından kontrol edilir. Örneğin: DOS, DDOS, TCP saldırıları, SYN flood saldırıları, slow POST saldırıları, slowloris saldırıları vs. Network tabanlı güvenlik ise fiziksel firewall aygıtları ile kontrol edilir.