OffshoreVps
Güvenlik13 Eki 20268 dk okumaYazan: OffshoreVps ekibi

Nginx ile VPS için 7. katman DDoS koruması

Ana makine düzeyindeki DDoS koruması ham trafik seller halini durdurur, kurnaz istekleri değil. Uygulama katmanı saldırılarından kurtulmak için Nginx ve fail2ban ile hız sınırları, önbellekleme ve bot kuralları ekleyin.

Çoğu barındırma planı DDoS koruması vaat eder. Bu genellikle, büyük çöp paket sellerinin (3. ve 4. katmanlar) sunucunuza ulaşmadan filtrelenmesi anlamına gelir. Bin "gerçek" tarayıcının en yavaş sayfanızı aynı anda yüklemesini durdurmaz. Bu uygulama katmanı (7. katman) saldırıları sıradan ziyaretçi gibi görünür ve bunlarla kendiniz ilgilenmeniz gerekir. Arka plan için DDoS korumasının ne olduğuna bakın.

Nginx ile Katman 7 DDoS savunması için kullanılan komutları gösteren VPS üzerindeki terminal penceresi
Bu rehberde sunucunuzda çalıştıracağınız komutlardan örnekler.

Farkı bilin

  • Hacimsel seller: ağ borusunu doldurur. Bunları barındırıcı veya üst akış sağlayıcı filtreler.
  • Protokol saldırıları: bağlantı tablolarını tüketir. Çoğunlukla ağ tarafından karşılanır.
  • 7. katman saldırıları: CPU'yu, veritabanını veya işçileri tüketen, geçerli görünümlü HTTP istekleri. Bunlar uygulamanıza ulaşır.

Adım 1: Nginx'te hız sınırı koyun

Tek bir adresin ne kadar hızlı istek yapabileceğini sınırlayın. http bloğunda bir bölge tanımlayın ve sitenize uygulayın.

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connip:10m;

server {
    location / {
        limit_req zone=perip burst=20 nodelay;
        limit_conn connip 20;
    }
    location = /login {
        limit_req zone=perip burst=3 nodelay;
    }
}

Giriş ve aramada çok daha sıkı bir sınır kullanın, çünkü bunlar maliyetlidir.

Adım 2: Yapabildiğinizi önbelleğe alın

Önbelleğe alınmış bir sayfayı sunmak neredeyse hiçbir şeye mal olmaz. Anonim trafik için 30 ila 60 saniye bile olsa FastCGI veya proxy önbelleğini açın. Aynı isteklerden oluşan seli, bir avuç gerçek isteğe dönüştürür.

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=site:50m inactive=10m;
fastcgi_cache site;
fastcgi_cache_valid 200 60s;
fastcgi_cache_use_stale updating error timeout;
Bu rehberin adımları sırasıyla: 1. Farkı bilin; 2. Nginx’te hız sınırı koyun; 3. önbelleğe alabildiğinizi alın; 4. tekrar eden saldırganları fail2ban ile yasaklayın; 5. iş ciddileşince öne bir proxy koyun; 6. Olmadan önce hazırlıklı olun
Bu rehberdeki adımlar sırasıyla.

Adım 3: Makul zaman aşımları ayarlayın

Yavaş bağlantı saldırıları işçileri açık tutar. Sınırları kısaltın.

client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 15s;
keepalive_timeout 15s;
client_max_body_size 5m;

Adım 4: Tekrar edenleri fail2ban ile yasaklayın

Hız sınırlayıcıya takılan adresleri yasaklayın. Nginx reddedilen istekleri hata günlüğüne yazar ve bir filtre bunları eşleştirebilir.

[nginx-limit-req]
enabled  = true
filter   = nginx-limit-req
logpath  = /var/log/nginx/error.log
maxretry = 10
findtime = 60
bantime  = 1h

Adım 5: İş ciddileşince önüne bir proxy koyun

Bot doğrulamalı bir ters proxy veya CDN, tek bir VPS'in karşılayamayacağı saldırıları sönümleyebilir. Kaynağı kaynak IP'nizi gizli tutma yazısında anlatıldığı gibi korumayı unutmayın, yoksa saldırganlar onu atlatır.

Olmadan önce hazır olun

  • En yavaş sayfalarınızı bilin ve düzeltin ya da önbelleğe alın.
  • Ani artışı çabuk fark etmek için izlemeyi sürdürün.
  • Bir planınız olsun: daha sıkı sınırlar, bir bakım sayfası, daha büyük bir sunucu.

UFW ve fail2ban rehberindeki temel adımlar bununla birlikte uygulanır.