Sertifikalar Kariyer Projeler Blog Araçlar İletişim $ iletisime_gec
← Tüm yazılar

Fail2Ban + CrowdSec ile Sunucu Güvenliği: İki Katmanlı Koruma

Tek başına Fail2Ban yetmez. CrowdSec ile birleştirince sunucunuza yapılan saldırıları hem engelliyor hem de global istihbarat ağıyla tanımlıyorsunuz. KRK Holding altyapısında bu ikili savunmayı nasıl kurduğumu anlattım.

Fail2Ban + CrowdSec ile Sunucu Güvenliği: İki Katmanlı Koruma

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:

İkisi Birlikte Nasıl Çalışıyor?

CrowdSec ve Fail2Ban birbirini tamamlıyor, rekabet etmiyor. KRK Holding'de şu yapıyı kullanıyorum:

1. CrowdSec Kurulumu

curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec crowdsec-firewall-bouncer-iptables

Nginx koleksiyonunu ekleyin:

sudo cscli collections install crowdsecurity/nginx
sudo systemctl reload crowdsec

Bouncer servisini aktif edin:

sudo systemctl enable --now crowdsec-firewall-bouncer

Engellenen IP'leri görün:

sudo cscli decisions list

2. 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 status

Gerçek Hayat Sonuçları

KRK Holding altyapısında bu yapıyı kurduğumdan bu yana:

İzleme

sudo fail2ban-client status sshd
sudo tail -f /var/log/fail2ban.log
sudo cscli metrics
sudo cscli alerts list

Zabbix 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

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.

İK
İdris Koç
Linux Engineer · IT Manager @ KRK Holding · linux.ist Kurucusu
linux.ist AI
● Gemini 1.5 Flash · Aktif
Merhaba! Linux, sunucu yönetimi veya ağ güvenliği hakkında sorularınızı yanıtlayabilirim. 👋