Bir gece saat 02:00'da sunucu alarm verdi. Fail2Ban loglarına baktım — 40 farklı IP adresinden SSH'a koordineli brute-force saldırısı. Fail2Ban her IP'yi yakalıyordu ama yenileri gelmeye devam ediyordu. O gece CrowdSec kurma kararı aldım.
Fail2Ban Nedir ve Neden Yetmez?
Fail2Ban log dosyalarını izleyen ve başarısız giriş denemelerini tespit edince ilgili IP'yi geçici olarak engelleyen açık kaynaklı bir araç. Kurulumu kolay, etkisi hızlı.
Ama bir sınırı var: tepkisel çalışıyor. Saldırı gerçekleşiyor, log oluşuyor, Fail2Ban tespit ediyor, IP engelleniyor. Dağıtık saldırılarda ise yüzlerce farklı IP'den birer deneme geliyor — Fail2Ban her birini tek tek yakalayana kadar hasarın bir kısmı oluşmuş oluyor.
CrowdSec Nedir?
CrowdSec topluluk destekli bir tehdit istihbarat platformu. Fail2Ban gibi log analizi yapıyor ama iki kritik özellik daha sunuyor:
Global istihbarat: Dünya genelinde milyonlarca CrowdSec kurulumu var. Bir IP bir yerde saldırı başlatınca bu bilgi merkezi veritabanına iletiliyor. Sizin sunucunuz o IP'yi daha hiç görmeden engelliyor.
Davranış analizi: Sadece başarısız girişleri değil, tarama davranışlarını, web scraping kalıplarını ve API kötüye kullanımını da tespit ediyor.
İkisi Birlikte Nasıl Çalışıyor?
CrowdSec ve Fail2Ban birbirini tamamlıyor, rekabet etmiyor. KRK Holding'de şu yapıyı kullanıyorum:
CrowdSec → Ana katman, bilinen saldırganları proaktif olarak engelliyor
Fail2Ban → İkinci katman, SSH/web/mail loglarını izliyor, yeni tehditleri yakalıyor
1. CrowdSec Kurulumu
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec crowdsec-firewall-bouncer-iptablesNginx koleksiyonunu ekleyin:
sudo cscli collections install crowdsecurity/nginx
sudo systemctl reload crowdsecBouncer servisini aktif edin:
sudo systemctl enable --now crowdsec-firewall-bouncerEngellenen IP'leri görün:
sudo cscli decisions list2. Fail2Ban Kurulumu
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local/etc/fail2ban/jail.local dosyasını düzenleyin:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 5
sudo systemctl enable --now fail2ban
sudo fail2ban-client statusGerçek Hayat Sonuçları
KRK Holding altyapısında bu yapıyı kurduğumdan bu yana:
CrowdSec günlük ortalama 340 benzersiz IP'yi global istihbarat sayesinde otomatik engelliyor
Fail2Ban ayda ortalama 180 yerel saldırı tespiti yapıyor
SSH brute-force girişimleri yüzde 94 azaldı
Başarılı yetkisiz erişim: sıfır
İzleme
sudo fail2ban-client status sshd
sudo tail -f /var/log/fail2ban.log
sudo cscli metrics
sudo cscli alerts listZabbix ile CrowdSec entegrasyonu yaparak karar sayısını ve uyarıları dashboard'a taşıdım. Sabah ilk işim güvenlik özetine bakmak oluyor.
Dikkat Edilecekler
Kendi IP adresinizi
ignoreiplistesine ekleyin — kendinizi kilitlemek istemezsinizCrowdSec bouncer kurulmadan çalışmaz — kararlar alınıyor ama uygulanmıyor
İkisi aynı anda iptables yazıyor — çakışma için CrowdSec'i öncelikli tutup Fail2Ban'ı nftables üzerinden çalıştırın
Sonuç
Tek bir güvenlik katmanına güvenmek, tek bir kilide güvenmek gibi. Fail2Ban ve CrowdSec birlikte, biri reaktif biri proaktif olarak çalışarak sunucunuzu çok daha güçlü koruma altına alıyor. Kurulum veya yapılandırma konusunda sorularınız varsa iletişim formundan ulaşabilirsiniz.