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`).
2. `server { ... }` bloğunun içinde, genellikle `location /` bölümünden önce, engelleme kurallarınızı yazın. `deny` komutunu kullanacağız.
Ö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!
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.
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.
2. Bu dosyanın içine sadece `deny` komutlarınızı yazın.
3. Şimdi, bu harici dosyayı site konfigürasyonunuzda `include` direktifi ile çağıralım.
4. Her zamanki gibi, sözdizimini test edip Nginx'i yeniden yükleyin.
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
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!
Selam sistemciler!
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
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!