RHEL / CentOS'ta 'POUND' Kullanarak Web Sunucuları Yük Dengelemesini Ayarlama
POUND, ITSECURITY Company tarafından geliştirilmiş bir yük dengeleme programıdır. Yükü birkaç sunucu arasında dağıtmak için bir web sunucusu yük dengeleyicisi olarak kullanılabilen hafif bir açık kaynaklı ters proxy aracıdır. POUND'un son kullanıcıya sağladığı çok kullanışlı ve işi doğru yapan birçok avantajı vardır.
- Supports virtual hosts.
- Configurable.
- When a backend server is failed or recovered from a failure, it detects it automatically and bases its load balancing decisions according to that.
- It rejects incorrect requests.
- No specified browser or webservers.
Bu saldırının nasıl yapılacağına bir göz atalım.
Her şeyden önce, bunun yapılmasını daha iyi anlamak için bir senaryoya ihtiyacınız olacak. Bu yüzden, ağ geçidi sunucusuna gelen istekleri dengelemesi gereken iki web sunucusu ve bir ağ geçidi sunucusu olduğu bir senaryo kullanacağım.
Pound Gateway Server : 172.16.1.222 Web Server 01 : 172.16.1.204 Web Server 02 : 192.168.1.161

Adım 1: Ağ Geçidi Sunucusuna Pound Yük Dengeleyiciyi Kurun
1. Pound'u kurmanın en kolay yolu önceden derlenmiş RPM paketleri kullanmaktır, RedHat tabanlı dağıtımlar için RPM'leri şu adreste bulabilirsiniz:
Alternatif olarak Pound, aşağıda gösterildiği gibi EPEL deposundan kolayca yüklenebilir.
# yum install epel-release # yum install Pound
Pound kurulduktan sonra, bu komutu vererek kurulup kurulmadığını doğrulayabilirsiniz.
# rpm –qa |grep Pound

2. İkinci olarak, yükü dengelemek ve pound yapılandırmasının düzgün çalıştığını test etmek için açık tanımlayıcılara sahip olduğunuzdan emin olmak için iki web sunucusuna ihtiyacınız var.
Burada 172.16.1.204 ve 192.168.1.161 IP adreslerini taşıyan iki sunucum var.
Kullanım kolaylığı için, her iki sunucuda da anlık bir web sunucusu oluşturmak için python SimpleHTTPServer'ı oluşturdum. Python SimpleHTTPServer hakkında bilgi edinin
Senaryomda, webserver01'im 172.16.1.204 üzerinde 8888 ve webserver02 üzerinde 192.168.1.161 üzerinden 5555 numaralı bağlantı noktasında çalışıyor.


2. Adım: Pound Yük Dengeleyiciyi Yapılandırın
3. Şimdi konfigürasyonları yapma zamanı. Pound'u başarıyla yükledikten sonra, pound'un yapılandırma dosyasını/etc içinde oluşturur, yani pound.cfg
.
Web sunucuları arasındaki yükü dengelemek için sunucu ve arka uç ayrıntılarını düzenlemeliyiz./Etc'ye gidin ve düzenlemek için pound.cfg
dosyasını açın.
# vi /etc/pound.cfg
Aşağıda önerilen değişiklikleri yapın.
ListenHTTP Address 172.16.1.222 Port 80 End ListenHTTPS Address 172.16.1.222 Port 443 Cert "/etc/pki/tls/certs/pound.pem" End Service BackEnd Address 172.16.1.204 Port 8888 End BackEnd Address 192.168.1.161 Port 5555 End End
Benim pound.cfg dosyam böyle görünüyor.

“ListenHTTP” ve “ListenHTTPS” etiketlerinin altına, POUND'u kurduğunuz sunucunun IP adresini girmelisiniz.
Varsayılan olarak bir sunucu, 80 numaralı bağlantı noktası aracılığıyla HTTP isteklerini ve 443 numaralı bağlantı noktası aracılığıyla HTTPS isteklerini işler. "Hizmet" etiketi altında, "BackEnd" adı verilen herhangi bir miktarda alt etiket ekleyebilirsiniz. BackEnd etiketleri, web sunucularının üzerinde çalıştığı IP adreslerini ve bağlantı noktası numaralarını taşır.
Şimdi dosyayı doğru bir şekilde düzenledikten sonra kaydedin ve aşağıdaki komutlardan birini vererek POUND hizmetini yeniden başlatın.
# /etc/init.d/pound restart OR # service pound restart OR # systemctl restart pound.service

4. Şimdi kontrol etme zamanı. Yapılandırmalarımızın düzgün çalışıp çalışmadığını kontrol etmek için iki web tarayıcısı açın. Adres çubuğuna POUND ağ geçidinizin IP adresini yazın ve neyin göründüğüne bakın.
İlk istek ilk web sunucusunu01 yüklemeli ve diğer web tarayıcısından gelen ikinci istek ikinci web sunucusunu02 yüklemelidir.

Ayrıca, dengeleyecek iki web sunucunuz varsa ve sunucunun performansından birinin iyi, diğerinin performansının o kadar iyi olmaması gibi bir senaryo düşünün.
Dolayısıyla, aralarında yük dengeleme yaparken, hangi sunucuya daha fazla ağırlık vermeniz gerektiğini düşünmeniz gerekecektir. Açıkçası, iyi performans özelliklerine sahip sunucu için.
Yükü bu şekilde dengelemek için pound.cfg
dosyasının içine tek bir parametre eklemeniz yeterlidir. Şuna bir bakalım.
192.168.1.161:5555 sunucusu daha iyi bir sunucudur. O zaman bu sunucuya daha fazla istek akışı koymanız gerekir. 192.168.1.161 sunucusu için yapılandırılan "BackEnd" etiketi altında, End etiketinin önüne "Priority" parametresini ekleyin.
Aşağıdaki örneğe bakın.

"Öncelik" parametresi için kullanabileceğimiz aralık 1-9 arasıdır. Tanımlamazsak varsayılan 5 değeri verilecektir.
Daha sonra yük eşit olarak dengelenecektir. Öncelik numarasını tanımlarsak, POUND daha yüksek öncelik numaralı sunucuyu daha sık yükleyecektir. Yani bu durumda 192.168.1.161:5555, 172.16.1.204:8888 sunucusundan daha sık yüklenecektir.
Adım 3: Acil Durum Arızalarını Planlama
Acil Durum Etiketi: Bu etiket, tüm arka uç sunucuların ölmesi durumunda bir sunucuyu yüklemek için kullanılır. Bunu pound.cfg'nin son End etiketinin önüne aşağıdaki gibi ekleyebilirsiniz.
“Emergency Address 192.168.5.10 Port 8080 End”
6. POUND her zaman hangi arka uç sunucularının canlı olduğunu ve hangilerinin olmadığını takip eder. POUND'un kaç saniye sonra arka uç sunucularını kontrol etmesi gerektiğini pound.cfg'ye “Canlı” parametresi ekleyerek tanımlayabiliriz.
Parametreyi 30 saniyeye ayarlamak için "Canlı 30" olarak kullanabilirsiniz. Pound, yanıt vermeyen arka uç sunucularını geçici olarak devre dışı bırakacaktır. Yanıt vermiyor dediğimizde sunucu ölmüş olabilir veya o anda bağlantı kuramayabilir.
POUND, sunucu bir bağlantı kurabilirse, pound.cfg dosyasında tanımladığınız her süreden sonra devre dışı bırakılan arka uç sunucusunu kontrol eder, ardından POUND sunucuyla çalışmaya geri dönebilir.
7. POUND daemon, poundctl komutu ile ele alınacaktır. Bunu sağlayarak pound.cfg dosyasını düzenlememize gerek kalmaz ve tek bir komutla Listner Sunucusu, BackEnd sunucuları ve oturumları vb. Yayınlayabiliriz.
Syntax: poundctl -c /path/to/socket [-L/-l] [-S/-s] [-B/-b] [-N/-n] [-H] [-X]
- -c defines path to your socket.
- -L / -l defines the listener of your architecture.
- -S / -s defines the service.
- -B / -b defines the backend servers.
Daha fazla bilgi için poundctl man sayfalarına bakın.
Umarım bu hacklemeyi beğenirsiniz ve bununla ilgili daha fazla seçenek keşfedersiniz. Herhangi bir öneri ve fikir için aşağıya yorum yapmaktan çekinmeyin. Kullanışlı ve en yeni Nasıl Yapılırlar için Tecmint ile bağlantıda kalın.