Bir çok büyük kurum istemcilerinden gelen istekleri karşılamak için yük dağılımlarını sağlıyacak yük dengeleyicileri (load balancer) kullanmaktadır. Yük dengeleyicileri yapılarına göre web, dns, ssl, isteklerini yönlendirmekte ve istekler karşısında kurum sunucuların dar boğazlara (bottleneck) girmesini engellemektedirler. Genel çalışma mantıkları ön tarafta bulunan yük dengeleyicisi istemcilerden gelen tüm istekleri karşılamakta ve bu istekleri arka taraftaki sunuculara yoğunlukları göze alarak dağıtmasına dayanmaktadır.

Güvenlik denetimi yapan penetration testerların kurum sunucularının testlerini yapmadan önce kurum bünyesinde kullanılan yük dengeleyicilerin varlıklarını tespit etmeleri gerekmektedir. Bu testlerin yapılmasının bir çok methodu mevcuttur. Bu methodlar aşağıdaki gibidir.
1- Dinamik DNS (Domain Name System) Analizleri:
Dns kayıtlarından faydalanılarak web sunucuların isimlerine karşılık gelen ip’ler çözümlenerek aynı isme hizmet veren birden fazla ip adresinin tespit edilmesine dayanır.
Örnek kayıt.
www.localhost1.com has address 192.168.34.3
www.localhost1.com has address 192.168.34.8
www.localhost1.com has address 192.168.34.21
www.localhost1.com has address 10.2.2.3
Bu kayıtlardan bir isme karşılık birden fazla ip adresinin varlığını görme şansına sahipiz. Bu yaklaşım bize testi yapılan ip bünyesinde yük dengeleyicilerinin kullanılmakta olduğunu göstermektedir.
Yukarıda verilen testi otomatize yapmak için kullanabileceğiniz shell script ise
#!/bin/bash
# DNS Load Balancer Test script
# Writen by Savas Saygılı
TIMES=20
function press_enter
{
echo “”
echo -n -e “\033[1;44mpress enter for continue \033[0m”
read
}
selection=
until [ “$selection” = “0″ ];do
echo -e “\033[41m——————————————————\033[0m”
echo -e “\033[41m| Load-Blancer Test Script Writen By Savas Saygili |\033[0m”
echo -e “\033[41m——————————————————\033[0m”
echo -e “\033[41m| Options |\033[0m”
echo -e “\033[41m——————————————————\033[0m”
echo -e “\033[41m| a) only one host |\033[0m”
echo -e “\033[41m| b) read host from file |\033[0m”
echo -e “\033[41m| q) quit |\033[0m”
echo -e “\033[41m——————————————————\033[0m”
echo “”
echo -n -e “\033[1;33myour choose : \033[0m”
read selection
case $selection in
a)
echo -n -e “\033[36mwrite FQDN like:www.google.com \033[0m\n”
read TARGET
echo -e “\033[33mConnecting to [$TARGET] [$TIMES] times\033[0m\n”;
for ((i=0; i<$TIMES; i++)); do
host $TARGET | grep address > dns.txt;
done
cat dns.txt | sort -u
rm dns.txt;
press_enter;;
b)
echo -n -e “\033[36mwrite file name \033[0m\n”
read FILE
for i in `cat $FILE`; do
echo -e “\033[33mConnecting to [$i] [$TIMES] times\033[0m\n”;
for ((a=0; a<$TIMES; a++)); do
host $i | grep address > dns.txt
done
cat dns.txt | sort -u
done;
rm dns.txt;
press_enter;;
q ) exit ;;
* ) ./dns-loadb-test.sh; press_enter;;
esac
done;
indir!!!!!
2- Web Sunucu Konfigurasyon incelemeleri:
Web sunucuları üzerinde yapılan yanlış konfigürasyonlar sayesinde sunucunun bizlere gönderdiği response sayfaları içerisinde kullanılan yazılımsal ve/veya donanımsal yük dengeleyicilerinin bilgisi sızabilir.
Örnek: http response başlığı
HTTP/1.1 200 OK
Date: Wed, 14 Nov 2007 11:18:06 GMT
Server: Apache
Content-Length: 11120
X-WebLogic-Cluster-List: -1158145635!180922349!9933!-1|-146777567!180922430!9933!-1
Content-Type: text/html;charset=UTF-8
Yukarıdaki örnekte weblogic üzerinde yapılandırılmış yük dengeleyicisinin response başlığına eklediği satıra dikkat edelim…
3- Zaman Senkronizasyon Analizleri:
Web sunucular arasında bir yük dengeleyici altyapısının olup olmadığını anlamanın bir diğer yolu ise suncuların zaman bilgilerinin alınıp incelenmesi ile yapılabilir.
örnek kayıt:
Connecting to [www.savassaygili.net] [10] times
Date: Wed, 14 Nov 2007 13:28:40 GMT
Date: Wed, 14 Nov 2007 13:28:40 GMT
Date: Wed, 14 Nov 2007 13:28:40 GMT
Date: Wed, 14 Nov 2007 13:28:40 GMT
Date: Wed, 14 Nov 2007 13:28:41 GMT
Date: Wed, 14 Nov 2007 13:28:44 GMT
Date: Wed, 14 Nov 2007 13:28:44 GMT
Date: Wed, 14 Nov 2007 13:28:44 GMT
Date: Wed, 14 Nov 2007 13:28:44 GMT
Date: Wed, 14 Nov 2007 13:28:44 GMT
Bu kayıtlar sonucu sunucunun bize gönderdiği zaman değerleri arasındaki farklılıklardan testi yapılan web adresi için yük dengeleyicilerinin kullanılmakta olduğunu görebilmekteyiz.
Yukarıda verilen testi otomatize yapmak için kullanabileceğiniz shell script ise
#!/bin/bash
# web-server time Test script
# Writen by Savas Saygılı
TIMES=20
echo -n -e “\033[36mwrite FQDN like:www.google.com \033[0m\n”
read TARGET
echo “Connecting to [$TARGET] [$TIMES] times”;
for ((i=0; i<$TIMES; i++)); do
echo -e ‘HEAD / HTTP/1.0\r\n\r\n’ | nc $TARGET 80 | grep ‘Date:’;
done
indir!!!!!
Ayrıca yukarıda verilen scriptlerin orjinal hallerini http://michaeldaw.org/projects/load-balance-enum/ adresinden bulabilirsiniz. Ben scriptlere bazı eklemeler yapıp koydum ve onun için yorum olarak kendi adımı yazdım bu scriptleri sizlerde alıp daha kullanışlı ve moduler bir hale getirip istediğiniz gibi kendi sayfanıza koyup kendi adınızı yazabilirsiniz.
Tahsin bey gibi duyarlı okuyucularımızada ayrıca teşşekkürler…