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 🛡️

webnix

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

Selam sistemciler! 🖥️ Bugün, özellikle küçük ölçekli saldırılar, kötü niyetli tarama botları veya belirli bir bölgeden gelen istenmeyen trafiği durdurmak isteyenler için, Nginx'in sunduğu hafif ama son derece etkili bir güvenlik önlemini konuşacağız: IP Engelleme.

cPanel veya Plesk gibi panellerde bu işlem birkaç tıklamayla yapılabilir, ancak komut satırının gücü ve esnekliği bambaşka. Nginx'in `deny` direktifini kullanarak, sunucu seviyesinde, web uygulamanıza ulaşmadan trafiği kesebilirsiniz. Hadi terminalin tozunu alıp başlayalım! ⚙️

Neden Nginx ile IP Engelleme?

* Hafif ve Hızlı: İstekler uygulama katmanına (PHP, Python vs.) ulaşmadan, web sunucusu seviyesinde engellenir. Bu, sunucu kaynaklarınızı korur.
* Basit Yapılandırma: Sadece birkaç satır konfigürasyon değişikliği yeterli.
* Anında Etki: Nginx'i yeniden yüklediğiniz anda kurallar aktif olur.
* Esneklik: Tekil IP'ler, IP aralıkları (CIDR) veya tüm ülkelerin IP bloklarını engelleyebilirsiniz.

Yöntem 1: Nginx Site Konfigürasyonu İçinde Engelleme (Basit ve Hızlı)

Bu yöntem, belirli bir web sitesi (server bloğu) için geçerlidir. Engellemek istediğiniz sitenin Nginx yapılandırma dosyasını (genellikle `/etc/nginx/sites-available/` dizininde) düzenleyeceğiz.

1. Öncelikle, yapılandırma dosyasını bir metin editörüyle açalım (örnek site: `benimsitem`).
Bash:
sudo nano /etc/nginx/sites-available/benimsitem

2. `server { ... }` bloğunun içinde, genellikle `location /` bölümünden önce, engelleme kurallarınızı yazın. `deny` komutunu kullanacağız.
NGINX:
server {
    listen 80;
    server_name benimsitem.com www.benimsitem.com;

    # IP ENGEL LİSTESİ BURADA
    deny 123.456.789.123; # Tek bir kötü IP'yi engelle
    deny 111.222.0.0/16;  # 111.222.0.0 - 111.222.255.255 aralığını engelle (CIDR notasyonu)
    allow all;            # Yukarıda listelenmeyen TÜM IP'lere izin ver

    root /var/www/benimsitem;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
    # ... diğer ayarlar
}

Önemli Not: `allow all;` satırı, engel listesinden sonra gelmelidir. Nginx kuralları yukarıdan aşağı okunur. Eğer `allow all;` üstte olursa, alttaki `deny` kurallarının bir anlamı kalmaz.

3. Değişikliği kaydedip çıktıktan sonra, Nginx konfigürasyonunun sözdizimini kontrol edelim. Bu çok önemli bir adım! 🐧
Bash:
sudo nginx -t
Eğer "syntax is ok" ve "test is successful" mesajlarını görürseniz, devam edebilirsiniz.

4. Son olarak, Nginx'i yeniden başlatalım veya konfigürasyonu yeniden yükleyelim.
Bash:
sudo systemctl reload nginx

Artık belirttiğiniz IP adresleri siteye erişmeye çalıştığında, Nginx onlara 403 Forbidden hatası döndürecek.

Yöntem 2: Harici Bir Engelleme Dosyası Kullanmak (Daha Düzenli)

Eğer engelleyeceğiniz IP listesi uzunsa veya bu listeyi birden fazla site konfigürasyonunda kullanmak istiyorsanız, harici bir dosya oluşturmak daha temiz bir yöntemdir.

1. İlk olarak, IP engelleme kurallarınızı içeren bir dosya oluşturalım.
Bash:
sudo nano /etc/nginx/conf.d/blocked_ips.conf

2. Bu dosyanın içine sadece `deny` komutlarınızı yazın.
NGINX:
# /etc/nginx/conf.d/blocked_ips.conf
# Kötü niyetli IP'ler ve tarama botları
deny 123.456.789.123;
deny 98.76.54.0/24;
deny 2001:db8::/32; # IPv6 adresini de engelleyebilirsiniz!
# ... diğer IP'ler

3. Şimdi, bu harici dosyayı site konfigürasyonunuzda `include` direktifi ile çağıralım.
NGINX:
server {
    listen 80;
    server_name benimsitem.com;

    # HARİCİ ENGEL LİSTESİ DOSYASINI DAHİL ET
    include /etc/nginx/conf.d/blocked_ips.conf;

    allow all; # Engel listesinde olmayan herkese izin ver

    root /var/www/benimsitem;
    # ... diğer ayarlar
}

4. Her zamanki gibi, sözdizimini test edip Nginx'i yeniden yükleyin.
Bash:
sudo nginx -t
sudo systemctl reload nginx

Bu yöntemle, merkezi bir `blocked_ips.conf` dosyasını güncelleyerek, bu dosyayı `include` eden tüm web sitelerinizi aynı anda korumuş olursunuz. Çok pratik!

Dikkat Edilmesi Gerekenler ve Uyarılar

  • Kendi IP'nizi Asla Engellemeyin! Eğer kullandığınız IP dinamikse (DHCP) veya engellediğiniz bir ağ aralığında kalıyorsanız, kendinizi kilitleyebilirsiniz. Kuralları eklerken iki kere düşünün.
  • Bu yöntem, büyük ölçekli DDoS saldırılarına karşı tek başına yeterli değildir. Bu durumda donanım temelli firewall'lar, bulut tabanlı DDoS koruma hizmetleri (Cloudflare, AWS Shield) veya `iptables`/`nftables` gibi daha düşük seviyeli araçlar düşünülmelidir.
  • Kuralları ekledikten sonra mutlaka `sudo nginx -t` ile test edin. Hatalı bir konfigürasyon, Nginx servisinin çökmesine neden olabilir.
  • Engellediğiniz IP'leri ve nedenlerini bir yerde not alın. Zamanla liste büyüyebilir ve hangi kuralın ne işe yaradığını unutabilirsiniz.

Son Söz

Nginx ile IP engelleme, sistem yöneticisinin güvenlik aracı kutusundaki en temel ve kullanışlı aletlerden biridir]. Özellikle belirli bir saldırganı veya zararlı bir tarama servisini hızlıca durdurmak için birebirdir. 🛡️

Unutmayın, güvenlik katmanlı bir yaklaşımdır. Bu yöntemi, fail2ban (SSH koruması için), güncel yazılımlar ve güçlü parolalar gibi diğer önlemlerle birlikte kullanın.

Peki ya siz? IP engelleme için favori yönteminiz veya başınızdan geçen ilginç bir "kendini kilitleme" hikayeniz var mı? 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