Nginx brute force engelleme, kötü niyetli kişilerin kullanıcı adı ve şifre kombinasyonlarını deneme yanılma yoluyla ele geçirmeye çalıştığı saldırılara karşı alınan etkili bir güvenlik önlemidir. Özellikle sunucu yönetimi panelleri gibi hassas giriş noktaları hedef alınır. Plesk Panel kullanarak Ubuntu işletim sistemine sahip bir sunucuda Nginx yapılandırmasıyla bu tür saldırılara karşı etkin bir koruma sağlanabilir. Bu sayede makalemizde, Nginx brute force engelleme işleminin nasıl yapılacağı en ince detayına kadar, adım adım anlatılacaktır.
Nginx Brute Force Engelleme Gereklidir?
Brute force saldırıları sadece güvenliği tehdit etmekle kalmaz, aynı zamanda sunucu kaynaklarını da tüketir. Binlerce deneme yanılma girişimi, sunucunun işlemci ve bellek kaynaklarını ciddi ölçüde tüketebilir. Bu nedenle, brute force saldırılarını erkenden tespit edip engellemek, Nginx ile DDoS engelleme kadar hem güvenlik hem de performans açısından hayati önem taşır.
Nginx Brute Force Engelleme Yöntemleri
Nginx, özellikle ters proxy işleviyle birlikte, brute force saldırılarını tespit etmek ve engellemek için güçlü bir yapılandırma sunar. Aşağıda adım adım, Nginx kullanarak brute force saldırılarının nasıl engellenebileceği detaylı olarak anlatılacaktır.
1. Ön Koşullar
Ubuntu işletim sistemi ve Plesk Panel yüklü bir sunucuya sahip olduğunuzu ve Nginx’in ters proxy olarak yapılandırıldığını varsayıyoruz. Plesk Panel, genellikle varsayılan olarak Nginx ve Apache‘yi birlikte kullanır. Bu yapılandırmanın üzerine brute force saldırılarını engelleyecek ek güvenlik adımları uygulayacağız.
Gerekli Paketlerin Yüklenmesi
Brute force saldırılarına karşı koruma sağlamak için fail2ban gibi bir güvenlik aracı kullanacağız. Fail2ban, belirli bir süre içinde çok fazla başarısız giriş denemesi yapan IP adreslerini geçici olarak yasaklayan bir hizmettir. Ayrıca, Nginx ile entegrasyonu sağlar.
sudo apt update
sudo apt install fail2ban
2. Nginx Loglarını Kullanan Bir Fail2Ban Filtresi Oluşturma
Fail2ban, log dosyalarını izleyerek belirli saldırı modellerini tespit eder. Nginx’in logları, başarısız giriş denemelerini belirlemek için kullanılabilir. Bu sayede ilk adım olarak, Nginx loglarını izleyen bir fail2ban filtresi oluşturacağız.
Fail2ban İçin Nginx Brute Force Filtresi Oluşturma
/etc/fail2ban/filter.d/nginx-auth.conf dosyasını oluşturun:
sudo nano /etc/fail2ban/filter.d/nginx-auth.conf
Bu dosyanın içine aşağıdaki kuralları ekleyin. Bu kurallar, Nginx loglarında çok fazla başarısız giriş denemesi olduğunda saldırganın IP adresini yakalar.
[Definition]failregex = ^<HOST> -.* "POST /wp-login.php HTTP.*" 401ignoreregex =
Bu örnekte, WordPress sistemine ait wp-login.php dosyasına yapılan başarısız giriş denemelerini yakalayarak brute force saldırısını engellemek hedeflenmiştir. Ancak, Plesk Panel’in giriş URL’sine göre bu kuralı özelleştirebilirsiniz.
3. Fail2ban İçin Jailer (Hapishaneler) Oluşturma
Fail2ban, “jail” adı verilen yapılandırmalarla çalışır. Bir jail, belirli bir hizmet veya dosya için belirlenen kurallara dayanarak belirli bir saldırıyı engeller. Bu sayede Fail2ban yapılandırmasına Nginx için bir jail ekleyeceğiz.
Fail2ban İçin Nginx Jail’i Yapılandırma
/etc/fail2ban/jail.local dosyasını açın:
sudo nano /etc/fail2ban/jail.local
Aşağıdaki satırları dosyaya ekleyin:
[nginx-http-auth]
enabled = true
filter = nginx-auth
action = iptables[name=HTTP, port=http, protocol=tcp]
logpath = /var/log/nginx/error.log
bantime = 3600
findtime = 600
maxretry = 3
Bu jail şu şekilde çalışır:
enabled = true: Bu jail aktif hale getirilir.filter = nginx-auth: Daha önce oluşturduğumuz filtre kullanılır.logpath = /var/log/nginx/error.log: Nginx log dosyaları izlenir.bantime = 3600: Saldırganın IP’si bir saat boyunca engellenir.findtime = 600: On dakika içinde üç başarısız giriş denemesi yapılması durumunda engelleme gerçekleşir.maxretry = 3: En fazla üç başarısız denemeye izin verilir.
4. Plesk Panel İçin Ek Koruma Adımları
Plesk Panel, yönetim arayüzü olduğu için brute force saldırılarına karşı özel olarak korunmalıdır. Fail2ban’ın Plesk Panel ile entegre çalışan kendi güvenlik modülleri vardır. Ancak, Nginx ile ek koruma sağlayabiliriz.
Plesk Panel İçin Rate Limiting
Nginx üzerinden Plesk Panel girişine yapılan talepleri sınırlayarak brute force saldırılarını engelleyebilirsiniz. Ayrıca aşağıdaki örnekte, Plesk Panel’e yapılacak talepler belirli bir hızda sınırlanacaktır.
Nginx yapılandırma dosyasını açın:
sudo nano /etc/nginx/nginx.conf
Aşağıdaki satırları dosyanın http bloğuna ekleyin:
http {
limit_req_zone $binary_remote_addr zone=ple_sk_zone:10m rate=1r/s;
server {
location /plesk/ {
limit_req zone=ple_sk_zone burst=5 nodelay;
proxy_pass https://plesk-panel-url;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
Bu ayar, Plesk Panel’e yapılacak istekleri saniyede 1 ile sınırlayacak ve beş istekten fazlasını engelleyecektir. Bu sayede, bir saldırganın çok sayıda giriş denemesi yapması engellenir.
5. IP Adreslerini Beyaz Listeye Alma
Ayrıca güvenilir IP adreslerinin yasaklanmasını istemeyebilirsiniz. Fail2ban, belirli IP adreslerini beyaz listeye almanıza olanak tanır. Beyaz listeye alınan IP’ler hiçbir zaman yasaklanmaz.
Beyaz listeye almak için /etc/fail2ban/jail.local dosyasını açın ve şu satırları ekleyin:
ignoreip = 127.0.0.1/8 192.168.1.100
Bu örnekte, localhost ve 192.168.1.100 IP adresi beyaz listeye alınmıştır. Bu IP adreslerinden gelen talepler hiçbir zaman yasaklanmayacaktır.
6. Fail2Ban Hizmetini Başlatma ve Test Etme
Tüm yapılandırmaları tamamladıktan sonra Fail2ban servisini başlatmamız gerekiyor:
sudo systemctl restart fail2bansudo systemctl enable fail2ban
Fail2ban’ın Nginx loglarını izleyerek brute force saldırılarını engelleyip engellemediğini kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
sudo fail2ban-client status nginx-http-auth
Bu komut, Nginx için yapılandırılmış jalin aktif olup olmadığını ve hangi IP adreslerinin yasaklandığını gösterir.
7. Nginx Loglarıyla İlgili Olası Hataların Giderilmesi
Bazı durumlarda, Fail2ban’ın doğru şekilde çalışabilmesi için Nginx log formatında küçük değişiklikler yapmanız gerekebilir. Bunun için Nginx log formatınızı şu şekilde ayarlayabilirsiniz:
Nginx yapılandırma dosyasını açın:
sudo nano /etc/nginx/nginx.conf
Aşağıdaki gibi bir log formatı ekleyin:
log_format custom_format '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
Bu, Fail2ban’ın Nginx loglarında brute force saldırılarını daha kolay tespit etmesine yardımcı olur.
8. Nginx Brute Force Engelleme İçin Son Adımlar
Fail2ban ve Nginx yapılandırmasını tamamladıktan sonra sunucunuz brute force saldırılarına karşı önemli ölçüde daha güvenli hale gelecektir. Ancak düzenli log takibi ve yapılandırma denetimi yapmanız gerekmektedir. Bu sayede Fail2ban’ın yasakladığı IP adreslerini sürekli izleyerek, sunucunuzun saldırılara nasıl yanıt verdiğini görebilirsiniz.
Bu makalede, “nginx brute force engelleme” işleminin detaylı bir kılavuzunu sunduk. Bu sayede Ubuntu işletim sistemi ve Plesk Panel kurulu sunucularda brute force saldırılarını etkili bir şekilde engellemek için Nginx ve Fail2ban yapılandırması adım adım ele alındı. Rate limiting, fail2ban jails ve güvenlik logları ile sunucunuzun güvenliğini artırabilirsiniz. Ayrıca unutulmaması gereken bir konu var, brute force saldırıları, sunuculara yönelik en yaygın tehditlerden biridir, ancak doğru araç ve yapılandırmalarla bu saldırılarla başa çıkmak mümkündür.
