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.
Bu yazıda Fail2Ban ve CrowdSec'i birlikte nasıl kullandığımı, aralarındaki farkı ve KRK Holding altyapısında iki katmanlı güvenliği nasıl kurduğumu anlatıyorum.
## 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. Bu döngü genellikle 5-10 deneme ve birkaç saniye sürüyor. Dağıtık saldırılarda ise yüzlerce farklı IP'den birer deneme geliyor — Fail2Ban her birini tek tek yakalayana kadar zaten hasarın bir kısmı oluşmuş oluyor.
## CrowdSec Nedir?
CrowdSec, topluluk destekli bir tehdit istihbarat platformu. Fail2Ban gibi log analizi yapıyor ama buna ek olarak iki kritik özellik sunuyor.
Birincisi: global kalabalık kaynaklı 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.
İkincisi: davranış analizi. Sadece başarısız girişleri değil, tarama davranışlarını, web scraping kalıplarını, API kötüye kullanımını da tespit ediyor.
## İkisi Birlikte Nasıl Çalışıyor?
Fail2Ban ve CrowdSec birbirini tamamlıyor, rekabet etmiyor.
CrowdSec bilinen kötü aktörleri önceden engelliyor — saldırı başlamadan önce. Fail2Ban ise bilinmeyen yeni saldırıları yakalıyor ve local kurallara göre engelliyor. İkisi aynı sunucuda yan yana çalışabilir.
Ben şu yapıyı kullanıyorum: CrowdSec ana katman olarak çalışıyor, bilinen saldırganları proaktif olarak engelliyor. Fail2Ban ise ikinci katman olarak SSH, web uygulaması ve mail sunucusu loglarını izliyor, CrowdSec'in kaçırdığı yerel tehditleri yakalıyor.
## Kurulum: CrowdSec
```bash
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
```
Kurulum sonrası CrowdSec otomatik olarak yaygın servislerin loglarını tanımlıyor. Hangi koleksiyonların yüklü olduğunu görmek için:
```bash
sudo cscli collections list
```
Nginx için:
```bash
sudo cscli collections install crowdsecurity/nginx
sudo systemctl reload crowdsec
```
Bouncer servisini aktif et:
```bash
sudo systemctl enable crowdsec-firewall-bouncer
sudo systemctl start crowdsec-firewall-bouncer
```
Artık CrowdSec hem global kara listeyi çekiyor hem de yerel logları analiz ediyor. Engellenen IP'leri görmek için:
```bash
sudo cscli decisions list
```
## Kurulum: Fail2Ban
```bash
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
/etc/fail2ban/jail.local dosyasında temel ayarlar:
```ini
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8
[sshd]
enabled = true
port = ssh
filter = sshd
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
```
```bash
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status
```
## Gerçek Hayat Sonuçları
KRK Holding altyapısında bu yapıyı kurduğumdan bu yana:
CrowdSec günlük ortalama 340 benzersiz IP adresini global istihbarat sayesinde otomatik olarak engelliyor — bunların hiçbiri log bile oluşturmadan önce bloklanıyor. Fail2Ban ise ayda ortalama 180 yerel saldırı tespiti yapıyor.
SSH brute-force girişimleri yüzde 94 azaldı. Web uygulama tarama saldırıları neredeyse tamamen durdu. En önemlisi: başarılı yetkisiz erişim sıfır.
## İzleme: Ne Olduğunu Takip Edin
Fail2Ban durumu:
```bash
sudo fail2ban-client status sshd
sudo tail -f /var/log/fail2ban.log
```
CrowdSec metrikleri:
```bash
sudo cscli metrics
sudo cscli alerts list
```
Zabbix ile CrowdSec entegrasyonu yaparak karar sayısını ve uyarıları dashboard'a taşıdım. Böylece sabah ilk işim olarak güvenlik özetine bakabiliyorum.
## Önemli Notlar
Kendi IP adresinizi ve güvenilir ağları her zaman ignoreip listesine ekleyin. Kendinizi kilitlemek istenmez.
CrowdSec bouncer kurulmadan sadece CrowdSec'i kurmak yetmez — bouncer olmadan kararlar alınıyor ama uygulanmıyor.
Fail2Ban ve CrowdSec aynı anda iptables kuralları yazabiliyor. Çakışma olmaması için CrowdSec'i öncelikli tutup Fail2Ban'ı nftables üzerinden çalıştırabilirsiniz.
## 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.