sysctl.conf ile Linux Çekirdeği Sertleştirme. SYN Flood Saldırılarına Karşı Koruma ve TCP Ayarlaması | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

sysctl.conf ile Linux Çekirdeği Sertleştirme. SYN Flood Saldırılarına Karşı Koruma ve TCP Ayarlaması

Giriş

Bu eğitimde, sysctl.conf kullanarak Linux çekirdeğini güçlendirecek, sunucunuzu SYN sel saldırılarına karşı koruyacak ve TCP yığını davranışını optimize edeceksiniz. Çekirdek düzeyinde ayarlamalar, ağ tabanlı hizmet reddi (DoS) saldırılarına karşı dayanıklılığı artırır ve genel TCP performansını iyileştirir. Ayrıca, kontrollü bir ortamda bir SYN sel saldırısını simüle edecek ve koruma mekanizmalarınızın doğru çalıştığını doğrulayacaksınız.

Ön Koşullar

Hedef Kitle: Orta düzey sistem yöneticileri
Tahmini Süre: 45–60 dakika

Sistem Gereksinimleri

  • İşletim Sistemi: Ubuntu 24.04 LTS (test edildi); Debian 12/13 ve diğer modern Linux dağıtımları ile uyumlu
  • Çekirdek sürümü: 5.x veya daha yeni
  • Minimum 1 GB RAM
  • Root veya sudo ayrıcalıkları
  • Test makineleri arasında ağ erişimi

Gerekli Araçlar

Aşağıdaki araçları yükleyin:

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Kurulumu doğrulayın: hping3 --version
Beklenen çıktı: Başarılı kurulumun doğrulandığı sürüm bilgisi.

Tip

SYN sel simülasyonunu yalnızca kontrollü bir laboratuvar ortamında gerçekleştirin. Sahip olmadığınız veya test izniniz olmayan sistemlere karşı asla test yapmayın.

Adım 1: Mevcut sysctl Yapılandırmasını Yedekleyin

Değişiklik yapmadan önce bir yedek oluşturun.

sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup

Sonuç: /etc/sysctl.conf.backup adlı bir yedek dosya oluşturulur.

Adım 2: SYN Sel Koruması için Çekirdek Parametrelerini Yapılandırın

Yapılandırma dosyasını açın:

sudo nano /etc/sysctl.conf

Aşağıdaki parametreleri ekleyin veya değiştirin.

SYN Çerezlerini Etkinleştirin

net.ipv4.tcp_syncookies = 1

Amacı: SYN bekleme kuyruğu taşması olduğunda SYN çerezlerini etkinleştirir.
Değerler:

  • 0 – Devre dışı
  • 1 – SYN bekleme kuyruğu taşması olduğunda etkin (önerilen)
  • 2 – Her zaman etkin (nadiren kullanılır)

Neden: SYN çerezleri, el sıkışma tamamlanana kadar kaynak tahsisini önleyerek bellek tükenmesini önler.

Tip

Modern dağıtımlarda bu seçenek varsayılan olarak etkindir. Aşağıdaki komutla kontrol edebilirsiniz: sysctl -a | grep net.ipv4.tcp_syncookies

SYN Bekleme Kuyruğunu Artırın

net.ipv4.tcp_max_syn_backlog = 4096

Amacı: Onay bekleyen bağlantı isteklerinin maksimum sayısı.
Neden: Daha büyük bir bekleme kuyruğu, çekirdek onları düşürmeye başlamadan önce daha fazla yarı açık bağlantıya izin verir.

SYN-ACK Yeniden Denemelerini Azaltın

net.ipv4.tcp_synack_retries = 3

Amacı: SYN-ACK paketleri için yeniden iletim sayısı.
Neden: Bunu düşürmek, kötü niyetli yarı açık bağlantılarda bekleme süresini azaltır.

TCP Time-Wait Yeniden Kullanımını Etkinleştirin

net.ipv4.tcp_tw_reuse = 1

Amacı: Yeni giden bağlantılar için TIME-WAIT soketlerinin yeniden kullanılmasına izin verir.
Değerler:

  • 0 – Devre dışı
  • 1 – Etkin

Neden: Yoğun yük altında soket tükenmesini azaltır.

FIN Zaman Aşımını Azaltın

net.ipv4.tcp_fin_timeout = 15

Amacı: Bir soketin FIN-WAIT-2 durumunda kalma süresi.
Neden: Eski bağlantılardan kaynaklanan kaynak kullanımını azaltır.

Ters Yol Filtrelemeyi Etkinleştirin

net.ipv4.conf.all.rp_filter = 1

Amacı: Kaynak IP adreslerini yönlendirme tablosuna karşı doğrular.
Değerler:

  • 0 – Devre dışı
  • 1 – Sıkı mod
  • 2 – Gevşek mod

Neden: IP sahtekarlığı saldırılarını hafifletmeye yardımcı olur.

Maksimum Açık Dosya Sayısını Artırın

fs.file-max = 2097152

Amacı: Sistem genelinde maksimum dosya tanıtıcı sayısı.
Neden: Yüksek bağlantı yükü sırasında dosya tanıtıcı tükenmesini önler.

Adım 3: sysctl Değişikliklerini Uygulayın

Değişiklikleri yeniden başlatmadan uygulayın:

sudo sysctl -p

Beklenen çıktı: Her parametre yeni değeriyle görüntülenir.
Belirli bir parametreyi doğrulayın: sysctl net.ipv4.tcp_syncookies
Beklenen çıktı: net.ipv4.tcp_syncookies = 1

Sonuç: Çekirdek parametreleri aktiftir.

Adım 4: SYN Sel Saldırısını Simüle Edin

Info

Önemli: Bunu yalnızca bir laboratuvar ortamında gerçekleştirin.

Ayrı bir test makinesinden çalıştırın:

sudo hping3 -S --flood -V <YOUR_SERVER_IP> -p 80

Açıklama:

  • -S SYN paketleri gönderir
  • --flood paketleri olabildiğince hızlı gönderir
  • -p 80 HTTP portunu hedefler

Sonuç: Sunucuya yüksek hacimli SYN paketleri gönderilir.

Adım 5: Saldırı Sırasında Sunucuyu İzleyin

Hedef sunucuda bağlantıları izleyin:

netstat -ant | grep SYN_RECV | wc -l

Sonuç: Yarı açık bağlantıların sayısını gösterir.

SYN çerezleri sayacını kontrol edin:

nstat -az | grep Syncookies

TcpExtSyncookiesSent gibi artan sayaçlar gözlemlemelisiniz. Bu, SYN çerezlerinin kullanıldığını doğrular.

Adım 6: Güçlendirme Öncesi ve Sonrası Davranışı Karşılaştırın

Güçlendirme olmadan test ederseniz:

  • SYN_RECV sayısı hızla artar
  • Sunucu yanıt vermeyebilir
  • Bağlantı kuyruğu taşar

Güçlendirme sonrası:

  • SYN çerezleri etkinleşir
  • Daha az düşen bağlantı
  • Sunucu yanıt vermeye devam eder

Hedef sunucuya bir web sunucusu kurun:

sudo apt install nginx

Yanıt verme yeteneğini test etmek için:

curl http://localhost

Sonuç: Simüle edilen saldırı sırasında bile sunucu normal şekilde yanıt verir.

Adım 7: TCP Performans Ayarlaması (İsteğe Bağlı İleri Düzey Optimizasyon)

sysctl yapılandırmasına ek ayarlama parametreleri ekleyin. nano /etc/sysctl.conf çalıştırın ve ekleyin:

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Açıklama:

  • net.core.somaxconn – uygulamalar için maksimum dinleme kuyruğu uzunluğu.
  • net.core.netdev_max_backlog – işleme başlamadan önce giriş tarafında kuyrukta bekleyen maksimum paket sayısı.
  • net.ipv4.tcp_max_tw_buckets – maksimum TIME-WAIT soketleri. Bu seçenek, yüksek yük ve yeterli RAM'e sahip sunucular için geçerlidir.

Bunlar, yoğun trafik altında performansı artırır.

Değişiklikleri uygulayın:

sudo sysctl -p

Doğrulama Kontrol Listesi

  • sysctl -p hatasız çalışır
  • tcp_syncookies 1'e eşittir
  • SyncookiesSent sayacı saldırı sırasında artar
  • Sunucu yanıt vermeye devam eder
  • Günlüklerde çekirdek uyarısı yok: dmesg | grep -i syn

Değişiklikleri Geri Alma

Orijinal yapılandırmayı geri yükleyin:

sudo cp /etc/sysctl.conf.backup /etc/sysctl.conf

sudo sysctl -p

Sonuç: Sistem orijinal çekirdek parametrelerine döner.

İsteğe bağlı olarak test araçlarını kaldırın:

sudo apt remove hping3 -y

Sorun Giderme

Syncookies Artmıyor

Kontrol edin: sysctl net.ipv4.tcp_syncookies
Değer 0 ise, yapılandırmayı yeniden uygulayın.

Sunucu Hala Bağlantıları Düşürüyor

Bekleme kuyruğunu artırın: net.ipv4.tcp_max_syn_backlog = 8192
Ardından değişiklikleri uygulayın:

sudo sysctl -p

Sonuç

Linux çekirdeğini sysctl.conf kullanarak güçlendirdiniz, SYN sel koruma mekanizmalarını etkinleştirdiniz, TCP yığını davranışını optimize ettiniz ve korumaları kontrollü saldırı simülasyonu ile doğruladınız. Bu değişiklikler, SYN sel saldırılarına karşı dayanıklılığı artırır ve genel ağ kararlılığını artırır.

Sonraki Adımlar

  • Güvenlik duvarı hız sınırlaması ile birleştirin (iptables veya nftables)
  • Bağlantı izleme sınırlarını uygulayın
  • Saldırı tespit sistemleri (IDS) dağıtın
  • Prometheus ve Grafana kullanarak metrikleri izleyin

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA