Linux sistemlerde SYN Flood DDoS Saldırılarına Karşı Önlem Alma

SynFlood DDoS Saldırıları siber dünyada en sık karşılaşılan DDoS saldırı türlerinden biridir.Amaç hedef sisteme onbinlerce karşılıksız SYNpaketi göndererek cevap veremeyecek hale gelmesini sağlamaktır.

SynFlood DDoS saldırılarıyla ilgili detay bilgi için SynFlood DDOSSaldırıları ve Korunma Yolları makalesi incelenebilir.

SynFlood Nasıl Anlaşılır?

Linux komut satırında aşağıdaki komutu çalıştırıldığında fazla sayıda bağlantı gözüküyorsa muhtemelen bir SYN Flood DDoS saldırısıyla karşı karşıyasınız demektir.

[root@hackme labs~]# netstat -n –tcp -c 3 |grep SYN_RECV

tcp 0 0 91.93.119.77:80 177.87.136.10:1818 SYN_RECV

tcp 0 0 91.93.119.77:80 24.132.5.251:1821 SYN_RECV

tcp 0 0 91.93.119.77:80 30.67.96.230:1827 SYN_RECV

tcp 0 0 91.93.119.77:80 21.130.236.53:1820 SYN_RECV

tcp 0 0 91.93.119.77:80 80.147.16.130:1825 SYN_RECV

tcp 0 0 91.93.119.77:80 21.12.135.87:1826 SYN_RECV

tcp 0 0 91.93.119.77:80 191.131.186.139:1824 SYN_RECV

tcp 0 0 91.93.119.77:80 130.160.57.31:1830 SYN_RECV

tcp 0 0 91.93.119.77:80 211.203.96.26:1828 SYN_RECV

tcp 0 0 91.93.119.77:80 182.191.111.79:1829 SYN_RECV

tcp 0 0 91.93.119.77:80 47.161.173.219:1822 SYN_RECV

tcp 0 0 91.93.119.77:80 20.167.59.147:2253 SYN_RECV

tcp 0 0 91.93.119.77:80 89.79.80.56:2246 SYN_RECV

tcp 0 0 91.93.119.77:80 177.87.136.10:1818 SYN_RECV

tcp 0 0 91.93.119.77:80 24.132.5.251:1821 SYN_RECV

tcp 0 0 91.93.119.77:80 48.23.209.176:2239 SYN_RECV

tcp 0 0 91.93.119.77:80 30.67.96.230:1827 SYN_RECV

tcp 0 0 91.93.119.77:80 21.130.236.53:1820 SYN_RECV

tcp 0 0 91.93.119.77:80 136.27.83.13:2251 SYN_RECV

tcp 0 0 91.93.119.77:80 80.147.16.130:1825 SYN_RECV

tcp 0 0 91.93.119.77:80 179.114.189.153:2240 SYN_RECV

tcp 0 0 91.93.119.77:80 21.12.135.87:1826 SYN_RECV

tcp 0 0 91.93.119.77:80 96.189.112.113:2238 SYN_RECV

tcp 0 0 91.93.119.77:80 191.131.186.139:1824 SYN_RECV

tcp 0 0 91.93.119.77:80 1.231.150.147:2252 SYN_RECV

tcp 0 0 91.93.119.77:80 130.160.57.31:1830 SYN_RECV

tcp 0 0 91.93.119.77:80 211.203.96.26:1828 SYN_RECV

tcp 0 0 91.93.119.77:80 95.21.213.128:2244 SYN_RECV

tcp 0 0 91.93.119.77:80 13.155.65.210:2241 SYN_RECV

tcp 0 0 91.93.119.77:80 182.191.111.79:1829 SYN_RECV

tcp 0 0 91.93.119.77:80 152.169.163.105:2245 SYN_RECV

tcp 0 0 91.93.119.77:80 47.161.173.219:1822 SYN_RECV

tcp 0 0 91.93.119.77:80 155.149.243.57:2242 SYN_RECV

tcp 0 0 91.93.119.77:80 77.113.73.5:2249 SYN_RECV

tcp 0 0 91.93.119.77:80 100.226.199.142:2243 SYN_RECV

tcp 0 0 91.93.119.77:80 223.186.209.162:2248 SYN_RECV

tcp 0 0 91.93.119.77:80 183.128.176.227:2250 SYN_RECV

tcp 0 0 91.93.119.77:80 152.249.34.155:2278 SYN_RECV

tcp 0 0 91.93.119.77:80 183.112.183.153:2257 SYN_RECV

tcp 0 0 91.93.119.77:80 217.214.197.173:2273 SYN_RECV

tcp 0 0 91.93.119.77:80 20.167.59.147:2253 SYN_RECV

tcp 0 0 91.93.119.77:80 89.79.80.56:2246 SYN_RECV

tcp 0 0 91.93.119.77:80 150.226.59.44:2274 SYN_RECV

tcp 0 0 91.93.119.77:80 177.87.136.10:1818 SYN_RECV

tcp 0 0 91.93.119.77:80 24.132.5.251:1821 SYN_RECV

tcp 0 0 91.93.119.77:80 48.23.209.176:2239 SYN_RECV

Saldırıda Hangi IP Adresleri Kullanılıyor

Aşağıdaki komut saldırı anında çalıştırılırsa SynFlood saldırısının hangi IP adreslerinden yapıldığı izlenebilir.

(sol taraftaki rakam IP adresinden kaç adet SYN paketi gönderildiğini gösterir)

[root@hackmelabs ~]# netstat -n –tcp |grep SYN_RECV | awk ‘{print $5}’ | cut -d “:” -f1 | sort | uniq -c | sort -n

1 103.90.150.61

1 105.141.151.129

1 106.100.49.44

1 108.215.191.160

1 109.194.71.71

1 113.26.137.48

1 114.119.59.61

1 11.44.218.9

1 117.199.156.59

1 120.176.121.137

1 121.93.102.75

1 122.114.180.176

1 122.186.135.73

1 124.28.245.103

1 126.194.135.147

1 126.53.58.71

1 128.119.254.113

1 129.89.249.168

1 135.80.216.254

1 136.52.109.217

1 140.104.162.62

1 140.128.32.164

1 14.249.20.26

1 143.129.186.13

Eğer çıktıda her IP adresi birer tane bağlantı kuruyor gözüküyorsa büyük ihtimalle gerçekleştirilen SynFlood saldırısı spoofed IP adreslerinden geliyor demektir.

Önlem Alma

SynFlood DDoS saldırılarına karşı en etkili çözüm syncookie/synproxy mekanizması kullanımıdır. Piyasadaki tüm güvenlik ürünleri SYN Flood engellemek için ya syncookie ya da synproxy(stateless syncooki kullanan da var)kullanır.

Linux dağıtımları halihazırda syncookie özelliğiyle birlikte gelir, tek yapılması gereken bu özelliğin aktif hale getirilmesidir.

Aşağıdaki komutla Linux sistemlerde SYNCOOKIE özelliği aktif hale getirilebilir.

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

yapılan bu işlemin kalıcı olması için /etc/sysctl.conf dosyasına aşağıdaki formatta yazılmış olmalıdır.

net.ipv4.tcp_syncookies = 1

tcp_max_syn_backlog değerinin arttırılması

tcp_max_syn_backlog değeri bellekte ne kadar yarım bağlantı (SYN ACK gönderilmiş ACK bekleniyor) tutulacağını belirtir. Bu değerin dolması demek yeni bağlantı kabul edilmemesi demektir. Bu sebepten dolayı tcp_max_syn_backlog değerini yükseltmek gerekir.

Bu değer aynı zamanda syncookie özelliğinin devreye girmesini tetikleyen eşik değeridir. Eşik değeri aşıldığında sysloga aşağıdaki gibi bir mesaj düşecektir.

Jun 3 02:15:11 hackme kernel: possible SYN flooding on port 80. Sending cookies.

#echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog

ek olarak her gelen SYN paketi için son ACK paketi dönene kadar 5 kere SYN/ACK gönderilir. Bu değer de 2′e indirilebilir.

#echo 2 > /proc/sys/net/ipv4/tcp_synack_retries

Timeout değerlerini düşürme

Linux sisteme SYN paketi geldiğinde bu pakete SYN/ACK cevabı dönecek ve ACK cevabını beklemeye başlayacak. Eğer sistemden ACK cevabı gelmezse SYN/ACK paketlerini belirli aralıklarla tekrar gönderilecektir bu gönderim esnasında ilgili session backlog queue de yer kapladığı için sistem kaynağı tüketir. Buradaki bekleme süreleri düşürülerek sistemin daha dayanıklı olması sağlanabilir.

Iptables ile SYN Flood Koruması

Linux sistemlerin dezavantajı sadece kendi ip adreslerine yönelik syncookie özelliğini devreye alınabilmesidir. Linux sistemleri güvenlik duvarı olarak kullanılıyorsa firewall arkasındaki sistemlere yönelik SYN flood ataklarına bir koruma sağlamayacaktır.

Iptables’in rate limiting özellikleri ise Syn flood saldırılarına karşı bir önlem gibi gözükse de işini bilen bir saldırgan bu özellikleri tersine çevirebilir(self DoS).

Ek öneriler

Linux sistemlerin ağ işlemlerindeki performansını arttırmak için http://lists.varnish-cache.org/pipermail/varnish-misc/2008-April/001763.html adresindeki öneriler incelebilir.