Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Fail2ban'da Özel Hapishane (Jail) Oluşturma ve E-posta Bildirimi ile Uyarı Alma Yapılandırması

pixero

Üye
Katılım
14 Mart 2026
Mesajlar
6
Merhaba arkadaşlar, bugün sizlere Fail2ban'ın gücünü bir adım öteye nasıl taşıyacağımızı anlatacağım. Hepimiz biliyoruz ki, standart jail'ler çoğu saldırıyı engelliyor. Ancak bazen özel servislerimiz, kendi yazdığımız uygulamalarımız veya belirli bir log deseni için ekstra koruma ve anında uyarı almamız gerekebiliyor. Bu rehberde, özel bir jail oluşturup, bir IP banlandığında bize e-posta göndermesini nasıl sağlayacağımızı adım adım işleyeceğiz. Bu sayede sunucunuzdaki şüpheli aktivitelerden anında haberdar olabilir, proaktif önlemlerinizi alabilirsiniz.

🔧 Özel Jail Dosyası Oluşturma

İlk olarak, yapılandırmamız için yeni bir jail dosyası oluşturacağız. Ben genelde her özel servis için ayrı dosya açmayı tercih ediyorum, böylece yönetimi kolay oluyor. Dosyamızı /etc/fail2ban/jail.d/ dizini altında oluşturacağız.

Bash:
sudo nano /etc/fail2ban/jail.d/my-custom-app.conf

Bu komutla yeni konfigürasyon dosyamızı oluşturup düzenlemeye başlıyoruz. İçerisine aşağıdaki gibi jail tanımımızı yapıyoruz. Diyelim ki myapp.log dosyamıza yapılan "Invalid token" hatalarını yakalamak istiyoruz.

NGINX:
[my-custom-app]
enabled = true
port = http,https
filter = my-custom-app
logpath = /var/log/myapp/myapp.log
maxretry = 3
findtime = 600
bantime = 3600
action = %(action_mwl)s

Burada dikkat etmemiz gereken noktalar:
- filter: Kullanacağımız filtrenin adı. Bunu bir sonraki adımda oluşturacağız.
- logpath: İzlemek istediğimiz log dosyasının tam yolu. Bu yolu doğru vermek çok önemli.
- action = %(action_mwl)s: Bu, banlama işlemini yapıp (action), maill (m), whois sorgusu (w) ve loglama (l) yapan standart bir aksiyon zinciridir. E-posta gönderme işlemi burada başlıyor.

📁 Özel Filter Dosyası Tanımlama

Şimdi, log dosyamızda hangi kalıbı arayacağını Fail2ban'a öğretmemiz gerekiyor. Filter dosyamızı /etc/fail2ban/filter.d/ dizininde oluşturacağız.

Bash:
sudo nano /etc/fail2ban/filter.d/my-custom-app.conf

Dosyanın içeriğinde, log satırındaki deseni (regex) ve failregex parametresini tanımlıyoruz.

NGINX:
[Definition]
failregex = ^<HOST> -."GET." 403."Invalid token"
ignoreregex =

Bu örnekte, log satırının başında gelen IP adresini (<HOST>) yakalıyoruz ve "Invalid token" içeren 403 hatalarını bir "fail" (başarısız girişim) olarak sayıyoruz. Regex'inizi kendi log formatınıza göre mutlaka test etmelisiniz. Test etmek için şu komutu kullanabilirsiniz:

Bash:
sudo fail2ban-regex /var/log/myapp/myapp.log /etc/fail2ban/filter.d/my-custom-app.conf

✉️ E-posta Bildirimi Yapılandırması

Ban bildirimlerini alabilmek için, Fail2ban'ın e-posta gönderme ayarlarını yapmamız gerekiyor. Bunun için ana konfigürasyon dosyasında veya jail.local dosyasında değişiklik yapacağız.

Bash:
sudo nano /etc/fail2ban/jail.local

Dosyanın en üst kısmına veya [DEFAULT] bölümüne aşağıdaki ayarları ekliyoruz. Benim sunucularda genelde kullandığım yöntem, bir mail relay (postfix veya ssmtp) üzerinden göndermektir.

NGINX:
[DEFAULT]
destemail = admin@alanadiniz.com
sender = fail2ban@alanadiniz.com
mta = sendmail
action = %(action_mwl)s

- destemail: Uyarı e-postalarının gideceği adres.
- sender: Bildirimin gönderileceği adres (From).
- mta: Kullanılacak Mail Transfer Aracı. Sunucunuzda postfix veya sendmail kurulu olmalı.
- action: Burada tanımlanan varsayılan aksiyon, tüm jail'ler için geçerli olur. Özel jail'imizde zaten tanımladığımız için orada çakışma olmaz.

⚠️ Test ve Servisi Yeniden Başlatma

Tüm ayarları yaptıktan sonra, yapılandırma dosyalarımızda bir sözdizimi hatası olmadığından emin olmalıyız.

Bash:
sudo fail2ban-client --test

Eğer her şey yolundaysa, Fail2ban servisini yeniden başlatarak değişiklikleri aktif hale getiriyoruz.

Bash:
sudo systemctl restart fail2ban

Oluşturduğumuz jail'in durumunu kontrol etmek için aşağıdaki komutu kullanabiliriz. Bu komut, hangi jail'lerin aktif olduğunu ve kaç IP'nin banlandığını gösterir.

Bash:
sudo fail2ban-client status my-custom-app

💎 Sonuç ve Tavsiyeler

Artık özel uygulamanız için bir jail'iniz ve bu jail bir IP'yi banladığında size e-posta atıyor. Bu yapılandırma, özellikle standart servisler dışında kalan, kritik öneme sahip uygulamalarınızın güvenliği için altın değerinde.

Şu ayara çok dikkat etmelisiniz: findtime ve maxretry değerlerini, uygulamanızın trafiğine göre ayarlayın. Çok agresif değerler, yanlışlıkla normal kullanıcılarınızı banlayabilir.

Peki ya siz? Fail2ban'ı özel ihtiyaçlarınız için nasıl özelleştiriyorsunuz? Belki SSH için farklı, web uygulamanız için farklı ban süreleri mi uyguluyorsunuz? Kendi tecrübelerinizi ve konfigürasyon ipuçlarınızı aşağıdaki yorumlarda paylaşmanızı çok isterim. Sorusu olan arkadaşlar da çekinmeden yazsın, elimden geldiğince yardımcı olmaya çalışırım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri