Blogchevron_rightSunucu Yönetimichevron_rightNginx Web Sunucusunda IP Tabanlı Erişim Kısıtlama Nedir?

Nginx Web Sunucusunda IP Tabanlı Erişim Kısıtlama Nedir?

S
Serversium
calendar_today28 Temmuz 2026
schedule5 dk okuma
Nginx Web Sunucusunda IP Tabanlı Erişim Kısıtlama Nedir?

Nginx Web Sunucusunda IP Tabanlı Erişim Kısıtlama Nedir?

Nginx web sunucusunda IP tabanlı erişim kısıtlama, sunucunuza gelen isteklerin belirli IP adreslerinden veya IP aralıklarından gelenlere izin verilmesini veya bunların engellenmesini sağlayan güvenlik mekanizmasıdır. Bu yöntem, web güvenliği stratejilerinin temel taşlarından birini oluşturur ve sunucularınıza yetkisiz erişimi önlemek için etkili bir koruma katmanı sağlar.

IP tabanlı erişim kontrolü, özellikle admin panelleri, geliştirme ortamları ve hassas web uygulamaları için kritik öneme sahiptir. Araştırmalara göre, web uygulamalarına yönelik saldırıların %95'ten fazlası belirli IP adreslerinden kaynaklanmaktadır (2023 Web Security Statistics Report).

IP Tabanlı Erişim Kısıtlama Nasıl Çalışır?

Nginx, allow ve deny direktifleri aracılığıyla IP erişim kontrolü uygular. Bu kurallar, sunucu blokları, konum blokları veya belirli dosyalar için tanımlanabilir. Erişim kontrol listeleri (ACL) yukarıdan aşağıya doğru işlenir ve ilk eşleşen kural uygulanır.

Kuralların sıralaması son derece önemlidir; çünkü Nginx, bir isteği değerlendirirken kuralları sırayla tarar ve ilk uygun kuralı bulduğunda işlemi sonlandırır. Bu nedenle, daha spesifik kuralların genel kurallardan önce tanımlanması gerekir.

Temel Sözdizimi ve Yapı

Nginx IP erişim kontrolü için temel sözdizimi şu şekildedir:

location / {
    allow 192.168.1.0/24;
    deny all;
}

Bu yapı, 192.168.1.0/24 ağındaki tüm IP adreslerine erişim izni verirken, diğer tüm IP'leri reddeder. deny all kuralı, tanımlanmayan tüm IP adreslerini engellemek için kullanılır.

Nginx IP Erişim Kontrolü Yapılandırma Yöntemleri

1. Sunucu Düzeyinde IP Kontrolü

Sunucu düzeyinde IP kontrolü, tüm virtual host için geçerli olan kuralları tanımlamanıza olanak sağlar. Bu yöntem, genel güvenlik politikaları uygulamak için idealdir.

server {
    listen 80;
    server_name example.com;
    
    # Tüm istekleri engelle, sadece belirli IP'lere izin ver
    deny 203.0.113.0/24;
    allow 192.168.1.0/16;
    allow 10.0.0.0/8;
    deny all;
    
    root /var/www/html;
    index index.html;
}

2. Konum Bazlı IP Kontrolü

Belirli URL yolları için farklı IP kuralları tanımlanabilir. Örneğin, admin paneli için sıkı IP kısıtlamaları uygulanırken, genel sayfalar daha esnek tutulabilir.

location /admin/ {
    # Sadece yerel ağdan erişime izin ver
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    deny all;
    
    # Proxy ayarları
    proxy_pass http://localhost:8080;
}

location /api/ {
    # Belirli IP aralıklarına izin ver
    allow 203.0.113.10;
    allow 198.51.100.0/24;
    deny all;
}

3. Belirli Dosyalar için IP Kontrolü

wp-admin, phpMyAdmin veya özel yönetim arayüzleri gibi hassas dizinlere erişimi sınırlamak için konum blokları kullanılır.

location ~ ^/(wp-admin|wp-login\.php|admin|phpmyadmin) {
    allow 192.168.1.0/24;
    deny all;
    
    # Kimlik doğrulama ile birleştir
    auth_basic "Yönetici Alanı";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

IP Karşılaştırma Tablosu: IPv4 vs IPv6

Özellik IPv4 Desteği IPv6 Desteği
Sözdizimi allow 192.168.1.1; allow 2001:db8::1;
Alt ağ maskesi /24, /16, /8 /64, /48, /32
Aralık belirtme 192.168.1.0/24 2001:db8::/32
Performans Optimize edilmiş Standart

nginx_http_geo_module ile Gelişmiş IP Kontrolü

Nginx'in geo modülü, IP adreslerine göre koşullu yönlendirme yapmanızı sağlar. Bu modül, ülkeler, ISP'ler veya özel IP grupları için farklı kurallar tanımlamak için kullanılır.

geo $deny_access {
    default 1;
    
    # İzin verilen ağlar
    192.168.0.0/16 0;
    10.0.0.0/8 0;
    172.16.0.0/12 0;
    
    # Engellenecek spesifik IP'ler
    203.0.113.50 1;
    198.51.100.100 1;
}

server {
    if ($deny_access) {
        return 403;
    }
}

Bu yapı, karmaşık IP yönetimi senaryolarını basit ve okunabilir bir şekilde yapılandırmanıza olanak tanır. Yüksek erişilebilirlik gerektiren sistemlerde bu tür modüller kritik rol oynar.

GeoIP Modülü ile Ülke Bazlı Engelleme

MaxMind GeoIP veritabanı kullanılarak ülke bazlı erişim kontrolü uygulanabilir. Bu özellik, coğrafi kısıtlamalar gerektiren uygulamalar için kullanışlıdır.

# GeoIP modülü yüklü olmalı
load_module /usr/lib/nginx/modules/ngx_http_geoip_module.so;

http {
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    
    map $geoip_country_code $allowed_country {
        default no;
        TR yes;  # Türkiye
        US yes;  # Amerika
        DE yes;  # Almanya
    }
    
    server {
        if ($allowed_country = no) {
            return 403;
        }
    }
}

Güvenlik En İyi Uygulamaları

IP Beyaz Listesi Oluşturma Stratejisi

En güvenli yaklaşım, varsayılan olarak tüm erişimi engellemek ve yalnızca bilinen güvenilir IP adreslerine izin vermektir. Bu "beyaz liste" yaklaşımı, saldırı yüzeyini minimize eder.

  1. Tanımla: Erişim izni verilecek tüm IP adreslerini ve ağları listele
  2. Kategorize et: IP'leri kullanım amacına göre grupla (admin, API, kullanıcı)
  3. Uygula: Her grup için ayrı location blokları oluştur
  4. Test et: Yapılandırmayı test et ve doğrula
  5. İzle: Erişim loglarını düzenli olarak incele

Yaygın Yapılandırma Hataları

IP erişim kontrolü yapılandırırken kaçınılması gereken hatalar:

  • Kural sıralaması hatası: Genel kuralların spesifik kurallardan önce gelmesi
  • Eksik deny all: Beyaz liste sonunda mutlaka "deny all" eklenmeli
  • Yanlış alt ağ maskesi: CIDR notation'ın doğru kullanılması önemli
  • IPv6 unutulması: IPv4 ve IPv6 için ayrı kurallar gerekebilir

Fail2Ban ile Entegrasyon

Fail2Ban, Nginx loglarını izleyerek şüpheli aktiviteleri tespit eder ve saldırgan IP'leri otomatik olarak engeller. Bu entegrasyon, proaktif güvenlik sağlar.

# Fail2Ban jail.local yapılandırması
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 3600

[nginx-noscript]
enabled = true
port = http,https
filter = nginx-noscript
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 7200

Bu yapılandırma, brute force saldırılarına karşı otomatik koruma sağlar. Port knocking gibi ek güvenlik katmanları ile birlikte kullanılabilir.

Performans Etkisi ve Optimizasyon

IP erişim kontrolü, Nginx'in istek işleme sürecine minimal yük ekler. Ancak büyük IP listeleri veya karmaşık geo kuralları performansı etkileyebilir.

Performans İpuçları

  1. IP'leri sırala: En sık eşleşen IP'leri listenin başına koy
  2. Alt ağ kullan: Bireysel IP'ler yerine alt ağlar tercih et
  3. Önbellek kullan: GeoIP veritabanını düzenli güncelle
  4. Yerleşik değişkenler: map direktifi ile ön işlem yap

Yaygın Kullanım Senaryoları

1. Geliştirme Ortamı Koruması

location / {
    # Sadece yerel ağdan erişime izin ver
    allow 192.168.0.0/16;
    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    deny all;
}

2. API Endpoint Koruması

location /api/v1/ {
    # Rate limiting ile birleştir
    limit_req zone=api_limit burst=20 nodelay;
    
    # Sadece mobil uygulama sunucularına izin ver
    allow 203.0.113.0/24;
    deny all;
}

3. Yönetim Paneli Koruması

Docker Compose ortamlarında çalışan yönetim panelleri için ek güvenlik katmanları önerilir.

location /wp-admin/ {
    allow 192.168.1.0/24;
    deny all;
    
    # HTTP Basic Auth ekle
    auth_basic "WordPress Admin";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

location ~ ^/wp-admin/login.php$ {
    allow 192.168.1.0/24;
    deny all;
}

Test ve Doğrulama

Yapılandırma Testi

# Sözdizimi kontrolü
nginx -t

# Belirli bir IP'den erişim simülasyonu
curl -H "X-Forwarded-For: 192.168.1.100" http://localhost/

# Engellenen IP'den erişim testi
curl -H "X-Forwarded-For: 203.0.113.50" http://localhost/
# 403 Forbidden yanıtı beklenir

Log İzleme

Erişim ve hata logları, IP kurallarının doğru çalışıp çalışmadığını doğrulamak için kritik öneme sahiptir.

# Erişim loglarını izle
tail -f /var/log/nginx/access.log | grep -E '(denied|allowed)'

# Engellenen istekleri filtrele
grep "403 " /var/log/nginx/error.log

Sonuç

Nginx IP tabanlı erişim kısıtlama, web sunucusu güvenliğinin temel bileşenlerinden biridir. Doğru yapılandırıldığında, yetkisiz erişimi etkili bir şekilde engeller ve sunucularınızı kötü niyetli isteklerden korur.

Bu makalede ele alınan yöntemler, basit IP beyaz listelerinden gelişmiş geo tabanlı kontrollere kadar geniş bir yelpazeyi kapsar. Sunucu izleme araçları ile birleştirildiğinde, kapsamlı bir güvenlik altyapısı oluşturulabilir.

Unutmayın: IP tabanlı erişim kontrolü tek başına yeterli değildir. Güçlü kimlik

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward