DoS/DDoS Saldırılarından Korunmak için Temel Öneriler

DOS saldırılarından korunmanın sihirbazvari bir yolu yoktur. Korunmanın en sağlam yöntemi korumaya çalıştığınız network yapısının iyi tasarlanması, iyi bilinmesi ve bu konuyla görevli çalışanların TCP/IP bilgisinin iyi derecede olmasıdır. Çoğu DOS saldırısı yukarıda sayılan bu maddelerin eksikliği sebebiyle başarılı olur.

Bu yazıda temel seviyede koruma amaçlı ağ ve güvenlik sistemleri seviyesinde yapılması gereken ayarlardan bahsedilmiştir.

Router(Yönlendirici) Seviyesinde Koruma
Sınır koruma düzeninde ilk eleman genellikle Router’dır. Sisteminize gelen-giden tüm paketler öncelikle router’dan geçer ve arkadaki sistemlere iletilir. Dolayısıyla saldırı anında ilk etkilenecek sistemler Router’lar olur.
Kullanılan router üzerinde yapılacak bazı ayalar bilinen DOS saldırılarını engellemede, ya da en azından saldırının şiddetini düşürmede yardımcı olacaktır. Yine saldırı anında eğer gönderilen paketlere ait karekteristik bir özellik belirlenebilirse router üzerinden yazılacak ACL(Erişim Kontrol Listesi)ler ile saldırılar kolaylıkla engellenebilir.
Mesela saldırganın SYN flood yaptığını ve gönderdiği paketlerde src.port numarasının X olduğunu düşünelim(Türkiye’de yapılan dos saldırılarının çoğunluğu sabit port numarasıyla yapılır, juno kullanılarak). Router üzerinde kaynak port numarası X olan paketleri engellersek saldırıdan en az kayıpla kurtulmuş oluruz. Bu arada kaynak portunu X olarak seçen ama saldırı yapmayan kullanıcılardan gelen trafiklerde ilk aşamada bloklanacak ama normal kullanıcılardaki TCP/IP stack hemen port numarasını değiştirerek aynı isteği tekrarlayacaktır.
Tabi bu engelleme yöntemi her saldırı için geçerli olmayabilir. C programlama bilgisi olan birisi rahatlıkla juno’nun koduyla oynayarak rastgele portlardan SYN flood yapmasını sağlayacaktır.
Yine routerlar üzerinden alınacak Netflow bilgisiyle saldırının şiddeti, karekteristiği, ne kadar sürdüğü ve nerelerden geldiği bilgileri kayıt altına alınabilir. Dış routerlarda eğer cihaz performans problemine sebep vermeyecek şekilde Netflow alımını sağlıyorsa bu özellik mutlaka kullanılmalıdır. Fakat bazı sistemler düzgün yapılandırılmadığından netflow sunucuya paket göndermeye çalışırken performans problemine sebep olabilirler.

Güvenlik Duvarı Seviyesinde Koruma

Güvenlik duvarlarında alınabilecek önlemlerden ilki –eğer cihaz destekliyorsa- rate limiting özelliğini aktif etmektir. Rate limiting özelliğiyle belirli bir ip adresinden gelecek maksimum paket sayisi belirlenip eşik değerini aşan ip adresleri belirli süreliğine bloklanabilir. Böylece saldırı yapan sistemler ve normal sistemler ayırt edilebilir.
Bu özellik dikkatli kullanılmazsa akıllı bir saldırgan tüm internet bağlantınızı bloklayabilir.
Bunun haricinde güvenlik duvarlarında kurulumla birlikte gelen ön tanımlı bazı ayarlar değiştirilmelidir. Bu ayarlar Firewall’dan gelip-geçen paketler için ne kadarlık bir süre kaynak ayrımı yapılacağını belirtir.

Güvenlik duvarı üzerinde ön tanımlı ayarların  değiştirilmesi

Güvenlik duvarı kısaca koruma altına aldığı sistemlere gelen paketleri karşılayan ve üzerinde yazılı politikaya göre paketlerin geçişine izin veren sistemlerdir. Günümüz güvenlik duvarları durum koruma (stateful) özelliğine sahiptir. Böylece her gelen paket için tüm güvenlik duvarı kuralları tekrar tekrar incelenmez, eğer gelen-giden paket daha önceki bir bağlantıya ait ise doğrudan geçirilir.
Bunu sağlayabilmek için güvenlik duvarları  üzerinden gelip geçen her bir paket için sistemde kaynak ayırır.(Paketin cevabını ne kadarlık süre bekleneceği vs). Ayrılan bu kaynaklar DDOS saldırısı esnasında çabucak tükenir. DDOS saldırılarına karşı daha sağlam bir güvenlik duvarı için gelip-giden paketler için tutulan zaman aşımı süreleri kısaltılabilir.
TCP ve UDP paketleriyle ilgili oturum bilgilerinin varsayılan değerlerinin değiştirilmesi
# pfctl -st
No ALTQ support in kernel
ALTQ related functions disabled
tcp.first                   100s
tcp.opening                 100s
tcp.established           96000s
tcp.closing                  33s
tcp.finwait                  10s
tcp.closed                   20s
tcp.tsdiff                   30s
udp.first                    60s
udp.single                   30s
udp.multiple                 60s
icmp.first                   20s
icmp.error                   10s
other.first                  60s
other.single                 30s
other.multiple               60s
frag                         30s
interval                     10s
adaptive.start          1200000 states
adaptive.end            2400000 states
src.track                     0s
Yukardaki değerler Packet Filter güvenlik duvarından alınmıştır(pfctl –s timeouts), TCP bağlantıları için başlangıç paketi SYN alındıktan sonra ACK paketinin gelmesi için bağlantı 120 sn açık bırakılmaktadır. Bu değerler günümüz internet dünyası için fazla gelmektedir. Bu değerlerin 10’da biri bile normal işleyen bir ağda yeterlidir. Saldırı esnasında bu değerlerin düşürülmesi saldırının etkisini önemli oranda azaltacaktır.
Güvenlik duvarı syncookie, synproxy özelliklerinden birine sahipse bu özelliğin aktif edilmesi Synflood saldırılarına karşı en ciddi korumayı sağlayacaktır. Syncookie, syncache ve synproxy özellikleri syn flood saldırılarında oturum kurulmamış TCP paketlerinin unucuya ulaşmasını engelleyip DDOS’dan korumuş olur. Gelen saldırının şiddetine göre syncookie koruması yapan güvenlik duvarı da devre dışı kalabilir.
Eğer sisteminiz destekliyorsa syncookie yerine synproxy özelliği daha sağlıklı bir koruma sağlayacaktır.

Saldırı Engelleme Sistemi(IPS) Seviyesinde Koruma

IPS’ler bilinen DOS/DDOS saldırılarına yönelik çeşitli saldırı imzalarını veritabanlarında barındırırlar. Her ne kadar bu saldırı tipleri çok klasik olsa da günümüzde denenmektedir. IPS’ler üzerinde ilk yapılacka iişlem DOS/DDOS saldırılarına karşı önlem olabilecek imzaların devreye alınmasıdır.

Basit bir SYNFlood önlemi

Aşağıdaki saldırı imzası shaft aracı kullanılarak yapılan DDOS salırılarını belirler. Saldırı Tespit/Engelleme sistemlerinin bu tip bilinen araçlar icin çeşitli imzaları bulunmaktadır.
alert tcp $HOME_NET any <> $EXTERNAL_NET any (msg:”DDOS shaft synflood”; flow:stateless; flags:S,12; seq:674711609; metadata:policy security-ips drop; reference:arachnids,253; reference:cve,2000-0138; classtype:attempted-dos; sid:241; rev:11;)
Alternatif bir kural (Generic Syn Flood Atağı)
alert tcp any any -> $WEB_SUNUCU 80 (msg:”Syn Flood Saldirisi”; flow: stateless; flags:S,12; threshold: type threshold, track by_src, count 100, seconds 1; classtype:attempted-recon; sid:10009;rev2;)
Ek olarak eğer destekliyorsa IPS üzerinde syncookie özelliği devreye alınmalıdır ve firewall’dakine benzer şekilde stateful bağlantılarda zamanaşımı sürelerinin iyi ayarlanması saldırıların etkisini azaltacaktır.

Web Sunuculara Yönelik Koruma

Web sunucular şirketlerin dışa bakan yüzü olduğu için genellikle saldırıyı alan sistemlerdir. Web sunuculara yönelik çeşitli saldırılar yapılabil fakat en etkili saldırı tipleri GET flood saldırılarıdır. Bu saldırı yönteminde saldırgan web sunucunun kapasitesini zorlayarak normal kullanıcıların siteye erişip işlem yapmasını engeller.
Bu tip durumlarda güvenlik duvarlarında uygulanan rate limiting özelliği ya da web sunucular önüne koyulacak güçlü yük dengeleyici/dağıtıcı(load balancer)cihazlar ve ters proxy sistemleri oldukça iyi koruma sağlayacaktır.
Güvenlik duvarı kullanarak http GET isteklerine limit koyulamaz. Zira http keepalive özelliği sayesinde tek bir TCP bağlantısı içerisinden yüzlerce http GET komutu gönderebilir. Burada paket içeriğine bakabilecek güvenlik duvarı/ips sistemleri kullanılmalıdır.
Mesela Snort saldırı tespit/engelleme sistemi kullanılarak aşağıdaki kuralla 3 saniyede 50’den fazla http GET isteği gönderen ip adresleri bloklanabilmektedir.
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;)

 İşletim sistemleri üzerinde basit koruma ayarları

Synflood saldırılarına karşı koruma amaçlı temelde iki çözüm bulunmaktadır. Bunlardan biri syn cookie diğeri de syn proxy’dir.

Linux sistemlerde syncookie özelliğinin aktif hale getirilmesi için  /etc/sysctl.conf dosyasına  net.ipv4.tcp_syncookies = 1 eklenmeli ve sysctl –p komutu çalıştırılmalı ya da geçici olarak echo 1 > /proc/sys/net/ipv4/tcp_syncookies  komutu kullanılamalıdır. Windows için aynı özelliği devreye alacak çeşitli registry ayarları mevcuttur.

Ağınızdan DOS/DDOS yapılmasını Engelleme

Ağınızdan sahte ip adresine sahip paketlerin çıkışını engellemek için kullanılan güvenlik duvarlarındaki antispoof ya da URPF özellikleri kullanılabilir. Sahte ip kullanmadan gerçekleştirilen saldırılar için internet çıkış trafiğini izleyen basit bir IDS sisteminin olması yeterli olacaktır. IDS olarak Snort kullanılabilir.

This entry was posted in Misc. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

13 + nineteen =