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 PanelAMP 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.
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 engellemeAMP kadar hem güvenlik hem de performans açısından hayati önem taşır.
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.
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 ApacheAMP‘yi birlikte kullanır. Bu yapılandırmanın üzerine brute force saldırılarını engelleyecek ek güvenlik adımları uygulayacağız.
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
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.
/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, WordPressAMP 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.
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.
/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.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.
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.
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.
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.
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.
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.