Fail2Ban Kullanımı

Fail2Ban Kullanımı

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!