Kötü amaçlı dijital iletişim taktikleri yoluyla DDoS (Dağıtılmış Hizmet Reddi) saldırıları , sunucu kaynaklarını aşırı yükler. Bu tür saldırılar bilgisayar dünyasındaki organize baskınlardır. Sayısız kötü muhalefet eylemi bir araya gelerek bir sunucuyu durmaya zorlayacak kadar güçlü bir tehdit oluşturur.
Hepsinden kötüsü, bu tür ev sahiplerine karşı gerilla ağı “savaşları” yürütmenin birçok yolu var. Neyse ki sunucular bu tür saldırılara direnecek şekilde yapılandırılabilir.
Unix makineleri için çok popüler bir sunucu sistemi olan Nginx, DDoS saldırılarının etkinliğini önemli ölçüde sınırlamak için yeterli yerleşik işlevselliğe sahiptir.
İşte bu tür tehditleri Nginx ile ele almak için birkaç etkili seçenek.
Nginx ile DDoS saldırıları nasıl önlenir?
Yapılandırma dosyalarını yedekleme
Herhangi bir ayarı değiştirmeden önce sunucunuzun yapılandırmasının hızlı bir yedeğini aldığınızdan emin olun. Aşağıdaki komut bu amaç için çalışır:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Tamamlandığında devam etmeye hazırsınız.
Trafiği kontrol edin
Sunucunuzdaki trafiği izlemek, güvenliği optimize etmeyi ve ek stratejiler uygulamayı kolaylaştırır. Nginx'in bu amaç için özel olarak oluşturulmuş bir modülü vardır.
Durum sayfasını ayarla
Nginx genellikle "saplama durumu" (http_stub_status_module) adı verilen ve bu tür işlevlerin sunucu ortamına oldukça kolay bir şekilde entegre edilmesini sağlayan bir modülle birlikte gelir . İlk önce aşağıdaki komutu kullanarak test edin:
nginx -V
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Veya daha hızlı bulmak için aşağıdaki komutu kullanın:
nginx -V 2>&1 | grep -o with-http_stub_status_module
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Çıktınız yukarıdaki gibi görünüyorsa her şey yolunda demektir. Aksi takdirde, Nginx kurulumunuzu birlikte verilen modülle kurmanız veya yeniden derlemeniz gerekecektir.
Kontrol edebileceğiniz bir durum sayfası oluşturmak basittir ancak güvenliği korumak için erişimi minimuma (yalnızca bilgisayar) sınırlamanız da gerekir. /etc/nginx/nginx.conf konumunda bulunan sunucunun ana yapılandırma dosyasını açarak başlayın .
Modülü etkinleştirmek için açın ve “localhost”, “/status_page” ve “127.0.0.1” içindeki kendi bilgilerinizi değiştirerek aşağıdaki kodu “http direktifine” ekleyin .
server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
Not : Bu dosyayı değiştirmek için sudo ayrıcalıklarına ihtiyacınız olacak.
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Şimdi yapılandırmanızı test edin:
sudo nginx -t
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Her şey yolundaysa sunucuya bir yeniden yükleme sinyali gönderin:
sudo systemctl reload nginx
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Durum sayfanıza erişmek için, bir web tarayıcısında sunucu_adı konumunu ve ardından "/status_page" adresini ziyaret edin veya curl gibi bir komut satırı aracını kullanın. (Tarayıcı önbelleğiniz otomatik olarak güncellenmiyorsa bu kullanışlıdır). Örneklerdeki sayfaya erişmek için curl komutu aşağıda verilmiştir :
curl localhost/status_page
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Tarayıcıda yukarıdaki komut çıktısı aşağıdaki görüntüye benzer.
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Erişim günlüklerini kontrol edin
Yukarıda yapılandırılan durum sayfasını kontrol ederken olağandışı bir trafik fark ederseniz, sunucunun erişim günlüğünü kontrol etmek isteyebilirsiniz. Sunucu erişim günlüğü “/var/log/nginx/access.log” adresinde bulunabilir . Günlük, kullanılan HTTP yöntemlerini, erişim girişimlerinin tarih/saatini, kullanıcı aracısını ve erişilen sayfaları listeler.
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
Bağlantı sınırları
DDoS saldırılarını önlemek için denemeye değer birçok faydalı taktik arasında en basit ve en etkili olanlardan biri, gelen trafiğin hızını sınırlamaktır.
İdeal olarak, makul oranları korurken, kötü niyetli botların sunucunuzu aşırı doldurmasını önleyecek kadar erişimi sınırlamanız gerekir. Nginx'te bu limit_req_zone ve limit_req direktifleriyle yapılabilir . Aşağıdaki kod, sunucunuzun görüntüleyecek şekilde yapılandırıldığı konumdaki kullanım için bellek ve hız kısıtlamalarını ayarlar:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
“Bölge”, kullanıcı isteklerinin depolandığı bellek alanının adını ve kapasitesini (bu durumda Megabayt cinsinden) belirtir. “Oran”, Nginx'in saniyede kabul edeceği toplam istek sayısını belirler (bu örnekte 10 istek). Bu kodu bir kural olarak düşünün ve bu kuralın kullanımı aşağıdadır:
limit_req zone=speedbump burst=20;
Yukarıdaki kod aslında bir limit kuralını uygulamaktan biraz daha fazlasını yapar. Ayrıca, normalden biraz daha hızlı işleyen, hem kuralları hem de kuyruğu aşan, istemci için 503 hatasına neden olan meşru bağlantıları zarif bir şekilde işlemek için 20'ye kadar istekten oluşan küçük bir kuyruk ekler. Her iki yönerge de nginx.conf'ta şöyle görünür:
![Nginx ile DDoS saldırıları nasıl önlenir? Nginx ile DDoS saldırıları nasıl önlenir?]()
IP adreslerinin kara listesini oluşturun
Sunucunuzda DDoS saldırısını gerçekleştiren IP adresini alırsanız , onu kolayca kara listeye alabilir ve bu IP adresinden kaynaklanan tüm bağlantıları ortadan kaldırabilirsiniz.
Sunucu yönergenize aşağıdaki kodu ekleyin:
location / {
deny 123.123.123.0/28;
# ...
}
Belirli dosyalara yönelik istekleri engelle
DDoS saldırısı sunucudaki belirli dosyaları hedefliyorsa - örneğin WordPress'teki xmlrpc.php dosyası ( bu , çoğu WordPress sunucusunda yaygın olarak hedeflenen bir dosyadır), tüm gereklilikleri engelleyebilirsiniz. Bu kodu sunucu yönergenize ekleyin:
location /xmlrpc.php {
deny all;
}
Yukarıdaki süreci takip ettiğinizde çoğu DDoS saldırısını sınırlandırabileceksiniz. Uygulayabileceğiniz ek güvenlik seçenekleri için Nginx belgelerine göz atmayı unutmayın .
Umarım başarılısınızdır.