Merhaba arkadaşlar, bugün sizlere sunucu güvenliğimizin sessiz kahramanı Fail2ban'ın çok önemli bir özelliğinden bahsedeceğim. Fail2ban zaten kötü niyetli girişimleri otomatik olarak engelliyor, peki ya bu engelleme anında bize bir e-posta gönderse ve anında haberdar olsak harika olmaz mı? Bu rehberde, bir IP adresi Fail2ban tarafından engellendiğinde, sizin belirlediğiniz e-posta adresine otomatik uyarı göndermeyi nasıl yapılandıracağımızı adım adım anlatacağım. Bu sayede sunucunuzdaki saldırı girişimlerinden gerçek zamanlı haberdar olabilirsiniz.
Ön Hazırlık: Postfix veya SSMTP Kurulumu
Fail2ban'ın e-posta gönderebilmesi için sunucunuzda basit bir Mail Transfer Agent (MTA) yüklü ve yapılandırılmış olmalı. Ben genelde hafif ve kolay kurulan postfix veya ssmtp kullanıyorum. Eğer sisteminizde yoksa, aşağıdaki komutla postfix'i kurabilirsiniz.
Kurulum sırasında çıkan ekranda, "Internet Site" seçeneğini seçin ve sistem posta adresinizi (örn: sunucuadiniz.com) girin. Eğer kurulumu atladıysanız veya ssmtp tercih ederseniz, onu da şu şekilde kurabilirsiniz:
Fail2ban'da E-posta Bildirimi Ayarları
Asıl işlem şimdi başlıyor. Fail2ban'ın ana yapılandırma dosyasını düzenleyeceğiz. Bu dosya genellikle /etc/fail2ban/jail.conf yolundadır. Ancak, doğrudan bu dosyayı düzenlemek yerine, özel ayarlarımızı bir local dosyasında tutmak en iyi uygulamadır. Bu sayede güncellemelerle ayarlarınız kaybolmaz.
Öncelikle, e-posta gönderimi için gerekli genel ayarları yapalım. Aşağıdaki komutla local ayar dosyamızı oluşturup düzenleyelim.
Eğer bu dosya yoksa, nano editörü onu oluşturacaktır. Şimdi, bu dosyanın içine aşağıdaki temel e-posta konfigürasyonunu ekleyelim.
Burada destemail satırını, uyarıları almak istediğiniz e-posta adresi ile değiştirmeyi unutmayın!
Jail (Hapishane) Bazında Bildirimi Aktif Etme
Yukarıdaki ayarlar genel tanımlardı. Şimdi, hangi servisler için (örneğin SSH, Nginx vs.) e-posta bildirimi almak istiyorsak, onların ilgili jail bölümlerinde bu aksiyonu etkinleştirelim. Yine /etc/fail2ban/jail.local dosyasının devamına, örneğin SSH için şu ayarları ekleyebilirsiniz.
Eğer nginx için bir jail'iniz varsa, onun için de benzer şekilde action satırını ekleyebilirsiniz.
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 olalım.
Eğer herhangi bir hata mesajı almazsanız, Fail2ban servisini yeniden başlatarak ayarlarımızı aktif hale getirelim.
Servisin durumunu kontrol edelim.
E-posta Bildirimini Test Etme
Ayarların çalışıp çalışmadığını test etmek için, Fail2ban'ın test e-postası gönderme özelliğini kullanabilirsiniz. Bu komut, yapılandırılmış e-posta adresinize bir test mesajı gönderecektir.
Not: Bu komut, 'sshd' jail'i için geçerlidir. Farklı bir jail test etmek isterseniz 'sshd' yerine onun adını yazın.
Eğer her şey doğru yapılandırıldıysa, birkaç dakika içinde "Fail2Ban Test" konulu bir e-posta almalısınız. Ayrıca, sunucunuza yanlış şifreyle birkaç kez SSH bağlantısı deneyerek gerçek bir engelleme tetikleyip e-posta geliyor mu diye de test edebilirsiniz (kendi IP'nizi hemen banlamamaya dikkat edin!).
Sonuç olarak, bu basit yapılandırmayla sunucunuzdaki güvenlik olaylarından anında haberdar olabileceksiniz. Ben kendi sunucularımda bu bildirimleri mutlaka aktif tutarım, çünkü hangi IP'lerin ne zaman saldırı denemesi yaptığını görmek, güvenlik stratejimi şekillendirmeme yardımcı oluyor.
Peki siz bu e-posta bildirimlerini kullanıyor musunuz? Ya da Fail2ban konfigürasyonunuzda başka hangi akıllı ayarları yapıyorsunuz? Tecrübelerinizi ve sorularınızı aşağıdaki yorumlarda paylaşabilirsiniz. Herkese güvenli günler dilerim!
Fail2ban'ın e-posta gönderebilmesi için sunucunuzda basit bir Mail Transfer Agent (MTA) yüklü ve yapılandırılmış olmalı. Ben genelde hafif ve kolay kurulan postfix veya ssmtp kullanıyorum. Eğer sisteminizde yoksa, aşağıdaki komutla postfix'i kurabilirsiniz.
Bash:
sudo apt-get update
sudo apt-get install postfix -y
Kurulum sırasında çıkan ekranda, "Internet Site" seçeneğini seçin ve sistem posta adresinizi (örn: sunucuadiniz.com) girin. Eğer kurulumu atladıysanız veya ssmtp tercih ederseniz, onu da şu şekilde kurabilirsiniz:
Bash:
sudo apt-get install ssmtp -y
Asıl işlem şimdi başlıyor. Fail2ban'ın ana yapılandırma dosyasını düzenleyeceğiz. Bu dosya genellikle /etc/fail2ban/jail.conf yolundadır. Ancak, doğrudan bu dosyayı düzenlemek yerine, özel ayarlarımızı bir local dosyasında tutmak en iyi uygulamadır. Bu sayede güncellemelerle ayarlarınız kaybolmaz.
Öncelikle, e-posta gönderimi için gerekli genel ayarları yapalım. Aşağıdaki komutla local ayar dosyamızı oluşturup düzenleyelim.
Bash:
sudo nano /etc/fail2ban/jail.local
Eğer bu dosya yoksa, nano editörü onu oluşturacaktır. Şimdi, bu dosyanın içine aşağıdaki temel e-posta konfigürasyonunu ekleyelim.
NGINX:
[DEFAULT]
# E-posta gönderimini aktif et
action = %(action_)s
# E-posta gönderimini de içeren özel aksiyon
action_mwl = %(action_)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(action_mwl)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s", sendername="%(sendername)s", dest="%(destemail)s"]
# YÖNETİCİNİN E-POSTA ADRESİ (BURAYI KENDİNİZE GÖRE DEĞİŞTİRİN!)
destemail = admin@ornekdomain.com
# E-postaları gönderen adres (Genelde sunucu adı kullanılır)
sendername = Fail2Ban-Alert
# E-posta gönderim aksiyonu olarak 'action_mwl' kullan (Mail With Logs)
action = %(action_mwl)s
Burada destemail satırını, uyarıları almak istediğiniz e-posta adresi ile değiştirmeyi unutmayın!
Yukarıdaki ayarlar genel tanımlardı. Şimdi, hangi servisler için (örneğin SSH, Nginx vs.) e-posta bildirimi almak istiyorsak, onların ilgili jail bölümlerinde bu aksiyonu etkinleştirelim. Yine /etc/fail2ban/jail.local dosyasının devamına, örneğin SSH için şu ayarları ekleyebilirsiniz.
NGINX:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
# E-posta bildirimi için action tanımını burada da belirtiyoruz.
action = %(action_mwl)s
Eğer nginx için bir jail'iniz varsa, onun için de benzer şekilde action satırını ekleyebilirsiniz.
Tüm ayarları yaptıktan sonra, yapılandırma dosyalarımızda bir sözdizimi hatası olmadığından emin olalım.
Bash:
sudo fail2ban-client --test
Eğer herhangi bir hata mesajı almazsanız, Fail2ban servisini yeniden başlatarak ayarlarımızı aktif hale getirelim.
Bash:
sudo systemctl restart fail2ban
Servisin durumunu kontrol edelim.
Bash:
sudo systemctl status fail2ban
Ayarların çalışıp çalışmadığını test etmek için, Fail2ban'ın test e-postası gönderme özelliğini kullanabilirsiniz. Bu komut, yapılandırılmış e-posta adresinize bir test mesajı gönderecektir.
Bash:
sudo fail2ban-client set sshd sendmail
Not: Bu komut, 'sshd' jail'i için geçerlidir. Farklı bir jail test etmek isterseniz 'sshd' yerine onun adını yazın.
Eğer her şey doğru yapılandırıldıysa, birkaç dakika içinde "Fail2Ban Test" konulu bir e-posta almalısınız. Ayrıca, sunucunuza yanlış şifreyle birkaç kez SSH bağlantısı deneyerek gerçek bir engelleme tetikleyip e-posta geliyor mu diye de test edebilirsiniz (kendi IP'nizi hemen banlamamaya dikkat edin!).
Sonuç olarak, bu basit yapılandırmayla sunucunuzdaki güvenlik olaylarından anında haberdar olabileceksiniz. Ben kendi sunucularımda bu bildirimleri mutlaka aktif tutarım, çünkü hangi IP'lerin ne zaman saldırı denemesi yaptığını görmek, güvenlik stratejimi şekillendirmeme yardımcı oluyor.
Peki siz bu e-posta bildirimlerini kullanıyor musunuz? Ya da Fail2ban konfigürasyonunuzda başka hangi akıllı ayarları yapıyorsunuz? Tecrübelerinizi ve sorularınızı aşağıdaki yorumlarda paylaşabilirsiniz. Herkese güvenli günler dilerim!