Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Ubuntu Sunucuda Nginx ile Basit ve Etkili IP Engelleme Rehberi 🛡️

devron

Üye
Katılım
14 Mart 2026
Mesajlar
11
Ubuntu Sunucuda Nginx ile Basit ve Etkili IP Engelleme Rehberi 🛡️

Selam sistemciler! 🖥️ Bugün terminalin tozunu alıp, sunucumuzu istenmeyen misafirlerden korumanın en temel ve etkili yöntemlerinden birini konuşacağız: Nginx ile IP engelleme. Özellikle brute force saldırıları, kötü niyetli tarama yapan botlar veya belirli bir bölgeden gelen ve sadece sıkıntı çıkaran trafiği durdurmak istediğinizde, bu yöntem tam bir cankurtaran olabilir. UFW veya iptables gibi sistem seviyesindeki güvenlik duvarları harika, ancak bazen sadece web trafiğini hedef alan, daha hızlı ve Nginx seviyesinde bir engelleme yapmak isteyebilirsiniz. Hadi başlayalım!

Neden Nginx Seviyesinde IP Engelleme?

Öncelikle, "Zaten güvenlik duvarım var, neden Nginx ile uğraşayım?" diye sorabilirsiniz. Haklısınız, ancak bu iki yöntem birbirini tamamlıyor:
  • Hız ve Basitlik: Nginx yapılandırmasında yapacağınız bir değişiklik, sadece web trafiğini etkiler ve genellikle anında devreye girer. Sistem güvenlik duvarını yeniden yapılandırmaya gerek kalmaz.
  • Esneklik: Belirli bir sunucu bloğu (virtual host) veya hatta belirli bir location (örneğin, `/wp-admin` veya `/phpmyadmin`) için IP engellemesi yapabilirsiniz. Bu, ince ayar yapma şansı verir.
  • Hızlı Müdahale: Canlı bir saldırı anında, config dosyasını düzenleyip Nginx'i yeniden yüklemek (restart değil, reload), çok hızlı bir çözüm sağlar.

Yöntem 1: Temel `deny` Direktifi ile Engelleme

Bu en basit yöntemdir. Nginx konfigürasyonunuzdaki (`/etc/nginx/sites-available/siteniz`) ilgili `server` veya `location` bloğuna aşağıdaki satırları ekleyebilirsiniz.

Tekil IP engelleme:
NGINX:
location / {
    deny 123.123.123.123;
    allow all;
    # ... diğer yönergeleriniz
}

Dikkat! `deny` ve `allow` kuralları sıralı işlenir. Yukarıdaki örnekte, `123.123.123.123` IP'si hariç tüm IP'lere izin verilir.

IP Aralığı (CIDR) engelleme:
NGINX:
location /wp-admin {
    deny 123.123.123.0/24; # 123.123.123.1'den 123.123.123.254'e kadar tüm IP'leri engeller
    deny 2001:db8::/32; # IPv6 engelleme örneği
    # ... bu location için auth vs. kuralları
}

Yöntem 2: Harici Liste Dosyası ile Merkezi Yönetim (Önerilen)

Eğer engellemek istediğiniz çok sayıda IP varsa veya bu listeyi sık sık güncelliyorsanız, harici bir dosya kullanmak çok daha temiz ve yönetilebilir bir yöntemdir. ⚙️

1. Öncelikle, engellenen IP'lerin listesini tutacağımız bir dosya oluşturalım:
Bash:
sudo nano /etc/nginx/blocked_ips.conf

2. Bu dosyanın içine, her satıra bir tane olacak şekilde `deny` direktiflerimizi yazalım:
NGINX:
deny 111.222.111.222;
deny 333.444.555.0/24;
deny 666.777.888.999;
# Yorum satırı ekleyebilirsiniz: # Spam bot - 2023-10-27

3. Şimdi, Nginx sitenizin yapılandırma dosyasında (`/etc/nginx/sites-available/siteniz`), engellemeyi uygulamak istediğiniz `server` bloğunun içine bu harici dosyayı dahil edelim:
NGINX:
server {
    listen 80;
    server_name sitem.com;

    # Engellenen IP'leri dahil et
    include /etc/nginx/blocked_ips.conf;

    # ... diğer yönergeleriniz (root, index, location vs.)
}

Harika tarafı nedir? Yeni bir IP engellemek istediğinizde, sadece `blocked_ips.conf` dosyasını düzenleyip, Nginx'i yeniden yüklemeniz yeterli. Tüm site konfigürasyon dosyalarını karıştırmanıza gerek kalmaz!
Bash:
sudo nginx -t # Konfigürasyon testi (ÇOK ÖNEMLİ!)
sudo systemctl reload nginx # Değişiklikleri uygula

Yöntem 3: GeoIP Modülü ile Ülke Bazlı Engelleme

Bu biraz daha gelişmiş bir yöntemdir ve genellikle ek modül kurulumu gerektirir (`ngx_http_geoip_module`). Eğer sunucunuzda bu modül yüklüyse, belirli bir ülkeden gelen tüm trafiği engelleyebilirsiniz. Bu, saldırı trafiğinin büyük kısmının belirli coğrafyalardan geldiği durumlarda inanılmaz etkilidir. 🌐

Kurulum ve konfigürasyonu biraz daha uzun olduğu için, bu rehberde sadece konsepti anlatalım. Temel olarak:
1. MaxMind GeoIP veritabanlarını indirirsiniz.
2. Nginx konfigürasyonunda bir `geo` bloğu tanımlarsınız.
3. `$geoip_country_code` değişkenine göre kurallarınızı yazarsınız.

Önemli Uyarılar ve En İyi Uygulamalar
  • Kendi IP'nizi Asla Engellemeyin! 🚫 Dosyaya IP eklerken iki kere kontrol edin. Eğer kendi IP'nizi engellerseniz, sunucunuza erişemeyebilirsiniz. Her zaman bir `allow` kuralı ile kendi IP'nizi güvenceye almayı düşünün.
  • Nginx'i Test Etmeden Reload/restart Etmeyin! `sudo nginx -t` komutu, yazdığınız konfigürasyonda sözdizimi hatası olup olmadığını kontrol eder. Bu adımı atlamak, Nginx servisinin çökmesine ve sitenizin offline olmasına neden olabilir.
  • Fail2ban ile Güçlendirin: Nginx loglarını (`/var/log/nginx/access.log` ve `error.log`) izleyen Fail2ban, belirli bir pattern (örneğin, 1 dakikada 40 tane 404 hatası) yakaladığında, otomatik olarak bu IP'yi `blocked_ips.conf` dosyanıza ekleyip Nginx'i yeniden yükleyebilir. Bu, tam otomatik bir koruma sağlar! 🛡️
  • IPv6'yı Unutmayın: Saldırganlar IPv6 adreslerini de kullanabilir. Engelleme listenize IPv6 adreslerini de eklemeyi unutmayın.

Umarım bu rehber, sunucunuzu istenmeyen trafikten korumanın ne kadar basit olabileceğini göstermiştir. Her şeyi bir anda yapmak zorunda değilsiniz; küçük adımlarla başlayın.

Peki ya siz? Sunucu güvenliğinizde IP engelleme için hangi yöntemleri veya araçları kullanıyorsunuz? Fail2ban ile Nginx'i entegre etmeyi deneyen var mı? Deneyimlerinizi yorumlarda paylaşın, birlikte öğrenelim! 💬
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri