Merhaba arkadaşlar, bugün sizlere Fail2ban kullanırken sıkça ihtiyaç duyacağınız iki önemli konuyu anlatacağım. Biri, hangi log dosyasını taradığını bilmek, diğeri ise hangi servislerin (hapishanelerin) aktif olduğunu ve kaç başarısız girişim olduğunu görmek. Bu bilgiler, sunucunuzdaki saldırı yoğunluğunu anlamak ve kurallarınızın doğru çalışıp çalışmadığını kontrol etmek için çok değerlidir.
Fail2ban Log Dosyası Nerede?
Fail2ban'ın kendi çalışma logu ve taradığı servis logları farklıdır. Öncelikle, Fail2ban'ın kendisine ait log dosyasının konumunu bilmek, bir hata ayıklarken veya neden bir kuralın çalışmadığını anlamak için ilk bakacağınız yerdir. Bu log, hangi IP'nin ne zaman ve hangi "jail" (hapishane) tarafından yasaklandığını detaylıca kaydeder.
Benim sunucularda genelde varsayılan konumda bulunur. Hemen terminalden kontrol edelim:
Bu komut, log dosyasının son 20 satırını gösterir. Eğer dosya bulunamazsa veya farklı bir yerdeyse, Fail2ban'ın ana yapılandırma dosyasından log yolunu öğrenebiliriz:
Çıktı genelde `/var/log/fail2ban.log` şeklinde olacaktır. Eğer `SYSLOG` yazıyorsa, loglar sistem log'una (genellikle `/var/log/syslog` veya `/var/log/messages`) yazılıyordur.
Hangi Hapishaneler Aktif ve Ne Kadar IP Banlı?
Fail2ban'ın kalbi, `fail2ban-client` aracıdır. Sunucunuzda şu anda hangi "jail"lerin (örn: sshd, nginx-http-auth, apache, vs.) aktif olduğunu, bu jail'lerin kaç başarısız denemeyi filtrelediğini ve toplamda kaç IP adresini yasakladığını görmek için bu komutu kullanırız:
Bu komut, tüm aktif jail'lerin bir listesini verecektir. Ancak daha detaylı bilgi almak isterseniz, özellikle bir jail'in durumunu inceleyebilirsiniz. Örneğin, en yaygın kullanılan `sshd` jail'i için:
Bu komutun çıktısı sizin için bir rapor gibidir. Şu bilgileri net bir şekilde gösterir:
- Jail'in adı ve durumu (çalışıyor mu?).
- Filtreleme kuralları (hangi log dosyasını tarıyor?).
- Şu ana kadar yakalanan toplam başarısız girişim sayısı ("Currently failed:" satırı).
- Şu anda yasaklı olan IP adreslerinin listesi ("Banned IP list:" satırı). Bu liste boşsa, henüz hiç IP banlanmamış demektir.
Dikkat Edilmesi Gerekenler
Şu ayara çok dikkat etmelisiniz: Eğer `fail2ban-client status` komutu bir jail hakkında "Sorry but the jail 'X' does not exist" hatası veriyorsa, o jail ya aktif değildir ya da yapılandırma dosyasında ismi farklı yazılmıştır. Jail'lerin aktif olup olmadığını, jail.d dizinindeki konfigürasyonlardan veya `jail.local` dosyasından kontrol edebilirsiniz.
Ayrıca, log dosyasının boyutu büyüdükçe `tail` komutu daha pratik olacaktır. Sürekli `cat` ile açmaya çalışmayın. Örneğin, canlı olarak logları takip etmek için:
Bu komut, log dosyasına yeni eklenen satırları anında terminalinizde gösterir. Bir saldırı anında neler olduğunu gerçek zamanlı izlemek için çok kullanışlıdır.
Sonuç olarak, bu iki basit yöntemle Fail2ban'ın gözlerini ve kulaklarını siz de kontrol edebilirsiniz. Fail2ban'ı kurduktan sonra "acaba çalışıyor mu?" diye düşünmeyin, hemen `status` komutuyla durumunu kontrol edin ve loglarına bir göz atın.
Peki siz bu log takibi ve durum kontrolü işlemlerini kendi sunucularınızda nasıl yapıyorsunuz? Belki daha farklı ve pratik bir yönteminiz vardır. Ya da `fail2ban-client` ile ilgili başka kullanışlı ipuçlarınız? Sorusu olan veya eklemek isteyen arkadaşlar aşağıya yazsın, beraber tartışalım.
Fail2ban'ın kendi çalışma logu ve taradığı servis logları farklıdır. Öncelikle, Fail2ban'ın kendisine ait log dosyasının konumunu bilmek, bir hata ayıklarken veya neden bir kuralın çalışmadığını anlamak için ilk bakacağınız yerdir. Bu log, hangi IP'nin ne zaman ve hangi "jail" (hapishane) tarafından yasaklandığını detaylıca kaydeder.
Benim sunucularda genelde varsayılan konumda bulunur. Hemen terminalden kontrol edelim:
Bash:
sudo cat /var/log/fail2ban.log | tail -20
Bu komut, log dosyasının son 20 satırını gösterir. Eğer dosya bulunamazsa veya farklı bir yerdeyse, Fail2ban'ın ana yapılandırma dosyasından log yolunu öğrenebiliriz:
Bash:
sudo grep -i "^logtarget" /etc/fail2ban/fail2ban.conf
Çıktı genelde `/var/log/fail2ban.log` şeklinde olacaktır. Eğer `SYSLOG` yazıyorsa, loglar sistem log'una (genellikle `/var/log/syslog` veya `/var/log/messages`) yazılıyordur.
Fail2ban'ın kalbi, `fail2ban-client` aracıdır. Sunucunuzda şu anda hangi "jail"lerin (örn: sshd, nginx-http-auth, apache, vs.) aktif olduğunu, bu jail'lerin kaç başarısız denemeyi filtrelediğini ve toplamda kaç IP adresini yasakladığını görmek için bu komutu kullanırız:
Bash:
sudo fail2ban-client status
Bu komut, tüm aktif jail'lerin bir listesini verecektir. Ancak daha detaylı bilgi almak isterseniz, özellikle bir jail'in durumunu inceleyebilirsiniz. Örneğin, en yaygın kullanılan `sshd` jail'i için:
Bash:
sudo fail2ban-client status sshd
Bu komutun çıktısı sizin için bir rapor gibidir. Şu bilgileri net bir şekilde gösterir:
- Jail'in adı ve durumu (çalışıyor mu?).
- Filtreleme kuralları (hangi log dosyasını tarıyor?).
- Şu ana kadar yakalanan toplam başarısız girişim sayısı ("Currently failed:" satırı).
- Şu anda yasaklı olan IP adreslerinin listesi ("Banned IP list:" satırı). Bu liste boşsa, henüz hiç IP banlanmamış demektir.
Şu ayara çok dikkat etmelisiniz: Eğer `fail2ban-client status` komutu bir jail hakkında "Sorry but the jail 'X' does not exist" hatası veriyorsa, o jail ya aktif değildir ya da yapılandırma dosyasında ismi farklı yazılmıştır. Jail'lerin aktif olup olmadığını, jail.d dizinindeki konfigürasyonlardan veya `jail.local` dosyasından kontrol edebilirsiniz.
Ayrıca, log dosyasının boyutu büyüdükçe `tail` komutu daha pratik olacaktır. Sürekli `cat` ile açmaya çalışmayın. Örneğin, canlı olarak logları takip etmek için:
Bash:
sudo tail -f /var/log/fail2ban.log
Bu komut, log dosyasına yeni eklenen satırları anında terminalinizde gösterir. Bir saldırı anında neler olduğunu gerçek zamanlı izlemek için çok kullanışlıdır.
Sonuç olarak, bu iki basit yöntemle Fail2ban'ın gözlerini ve kulaklarını siz de kontrol edebilirsiniz. Fail2ban'ı kurduktan sonra "acaba çalışıyor mu?" diye düşünmeyin, hemen `status` komutuyla durumunu kontrol edin ve loglarına bir göz atın.
Peki siz bu log takibi ve durum kontrolü işlemlerini kendi sunucularınızda nasıl yapıyorsunuz? Belki daha farklı ve pratik bir yönteminiz vardır. Ya da `fail2ban-client` ile ilgili başka kullanışlı ipuçlarınız? Sorusu olan veya eklemek isteyen arkadaşlar aşağıya yazsın, beraber tartışalım.