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.