SSH portun açık olduğu sürece brute force saldırıları altındasın. Fail2Ban, başarısız giriş denemelerini izleyen ve belirli sayıda deneme sonrası saldırganın IP'sini otomatik olarak engelleyen güçlü bir güvenlik aracıdır. Bu rehberde Fail2Ban kurulumunu, SSH korumasını ve özel kurallar oluşturmayı öğreneceksin.
Fail2Ban Nedir?
Fail2Ban, log dosyalarını izleyerek şüpheli davranışları tespit eder ve iptables/nftables kurallarıyla saldırganın IP'sini belirli süreliğine engeller.
- Otomatik IP engelleme: Başarısız giriş denemelerini sayar
- Çoklu servis desteği: SSH, Apache, Nginx, MySQL ve daha fazlası
- Esnek yapılandırma: Ban süresi, deneme sayısı özgürce ayarlanabilir
- E-posta bildirim: IP engellendiğinde bildirim alabilirsin
Adım 1: Fail2Ban Kurulumu
# Paket listesini güncelle ve kur
sudo apt update
sudo apt install fail2ban
# Servisi başlat ve otomatik başlatmayı aktifleştir
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Durum kontrolü
sudo systemctl status fail2ban
Adım 2: Yapılandırma
Ana yapılandırma dosyasını doğrudan düzenlemek yerine jail.local dosyası oluşturarak özelleştirmeler yapmalısın:
# Yerel yapılandırma dosyası oluştur
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Düzenle
sudo nano /etc/fail2ban/jail.local
Genel Ayarlar
[DEFAULT]
# Ban süresi (saniye) - 1 saat
bantime = 3600
# Kaç saniye içinde deneme yapılırsa
findtime = 600
# Kaç başarısız denemeden sonra ban
maxretry = 3
# Kendi IP'ni whitelist'e ekle (engellenmemesi için)
ignoreip = 127.0.0.1/8 ::1 SENIN-IP-ADRESIN
# Ban eylemi - iptables ile engelle
banaction = iptables-multiport
# E-posta bildirimi (opsiyonel)
# destemail = admin@orneksite.com
# action = %(action_mwl)s
Adım 3: SSH Koruması
[sshd]
enabled = true
port = ssh
# Farklı SSH portu kullanıyorsan:
# port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
Adım 4: Web Sunucu Koruması
Nginx Rate Limit:
[nginx-limit-req]
enabled = true
port = http,https
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 600
[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 2
bantime = 86400
Apache Auth:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/*error.log
maxretry = 3
bantime = 3600
💡 Fail2Ban + DDoS Koruması = Tam Güvenlik
Fail2Ban brute force saldırılarını engeller ancak volumetrik DDoS saldırılarına karşı yeterli değildir. HazalHost VDS sunucularda L3/L4/L7 DDoS koruması varsayılan olarak gelir.
Adım 5: Fail2Ban Yönetimi
# Servisi yeniden başlat (yapılandırma değişikliği sonrası)
sudo systemctl restart fail2ban
# Aktif jail'leri listele
sudo fail2ban-client status
# SSH jail durumu (engellenen IP'ler)
sudo fail2ban-client status sshd
# Belirli IP'yi manuel engelle
sudo fail2ban-client set sshd banip 203.0.113.50
# Engeli kaldır
sudo fail2ban-client set sshd unbanip 203.0.113.50
# Tüm engelleri kaldır
sudo fail2ban-client unban --all
# Fail2Ban loglarını izle
sudo tail -f /var/log/fail2ban.log
Gelişmiş: Artan Ban Süresi (Recidive)
Tekrarlayan saldırganlar için ban süresini kademeli artır:
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
bantime = 604800 # 1 hafta
findtime = 86400 # Son 24 saatte
maxretry = 3 # 3 kez ban yemişse
🚀 Sunucu Güvenliğinde Ekstra Katman
Fail2Ban + SSH key + UFW + DDoS koruması... Tüm bu güvenlik katmanları birlikte çalıştığında sunucun gerçekten güvende olur. HazalHost altyapısıyla başla.
Sonuç
Fail2Ban, brute force saldırılarına karşı en etkili koruma araçlarından biridir. SSH, Nginx ve Apache için jail kuralları oluşturarak sunucunun güvenliğini önemli ölçüde artırabilirsin. Recidive jail ile tekrarlayan saldırganları uzun süreli engelleyerek ekstra koruma sağla.
Sık Sorulan Sorular (FAQ)
Fail2Ban kendi IP'mi engelledi, ne yapmalıyım?
VNC/KVM konsol üzerinden bağlanarak sudo fail2ban-client set sshd unbanip SENIN-IP komutunu çalıştır. Gelecekte ignoreip satırına IP'ni eklemeyi unutma.
Fail2Ban ne kadar sistem kaynağı kullanır?
Fail2Ban çok hafif bir araçtır. Genelde 20-50MB RAM kullanır ve CPU yükü ihmal edilebilir düzeydedir.
Kalıcı ban yapabilir miyim?
Evet, bantime değerini -1 yaparak kalıcı ban uygulayabilirsin. Ancak bu önerilmez çünkü IP'ler dinamik olabilir ve masum kullanıcıları etkileyebilir.