Linux Sisteminizi SYN DoS Saldırılarına Karsı Korumak
Saldırılar Hakkında:
SYN (TCP baglantı istegi), asagıdaki karakteristiklere sahip çok yaygın bir DoS saldırısıdır:
1-) Saldırgan Internette kullanılmayan IP adreslerini aldatma ile kullanarak (kaynak adresi olarak kullanarak - spoof) birçok SYN paketini hedef makinaya yollar
2-) Alının her SYN pakedi için, hedef makina kaynak ayırır ve onay paketini (SYN-ACK) (SYN pakedinin yollandıgı) kaynak ip adresine yollar
3-) Hedef makina, saldırı yapılan makinadan yanıt alamayacagından dolayı, SYN-ACK paketini 5 kez tekrar edecektir. Bunun tekrar süreleri, 3, 6, 12, 24 ve 48 saniyedir. Ayırdıgı kaynagı bosa çıkartmadan evvel, 96 saniye sonra son bir kez SYN-ACK denemesi yapacaktır. Hepsini topladıgınızda, görüldügü gibi hedef makina ayırdıgı kaynakları 3 dakika gibi bir süre tutacaktır. Bu sadece her bir SYN atagı için gerçeklesecek süredir.
Saldırgan bu teknigi tekrarlanan bir sekilde gerçeklestirdigi zaman, hedef makina ayırdıgı kaynaklardan dolayı kaynak yetersizligine kadar ulasır ve artık yeni bir baglantı karsılayamayacak duruma gelir. Ve bu durumda yetkili kullanıcılar bile makinaya baglanamaz.
Sistemimizi SYN’ye karsi nasil koruruz?
Bir saldırıyı önlemenin en iyi yolu salrinin tipini bilmektir. Bunun için Snort IDS Tespit sistemi suanda freeware ve en stable sistemdir. (http://www.snort.org/) (Snort kurulum ve configuration’u bir sonraki makalede anlatilacaktir.)
Diyelimki bir bilgisayardan sisteminize SYN Flooding yapiliyor. Bunu önlemenin en iyi yolu o ip’yi iptables araciligi ile banlamaktir. Bunu sizin için otomatik yapıcak çok basit ve hayat kurtarici bir script isinizi görecektir..
Programin Amaci;
Sisteme bagli ip’lerin kontrolu ve tek ip’den limitlediginiz baglantı limitinin asımı durumunda o ip’yi sistemden banlamasi.
Program default olarak ip basina 80 connection iznine ayarli fakat
$maxConnsPerIP = 80;
Kısmındaki degeri degistirerek bunu degistirebilirsiniz.
Kurulumu;
Sistem’e root ile login olduktan sonra;
wget http://www.webkeyfi.com/AntiDoS
komutu ile dosyayi sunucuya indiriyoruz.
Ve indirdigimiz dosyayi çalistirilabilir hale getirmek için;
chmod +x AntiDoS
komutunu kullaniyoruz.
simdi bu dosyanin belli araliklarla çalisip sisteme bagli ip’lerin kontrolunu yapması için crontab (zamanlanmis görevler) eklememiz gerekiyor.;
vi /var/spool/cron/root
Komutunu kullanarak cronun içine giriyoruz ve asagidaki line’i ekliyoruz;
*/5 * * * * /root/AntiDoS
(5 rakami kontrolu her 5 dk’da bir yapacagini göstermektedir bunu istediginiz sekilde ayarliyabilirsiniz tavsiyem 2dk’da bir check etmesi)
Program’in banladıgı ip’leri calisma zamanlarini asagıdaki pach’den bulabilirsiniz;
/var/log/antidos.run
/var/log/antidos.ban
Bu yöntem istemcinin sunucuya 1’den fazla gereksiz connection acip sunucuyu mesgul etmemesi için idealdir. ki cogu ddos atagın mantıgı sunucuya birden fazla istek yollayip onu cevap veremez hale getirmesidir.
Yukarıdaki yönteme ek olarak tabiki saglam bir firewall’a ihtiyacınız var. Bunun için’de size önerebilecegim APF (Advanced Policy Firewall) uygulamasıdır.
Kurulum;
Sistem’e root ile login olduktan sonra;
Wget http://www.r-fx.org/downloads/apf-current.tar.gz
komutu ile dosyayı sunucuya indiriyoruz.
Tar –zxf apf-current.tar.gz
komutu ile sıkıstırılmıs dosyayı açiyoruz.
Cd apf-0.9.6-1/
sh install.sh
komutlari ile kurulumu tamamliyoruz ve ;
./usr/local/src/apf-0.9.6-1/files/conf.apf
Dosyasini configuration için vi veya pico editoru ile aciyoruz.
# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,25,80,443,43"
# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53"
Bu satirlardaki istemciye acmak istediginiz portlari degistiriyoruz. Configuration’u bitirdikten sonra
# Set firewall cronjob (devel mode)
# 1 = enabled / 0 = disabled
DEVEL_MODE="1
Burdaki mode’u 0 yapmaniz gerekmektedir aksi takdirde cronjob program calistiktan 5dk sonra programi kapaticaktir.
APF sayesinde
Sunucuya tüm giris ve çıkıslari yönetebilir,
ICMP tabanli byte limiti koyabilir,
Kernel tabanli abort_on_overflow & tcp syncookies attacklarini önleyebilir ve daha birçok sey yapabilirsiniz..
Ayrintili configuration bilgisi için asagıdaki link’i tıklayınız;
http://www.r-fx.org/apf/README
Alıntıdır
Saygılarımla