Konuyu Okuyanlar: 1 Ziyaretçi

journalctl ile SSH Log Analizi: Debian 12+ için auth.log Alternatifi

journalctl ile SSH Log Analizi: Debian 12+ için auth.log Alternatifi
[Resim: attachment.php?aid=11]

Selamlar,

Ubuntu'dan Debian 12'ye geçtiğimde ilk şaşırdığım şeylerden biri /var/log/auth.log dosyasının hiç oluşmaması oldu. rsyslog varsayılan kurulumda gelmiyor, her şey systemd journal içinde. Bu konuda "auth.log yok, SSH loglarım nerede?" diyenler için journalctl ile pratik bir rehber bırakıyorum.

Konuda Anlatılacaklar
  1. Neden auth.log yok?
  2. Servis adı: ssh mi, sshd mi?
  3. Zaman aralığı, çıktı formatı ve filtreler
  4. Dosyaya yazma ve Python ile birleştirme
  5. Kalıcı log isterseniz rsyslog kurmak

1) Neden auth.log Yok?
Debian 12 (Bookworm) ve sonrasında varsayılan kurulumda rsyslog paketi gelmez. Loglar binary olarak /var/log/journal altına yazılır. Ubuntu'da rsyslog hâlâ varsayılan olduğu için auth.log alışkanlığı devam ediyor. İkisi de doğru; sadece araç değişiyor.

2) Servis Adı Dikkat
Debian/Ubuntu paketlerinde OpenSSH servisinin birimi çoğu zaman ssh.service, bazı eski veya özel kurulumlarda sshd.service olabilir. Hangisi aktifse onu kullanın:

Kod:
systemctl status ssh # Unit ssh.service could not be found. ise: systemctl status sshd

3) Temel Komutlar
Kod:
# Bugünün SSH logları, ham metin (scriptlere uygun) sudo journalctl -u ssh --since today -o cat # Son 2 saat, saat damgalı sudo journalctl -u ssh --since "2 hours ago" -o short-iso # Belirli bir IP'yi ara sudo journalctl -u ssh --since yesterday | grep "198.51.100.7" # Sadece hatalı denemeler sudo journalctl -u ssh --since today | grep -E "Failed|Invalid user"

[-o cat] satır başındaki zaman damgasını kaldırıdığı için Python regex'lerinizi temiz tutar. Zaman damgası istiyorsanız [-o short-iso] kullanın.

4) Dosyaya Yazma ve Script
Forumdaki Python SSH analiz scripti stdin okuyabiliyor. journalctl çıktısını doğrudan borulayabilirsiniz:

Kod:
sudo journalctl -u ssh --since yesterday --until today -o cat | python3 ssh_tespit.py --esik 10

Kalıcı bir günlük özet dosyası için:

Kod:
sudo journalctl -u ssh --since yesterday --until today -o short-iso >> /var/log/ssh_gunluk.log

5) Klasik auth.log İsterseniz
Zorunlu değil ama alışkanlık için rsyslog kurulabilir:

Kod:
sudo apt update && sudo apt install -y rsyslog sudo systemctl enable --now rsyslog # Kısa süre sonra /var/log/auth.log oluşmaya başlar

Ben journalctl'ye alışmayı tercih ediyorum: tek komutla servis, zaman ve öncelik filtresi yapabiliyorsunuz.


Bonus: journald Boyut ve Kalıcılık
Laptop'ta lab çalıştırıyorsanız journal disk doldurabilir. /etc/systemd/journald.conf içinde SystemMaxUse=500M gibi bir sınır koyabilirsiniz. Kalıcı journal için /var/log/journal dizininin var olduğundan emin olun (Debian'da genelde vardır).

Ayrıca "öncelik" filtresi işe yarar:
Kod:
sudo journalctl -u ssh -p err..alert --since today
sadece hata ve üstü mesajları getirir. Brute force botları Failed satırlarını info seviyesinde yazar; bu yüzden brute force analizi için -p kullanmayın, grep kullanın.

Kaynaklar
Alıntı:Yasal not: Yalnızca kendi yönettiğiniz sistemlerde kullanın. TCK 243-245.

Kapak: özgün TurkTeam görseli.


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: