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

stackor

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

Selam sistemciler! 🖥️ Bugün, özellikle yeni başlayan arkadaşlarımızın sıkça sorduğu ve aslında oldukça basit bir güvenlik önlemini ele alacağız: Nginx üzerinden belirli IP adreslerini veya tüm bir IP bloğunu engellemek. Fail2ban gibi araçlar harikadır ama bazen sadece "şu IP bir daha gelmesin" demek istersiniz. İşte o zaman doğrudan Nginx'in gücü devreye giriyor.

Neden Nginx ile IP Engelleriz?

UFW (Uncomplicated Firewall) sistem seviyesinde bir engelleme yapar ve bu genellikle tercih edilen yoldur. Ancak, Nginx seviyesinde engellemenin de bazı pratik avantajları var:
  • Hızlı ve Anlık: Değişiklik hemen aktif olur, sunucuyu yeniden başlatmaya gerek yok.
  • Esnek: Sadece belirli bir web sitesine (server bloğuna) veya tüm sunucuya erişimi engelleyebilirsiniz.
  • Loglama: Engellenen istekler Nginx erişim loglarında (access.log) net bir şekilde görülebilir.
  • Ek Kontrol: Sadece belirli URL'lere (/wp-admin, /phpmyadmin gibi) gelen istekleri engellemek için kullanılabilir.

Yöntem 1: Tekil IP Adresi Engelleme

Bu en yaygın yöntem. Engellemek istediğiniz IP adresini (örneğin, `203.0.113.10`) Nginx yapılandırma dosyanızdaki ilgili `server` bloğuna ekliyoruz.

Öncelikle, genellikle `/etc/nginx/sites-available/` dizininde bulunan sitenizin yapılandırma dosyasını bir metin editörüyle açalım. Ben nano kullanıyorum:

Bash:
sudo nano /etc/nginx/sites-available/siteniz.com

Dosyanın içinde, `server { ... }` bloğunun içine, genellikle `location / { ... }` bölümünün hemen üstüne aşağıdaki satırı ekleyin:

NGINX:
    deny 203.0.113.10;

Tam hali şöyle görünebilir:
NGINX:
server {
    listen 80;
    server_name siteniz.com www.siteniz.com;

    root /var/www/siteniz.com/html;
    index index.html index.htm index.nginx-debian.html;

    # IP ENGELİ BURADA
    deny 203.0.113.10;

    location / {
        try_files $uri $uri/ =404;
    }
}

Önemli Not: `deny` direktifi, eklediğiniz yere göre çalışır. Yukarıdaki gibi `server` bloğu seviyesine koyarsanız, o sunucu bloğundaki (yani web sitesindeki) tüm lokasyonlara erişimi engeller.

Yöntem 2: IP Bloklarını (CIDR) Engelleme

Bazen sadece bir IP değil, bir ülkeden veya bir servis sağlayıcıdan gelen tüm bir IP aralığını engellemek isteyebilirsiniz. Bunun için CIDR notasyonunu kullanıyoruz.

Örneğin, `203.0.113.0/24` bloğunu (203.0.113.1'den 203.0.113.254'e kadar) engellemek için:

NGINX:
    deny 203.0.113.0/24;

Yöntem 3: Belirli Bir URL'ye Erişimi IP'ye Göre Kısıtlama

Bu çok kullanışlı bir yöntem! Diyelim ki WordPress yönetim panelinize (`/wp-admin`) sadece sizin ofis IP'nizden erişilsin istiyorsunuz. Ofis IP'niz `198.51.100.50` olsun.

NGINX:
    location /wp-admin {
        allow 198.51.100.50; # Sadece bu IP erişebilir
        deny all;            # Yukarıdaki IP dışındaki HER ŞEY engellenir
    }

Mantık sırası önemli! Nginx kuralları yukarıdan aşağı okunur. Önce `allow` ile istisna tanımlar, sonra `deny all` ile geri kalan her şeyi engellersiniz.

Değişiklikleri Aktif Etmek ve Test Etmek

⚙️ Kuralları yazdıktan sonra, Nginx yapılandırmasında bir sözdizimi hatası olmadığını mutlaka test edin:

Bash:
sudo nginx -t

Eğer "syntax is ok" ve "test is successful" mesajlarını görürseniz, Nginx'i yeniden yükleyerek değişiklikleri aktif hale getirin:

Bash:
sudo systemctl reload nginx

Test: Engellediğiniz IP adresinden (eğer mümkünse) veya bir VPN üzerinden sitenize erişmeyi deneyin. 403 Forbidden hatası almalısınız. Ayrıca, Nginx erişim loglarını kontrol ederek engellemenin çalıştığını görebilirsiniz:

Bash:
sudo tail -f /var/log/nginx/access.log | grep 203.0.113.10

Önemli Uyarılar ve İpuçları
  • Kendi IP'nizi Engellemeyin! ☠️ Bu çok sık yapılan bir hatadır. Kuralı eklemeden önce mevcut genel IP adresinizi kontrol edin (`curl ifconfig.me` veya `ipinfo.io/ip`).
  • Bu yöntem, IP spoofing (sahteciliği) yapılan sofistike saldırılara karşı tek başına yeterli değildir. UFW gibi bir sistem güvenlik duvarı her zaman birincil korumanız olmalıdır. Bu, ek bir katman olarak düşünülmeli.
  • Çok fazla IP engellemek Nginx yapılandırma dosyanızı karışık hale getirebilir. Bu durumda, engellenen IP listesini ayrı bir dosyada (`/etc/nginx/blocked_ips.conf` gibi) tutup ana yapılandırma dosyanıza `include` direktifi ile eklemek daha temiz bir yöntemdir.

Umarım bu basit ama etkili yöntem, sunucu güvenlik sandığınıza yeni bir araç eklemenize yardımcı olur. Siz sunucunuzda IP engelleme için hangi yöntemleri tercih ediyorsunuz? Fail2ban kurallarınızda favori "jail"leriniz var mı? Yorumlarda deneyimlerinizi paylaşın! 👇
 

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