Sunucular, brute-force saldırılarına maruz kaldığında saldırganlar binlerce farklı kullanıcı adı ve şifre kombinasyonu deneyerek sisteme yetkisiz erişim sağlamaya çalışır. Bu tür saldırıları otomatik olarak tespit edip engellemek için Fail2Ban kullanabiliriz. Fail2Ban, hatalı giriş denemelerini izleyerek belirli bir eşik değere ulaşıldığında ilgili IP adresini otomatik olarak engelleyen güçlü bir güvenlik aracıdır.
1. Fail2Ban Nedir ve Nasıl Çalışır?
Fail2Ban, sistem günlüklerini (loglarını) izleyerek belirlenen hatalı giriş sayısını aşan IP adreslerini geçici veya kalıcı olarak yasaklayan bir güvenlik çözümüdür.
🔹 SSH, Apache, Nginx, Postfix, vsftpd gibi birçok servisle uyumludur.
🔹 Belli bir süre boyunca yanlış giriş yapmaya devam eden IP’leri otomatik olarak engeller.
🔹 Engellenen IP’leri belirlenen bir süre sonra otomatik olarak kaldırabilir.
Fail2Ban, brute-force saldırılarına karşı manuel IP engelleme işlemlerini otomatikleştirerek sunucunun güvenliğini artırır.
2. Fail2Ban Kurulumu
2.1. Fail2Ban Yükleme
Debian/Ubuntu için:
sudo apt update && sudo apt install fail2ban -y
CentOS/RHEL için:
sudo yum install epel-release -y
sudo yum install fail2ban -y
Kurulum tamamlandıktan sonra Fail2Ban servisini başlatın ve otomatik olarak çalışmasını sağlayın:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Kurulumun başarılı olup olmadığını kontrol etmek için:
sudo systemctl status fail2ban
3. Fail2Ban Temel Yapılandırması
Fail2Ban’in ana yapılandırma dosyaları /etc/fail2ban/ dizininde bulunur. Varsayılan yapılandırma /etc/fail2ban/jail.conf dosyasında bulunur, ancak doğrudan bu dosyayı düzenlemek yerine /etc/fail2ban/jail.local dosyasını kullanmamız önerilir.
Öncelikle, jail.local dosyasını oluşturup düzenleyelim:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Bu dosyada, aşağıdaki ana yapılandırma seçeneklerini değiştirebiliriz:
🔹 bantime: Engellenen IP’nin ne kadar süreyle yasaklanacağını belirler.
🔹 findtime: Belirtilen süre içinde kaç hatalı giriş denemesinin yapılacağını belirler.
🔹 maxretry: Belirlenen süre içinde kaç başarısız giriş denemesinin ardından IP’nin engelleneceğini belirler.
Örneğin, bir IP’nin 10 dakika boyunca (600 saniye) hatalı giriş denemeleri yapması halinde 1 saat boyunca (3600 saniye) engellenmesini sağlamak için:
bantime = 3600
findtime = 600
maxretry = 3
Yapılandırma dosyasını kaydedip çıkın ve Fail2Ban servisini yeniden başlatın:
sudo systemctl restart fail2ban
4. SSH İçin Fail2Ban Yapılandırması
Fail2Ban’i SSH brute-force saldırılarını önlemek için yapılandıralım.
sudo nano /etc/fail2ban/jail.local
Aşağıdaki ayarları bulun ve düzenleyin:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
bantime = 3600
findtime = 600
maxretry = 3
Bu ayarlar, bir IP adresinin 10 dakika içinde 3 kez hatalı giriş yapması halinde 1 saat boyunca engellenmesini sağlayacaktır.
Fail2Ban servisini yeniden başlatın:
sudo systemctl restart fail2ban
Engellenen IP’leri görüntülemek için:
sudo fail2ban-client status sshd
Engellenen bir IP’yi kaldırmak için:
sudo fail2ban-client set sshd unbanip 192.168.1.100
5. Fail2Ban ile Apache/Nginx Web Sunucusu Koruma
Fail2Ban, web sunucularını da brute-force ve kötü niyetli giriş denemelerine karşı koruyabilir. Apache ve Nginx için Fail2Ban’i yapılandırmak için aşağıdaki adımları izleyin.
5.1. Apache Güvenliği İçin Fail2Ban Kullanımı
Apache için Fail2Ban’i etkinleştirmek için aşağıdaki adımları takip edin:
sudo nano /etc/fail2ban/jail.local
Şu satırları ekleyin:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5
findtime = 600
bantime = 3600
Fail2Ban servisini yeniden başlatın:
sudo systemctl restart fail2ban
Apache’ye yönelik saldırıları görmek için:
sudo fail2ban-client status apache-auth
5.2. Nginx Güvenliği İçin Fail2Ban Kullanımı
Nginx kullanıcıları için Fail2Ban ile saldırıları önlemek için şu adımları izleyin:
sudo nano /etc/fail2ban/jail.local
Şu satırları ekleyin:
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 5
findtime = 600
bantime = 3600
Fail2Ban servisini yeniden başlatın:
sudo systemctl restart fail2ban
Engellenen IP’leri görmek için:
sudo fail2ban-client status nginx-http-auth
💡 Unutmayın: Fail2Ban’i düzenli olarak izlemek ve yapılandırmasını sisteminizin ihtiyaçlarına göre güncellemek, güvenliği artıracaktır!
Yorum gönder