📒  Güven ve Güvenlik

Nginx’te ddos saldırısı nasıl önlenir

Nginx’te ddos saldırısı nasıl önlenir, bu nginx ddos koruma yapılandırması ile Nginx Web sunucusu ile belirli DDoS Saldırılarını nasıl engelleyeceğinizi öğrenin, bu, sunucunuzun belirli yaygın DDoS Saldırılarını önlemesine ve engellemesine yardımcı olacaktır, Nginx yapılandırması ve sertleştirme ile sunucunuzdaki bazı saldırıları engelleyebilirsiniz.

Alexhost, bazı belirli saldırılara karşıücretsiz Anti-DDoS Koruması sunar, VPS Sun ucularımızı veya Özel Sunucularımızı kullanabilirsiniz, ücretsiz Anti-DDoS Koruması sunuyoruz, ancak azaltma kapasitesi, yöntemler, filtreleme seçtiğiniz konuma göre farklı olacaktır.

Gereksinimler:
Nginx (mevcut sunucunuzda Nginx’in kurulu olması gerekir)
Biraz Bilgi (Linux’un temel komutlarının nasıl kullanılacağını ve bazı Nginx dosyalarına nasıl erişileceğini bilmek gerekir, know-how beklenir)
VPS sunucu veya Adanmış Sunucu (localhost’unuzda bir VM kullanabilirsiniz)
DDoS Koruması (daha karmaşık DDoS Saldırılarını hafifletebilmek için Barındırma Sağlayıcınızdan)
Linux (Nginx’in kurulabildiği herhangi bir dağıtım)
Nginx (test etmek ve hala güvenilir olup olmadığını kontrol etmek için Nginx belgelerini okumanız gerekebilir)

Sınırlamalar: Bu eğitim tüm DDoS Saldırılarına karşı koruma sağlamak için “kurşun geçirmez” değildir, bu muhtemelen belirli ortak saldırı türlerini engelleyerek saldırıyı sınırlayacak ve sunucunuzun çevrimiçi olmasına yardımcı olacaktır. Bazı DDoS Saldırılarına karşı bazı sınırlamalar vardır, engellemek ve önlemek için Barındırma Sağlayıcınızın bir tür DDoS Koruması sunması gerekir, bu yapılandırma sunucunuza yönelik tüm saldırılara karşı koruma sağlayamaz. Bu yapılandırma bazı saldırıları önlemek ve engellemek içindir, ancak Hosting’inizden DDoS Koruması olmadan tüm saldırıları engellemeyecektir.

Uyarı: Alexhost bu yapılandırmayı üretim sunucunuzda kullanmanızı önermez, herhangi bir şey yapmadan önce test etmenizi öneririz. Alexhost, bunun yaratabileceği veya yaratmayacağı herhangi bir sorundan sorumlu değildir. İyi bir sunucu güvenliği sağlayın, herhangi bir şey uygulamadan önce geri yüklemeniz gerekmesi durumunda her şeyi yedekleyin. Nasıl çalıştığını anlamak için lütfen DDoS Koruması için Nginx Dokümantasyonunu okuyun.

Nginx’i güçlendirerek DDoS Saldırılarını Önleyin

Nginx’i DDoS koruması için yapılandırmak ve yaygın saldırı katmanlarına karşı güçlendirmek, saldırıları azaltmak ve önlemek için çeşitli stratejilerin uygulanmasını içerir. İşte güvenliği artırmak için Nginx’i nasıl yapılandıracağınıza ve web sunucunuzu güçlendirerek nginx’te ddos saldırısını nasıl önleyeceğinize dair bir kılavuz:

  1. Nginx’i güncelleyin: En son güvenlik yamaları ve iyileştirmelerden yararlanmak için Nginx’in en son kararlı sürümünü kullandığınızdan emin olun.
  2. Bağlantıları Sınırlayın: Tek bir IP adresinden gelen bağlantı sayısını kısıtlamak için limit_conn modülünü kullanın. Bu, DDoS saldırılarının sunucunuzu çok fazla eşzamanlı bağlantıyla boğmasını önlemeye yardımcı olur.

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    sunucu {
        limit_req zone=req_limit_per_ip burst=5;
        # Diğer sunucu yapılandırmaları...
    }
}

Beyaz Liste/Kara Liste IP’leri: Güvenilir IP adreslerini beyaz listeye almak ve kötü niyetli olanları engellemek için allow ve deny yönergelerini kullanın.
nginx

http {
    # Güvenilir IP adreslerini beyaz listeye alın
    192.168.1.0/24'e izin ver;
    deny all;
    # Diğer sunucu yapılandırmaları...
}

Web Uygulaması Güvenlik Duvarı (WAF) uygulayın: Kötü amaçlı HTTP trafiğini tespit etmek ve engellemek için Nginx ile ModSecurity gibi üçüncü taraf modülleri kullanın.

HTTPS’yi Etkinleştir: Verilerin ele geçirilmesini ve ortadaki adam saldırılarını önlemek için HTTPS kullanarak istemciler ve sunucu arasındaki iletişimi şifreleyin.

Kullanılmayan Modülleri DevreDışı Bırakın: Saldırı yüzeyini azaltmak ve performansı artırmak için gereksiz Nginx modüllerini devre dışı bırakın.
nginx

./configure --without-http_autoindex_module --without-http_ssi_module
  1. Nginx Yapılandırmasını Ayarlama: Sunucunuzun donanım özelliklerine ve beklenen trafiğe göre çalışan süreçleri, çalışan bağlantıları ve zaman aşımları gibi Nginx yapılandırma parametrelerini optimize edin.
  2. İzleme ve Günlükleme: Şüpheli etkinlikler için sunucu günlüklerini düzenli olarak izleyin ve olası saldırıları yöneticilere bildirmek için uyarı sistemleri kurun.
  3. DDOS Koruma Hizmetlerinin Uygulanması: Nginx’in önünde Cloudflare, AWS Shield veya Akamai gibi özel DDoS koruma hizmetleri veya cihazları kullanmayı düşünün.
  4. Düzenli Yedeklemeler: Başarılı saldırıların etkisini en aza indirmek için kritik verilerin düzenli olarak yedeklenmesini sağlayın.

Güvenliğin devam eden bir süreç olduğunu ve sunucunuzu olası saldırılara karşı etkili bir şekilde korumak için en son güvenlik uygulamaları ve tehditleriyle güncel kalmanın çok önemli olduğunu unutmayın.

Nginx ddos koruma yapılandırması:

#Her IP’den gelen bağlantıları izlemek için bir bölge tanımlayın

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
    # Her IP'den gelen istekleri izlemek için bir bölge tanımlayın
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
    sunucu {
        dinle 80;
        server_name example.com;
        # İstekleri sınırla
        limit_req zone=req_limit_per_ip burst=20;
        # Tek bir IP'den maksimum bağlantı sayısını sınırla
        limit_conn conn_limit_per_ip 20;
        # Bazı saldırı türlerine karşı hafifletmek için büyük istek gövdelerine sahip istekleri reddedin
        client_body_buffer_size 1k;
        client_header_buffer_size 1k;
        client_max_body_size 1k;
        large_client_header_buffers 2 1k;
        # Bant genişliğinden tasarruf etmek için Gzip sıkıştırmayı etkinleştirin
        gzip açık;
        gzip_comp_level 5;
        gzip_min_length 256;
        gzip_proxied any;
        gzip_vary on;
        # Güvenliği artırmak için güvenlik başlıkları ekleyin
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Frame-Options "SAMEORIGIN";
        add_header Referrer-Policy "same-origin";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        # Yaygın savunmasız Kullanıcı Aracılarını engelleyin
        if ($http_user_agent ~* (wget|curl) ) {
            return 403;
        }
        # Gizli dosyalara erişimi engelle
        konum ~ /\. {
            hepsini reddet;
        }
        # Belirli dosya türlerine erişimi engelleyin
        konum ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php_ {
            hepsini reddet;
            return 403;
        }
        # Yönetici erişimi için IP'nizi beyaz listeye alın
        konum /admin {
            allow your_admin_ip;
            hepsini reddet;
        }
        # Belirli dizinlere erişimi reddet
        konum ~ /(sistem|satıcı) {
            hepsini reddet;
            return 403;
        }
        # Proxy istekleri uygulama sunucunuza geçirir
        konum / {
            proxy_pass http://your_backend_server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Bu yapılandırma aşağıdakileri yapar:

  1. Hız Sınırlama: Her IP adresinden gelen istek sayısını 20 isteklik bir patlama ile saniyede 10 istekle sınırlar.
  2. Bağlantı Sınırlama: Her IP adresinden gelen maksimum bağlantı sayısını 20 ile sınırlar.
  3. İstek Gövdesi Boyut Sınırlaması: Büyük istek gövdeleri gönderen saldırılara karşı hafifletmek için istek gövdelerinin boyutunu sınırlar.
  4. Gzip Sıkıştırma: Bant genişliğinden tasarruf etmek için gzip sıkıştırmayı etkinleştirir.
  5. Güvenlik Başlıkları: Güvenliği artırmak için güvenlik başlıkları ekler.
  6. Savunmasız Kullanıcı Aracılarını Engelleme: Yaygın savunmasız Kullanıcı Aracılarından gelen istekleri engeller.
  7. Gizli Dosyaları Engelleme: Gizli dosya ve dizinlere erişimi engeller.
  8. Yönetici Erişimini Beyaz Listeye Alma: Yönetici alanına yalnızca sizin IP adresinizden erişime izin verir.
  9. Belirli Dizinlere ErişimiReddetme: Sistem ve satıcı gibi hassas dizinlere erişimi engeller.
  10. Proxy Geçişi: İstekleri uygulama sunucunuza yönlendirir.

Yapılandırmayı alan adları, arka uç sunucu adresleri ve idari IP adresleri gibi özel gereksinimlerinize göre özelleştirdiğinizden emin olun. Ayrıca, sunucu günlüklerinizi düzenli olarak izleyin ve gelişen tehditlere uyum sağlamak için yapılandırmaları gerektiği gibi ayarlayın.

Sağlanan yapılandırmanın nginx.conf dosyasına eklenmesi veya ayrı yapılandırma dosyalarından dahil edilmesi amaçlanmıştır. Yapılandırmanın nereye ekleneceğine dair adım adım bir kılavuz:

  1. Nginx.conf dosyasınıbulun : Nginx kurulumunuza bağlı olarak, nginx.conf dosyası farklı dizinlerde bulunabilir. Yaygın konumlar arasında /etc/nginx/nginx.conf, /usr/local/nginx/conf/nginx.conf veya /etc/nginx/sites-available/default bulunur.
  2. Nginx.conf dosyasınıaçın : Dosyayı bir metin düzenleyici veya nano, vim veya emacs gibi bir komut satırı metin düzenleyici kullanarak açabilirsiniz.
  3. Yapılandırmayı http bloğuiçine ekleyin : HTTP sunucu ayarlarını tanımlayan http bloğunun içine, sağlanan yapılandırmayı ekleyeceksiniz. Genellikle http bloğunu nginx.conf dosyasının üst kısmına yakın bir yerde bulursunuz.
  4. Sağlanan yapılandırmayı yapıştırın: Daha önce sağlanan yapılandırmanın tamamını http bloğunun içine yapıştırın. Example.com, your_admin_ip ve your_backend_server gibi yer tutucu değerleri gerçek değerlerinizle değiştirdiğinizden emin olun.
  5. Dosyayı kaydedin ve çıkın: Yapılandırmayı ekledikten sonra nginx.conf dosyasını kaydedin ve metin düzenleyiciden çıkın.
  6. Nginx yapılandırmasını test edin: Nginx’i yeniden başlatmadan önce, yapılandırmayı sözdizimi hatalarına karşı test etmek iyi bir uygulamadır.
  7. Bunu aşağıdaki komutu çalıştırarak yapabilirsiniz:
    nginx -t

Herhangi bir sözdizimi hatası yoksa, yapılandırma dosyası testinin başarılı olduğunu belirten bir mesaj görürsünüz.

Nginx‘iyeniden başlatın: Son olarak, değişiklikleri uygulamak için Nginx’i yeniden başlatın. Bunu aşağıdaki komut ile yapabilirsiniz:
sudo service nginx yeniden başlat

  1. Eğer systemd içeren bir sistem kullanmıyorsanız, Nginx’i yeniden başlatmak için farklı komutlar kullanabilirsiniz.

Bu adımları izleyerek, sağlanan yapılandırmayı Nginx sunucunuza ekleyecek, DDoS koruması ve diğer güvenlik önlemleriyle güvenliğini artıracaksınız, bu eğitim size Nginx’i yapılandıraraknginx’e ddos saldırısını nasıl önleyeceğiniz konusunda yardımcı olacaktır.