Pardus'ta Servis Günlüklerini İzleme (Systemd Journal)

Linux sistemlerinde servislerin neden çalışmadığını, ne zaman yeniden başladığını, hangi hataları verdiğini ve güvenlik olaylarını analiz edebilmenin en önemli yolu servis günlüklerini (logs) incelemektir.

Pardus, Debian tabanlı olduğu için systemd kullanır ve servis kayıtları systemd-journald tarafından tutulur. Bu kayıtlar journalctl komutu ile incelenebilir.


Servis Günlükleri Nedir?

Bir servis çalışırken;

  • Başlatılır

  • Durdurulur

  • Yeniden başlatılır

  • Hata üretir

  • Uyarı verir

  • Yetkilendirme yapar

  • Dosya açar

  • Ağ bağlantısı kurar

Bütün bu olaylar günlük (log) olarak kaydedilir.

Örneğin;

SSH servisi başladı.
Apache yeniden başlatıldı.
Docker hata verdi.
PostgreSQL bağlantıyı reddetti.
Fail2Ban saldırgan IP adresini engelledi.

Bütün bunlar journal içerisinde bulunur.


journalctl Komutu

Temel kullanım:

journalctl

Bu komut sistemdeki bütün logları gösterir.

Çıkış örneği:

Jul 30 09:15 systemd Started OpenSSH Server.
Jul 30 09:15 sshd Accepted password for user
Jul 30 09:18 sudo pam_unix authentication failure
Jul 30 09:22 nginx Started

Son Logları Görüntüleme

journalctl -n 50

Son 50 kayıt.

journalctl -n 100

Son 100 kayıt.


Canlı Log İzleme

En çok kullanılan komuttur.

journalctl -f

Linux'taki

tail -f

komutunun journal sürümüdür.

Yeni log geldikçe ekrana düşer.


Belirli Servisi İzleme

SSH

journalctl -u ssh

Apache

journalctl -u apache2

Nginx

journalctl -u nginx

Docker

journalctl -u docker

MariaDB

journalctl -u mariadb

PostgreSQL

journalctl -u postgresql

Canlı Servis Takibi

SSH

journalctl -u ssh -f

Apache

journalctl -u apache2 -f

Docker

journalctl -u docker -f

Servis yeniden başlatılırsa anında görülür.


Bugünkü Loglar

journalctl --since today

Son Bir Saat

journalctl --since "1 hour ago"

Son 24 Saat

journalctl --since yesterday

Tarihe Göre Filtreleme

journalctl --since "2026-06-01"

Belirli saat

journalctl --since "2026-06-01 09:00"

Saat aralığı

journalctl --since "09:00" --until "11:00"

Boot Kayıtları

Mevcut açılış

journalctl -b

Önceki açılış

journalctl -b -1

İki önceki

journalctl -b -2

Boot listesi

journalctl --list-boots

Örnek:

-2
-1
0

Hataları Listeleme

journalctl -p err

Kritik

journalctl -p crit

Warning

journalctl -p warning

Sadece hata ve üzeri

journalctl -p err..alert

Kernel Logları

journalctl -k

Canlı

journalctl -kf

Kernel panic

Driver

USB

Disk

Bellek

NIC

bütün mesajlar burada olur.


Belirli Kullanıcıya Ait Loglar

UID

journalctl _UID=1000

Root

journalctl _UID=0

PID'ye Göre

journalctl _PID=2345

Process İsmi

journalctl _COMM=sshd

Executable Dosya

journalctl _EXE=/usr/sbin/sshd

Hostname

journalctl _HOSTNAME=pardus-server

Mesaj Arama

journalctl | grep failed

veya

journalctl | grep password

JSON Formatında Çıktı

journalctl -o json

Gelişmiş SIEM sistemlerinde kullanılır.


Kısa Format

journalctl -o short

Verbose

journalctl -o verbose

Her alan gösterilir.


Export

journalctl > logs.txt

veya

journalctl -u ssh > ssh.log

Disk Kullanımı

journalctl --disk-usage

Örnek

Archived and active journals take up 1.2G

Eski Logları Silme

7 günlük bırak

sudo journalctl --vacuum-time=7d

500 MB bırak

sudo journalctl --vacuum-size=500M

journalctl Filtre Kombinasyonları

Son 1 saat SSH

journalctl -u ssh --since "1 hour ago"

Son 30 dakika Docker

journalctl -u docker --since "30 minutes ago"

Bugünkü Apache

journalctl -u apache2 --since today

journalctl + less

journalctl | less

Arama

/error

İleri

n

Geri

Shift+n

Renkli Görüntüleme

journalctl | ccze

Kurulum

sudo apt install ccze

SSH Güvenlik Analizi

Başarısız girişler

journalctl -u ssh | grep Failed

Başarılı girişler

journalctl -u ssh | grep Accepted

Root girişleri

journalctl -u ssh | grep root

Fail2Ban Kontrolü

journalctl -u fail2ban

Canlı

journalctl -u fail2ban -f

Apache Hataları

journalctl -u apache2 -p err

Docker Sorunları

journalctl -u docker -p warning

PostgreSQL

journalctl -u postgresql

NetworkManager

journalctl -u NetworkManager

Sistem Açılış Analizi

journalctl -b

Servis neden başlamadı?

journalctl -u nginx -b

Siber Güvenlik Açısından Servis Günlüklerinin Önemi

Servis günlükleri, saldırıların erken tespitinde ve olay müdahalesinde en değerli veri kaynaklarından biridir. Aşağıdaki olaylar günlüklerde rahatlıkla izlenebilir:

1. Brute Force SSH Saldırıları

Belirtiler:

Failed password
Invalid user
Connection closed
Too many authentication failures

İnceleme:

journalctl -u ssh --since "24 hours ago" | grep -E "Failed|Invalid|authentication failure"

2. Yetkisiz Root Oturumları

Kontrol:

journalctl -u ssh | grep "Accepted"
journalctl | grep "sudo"

Beklenmeyen saatlerde gerçekleşen root veya sudo işlemleri incelenmelidir.

3. Servis Çökmesi (DoS veya Hata)

Örnek:

journalctl -u nginx -p err
journalctl -u apache2 -p warning

Sürekli yeniden başlayan servisler yapılandırma hatası veya saldırı belirtisi olabilir.

4. Donanım ve Disk Hataları

Kernel kayıtları:

journalctl -k

Disk arızaları, dosya sistemi hataları veya bellek sorunları burada görülebilir.

5. Yetki Yükseltme Denemeleri

journalctl | grep sudo
journalctl | grep pam_unix

Başarısız sudo denemeleri veya PAM hataları incelenmelidir.

6. Ağ Servisleri

Ağ yapılandırmasındaki değişiklikler:

journalctl -u NetworkManager

Beklenmeyen ağ bağlantısı kesilmeleri veya IP değişiklikleri analiz edilebilir.

7. Konteyner Güvenliği

Docker ortamı:

journalctl -u docker

Beklenmeyen konteyner başlatmaları veya durdurmaları tespit edilebilir.

8. Olay Müdahalesi (Incident Response)

Bir olay sonrası aşağıdaki adımlar izlenebilir:

  1. Olayın gerçekleştiği zaman aralığını belirleyin.

  2. İlgili servisin günlüklerini filtreleyin.

  3. Hata, uyarı ve yetkilendirme kayıtlarını inceleyin.

  4. IP adresleri, kullanıcı adları ve süreç (PID) bilgilerini ilişkilendirin.

  5. Gerekirse günlükleri dışa aktararak SIEM veya adli bilişim araçlarında analiz edin.


En Faydalı journalctl Komutları

AmaçKomut
Son loglarjournalctl -n 100
Canlı takipjournalctl -f
SSH loglarıjournalctl -u ssh
Apache loglarıjournalctl -u apache2
Docker loglarıjournalctl -u docker
Kernel loglarıjournalctl -k
Bugünkü kayıtlarjournalctl --since today
Son 1 saatjournalctl --since "1 hour ago"
Hata kayıtlarıjournalctl -p err
Önceki açılışjournalctl -b -1
Disk kullanımıjournalctl --disk-usage
Günlük temizlemejournalctl --vacuum-time=7d

Sonuç

Pardus'ta journalctl, servislerin çalışma durumunu izlemek, hataları analiz etmek ve güvenlik olaylarını araştırmak için vazgeçilmez bir araçtır. SSH, web sunucuları, veritabanları, Docker ve diğer systemd servislerinin günlüklerini tek bir arayüzden inceleyebilmeniz; olay müdahalesi, sistem yönetimi ve siber güvenlik operasyonlarında büyük kolaylık sağlar. Özellikle zaman filtreleri, servis bazlı sorgular, öncelik (priority) seviyeleri ve canlı izleme seçeneklerini etkin kullanmak, sorunların hızlı tespit edilmesine ve güvenlik ihlallerinin erken fark edilmesine yardımcı olur.

Pardus, Debian tabanlı güçlü bir Linux dağıtımıdır ve sistem ile servislerin durumunu takip etmek için oldukça gelişmiş log (günlük) yönetim araçlarına sahiptir. Sisteminizde bir sorun çıktığında veya bir servisin nasıl çalıştığını analiz etmek istediğinizde başvuracağınız ilk yer servis günlükleridir.

Bu rehberde, Pardus üzerinde servis günlüklerini nasıl izleyeceğinizi, filtreleyeceğinizi ve yöneteceğinizi adım adım öğreneceğiz.

1. Systemd ve journalctl Kullanımı

Pardus, başlangıç sistemi ve servis yöneticisi olarak systemd kullanır. Systemd'nin günlükleri toplayan ve yöneten bileşenine journald denir. Bu günlükleri okumak için ise journalctl komutunu kullanırız.

Temel journalctl Komutları

En temel haliyle günlükleri görmek için terminale şu komutu yazabilirsiniz (tüm sistem loglarını açar):

Bash
sudo journalctl

Not: Çıktı çok uzun olacağı için sayfalama aracı ile açılır. Yön tuşlarıyla aşağı/yukarı inebilir, çıkmak için q tuşuna basabilirsiniz.

Belirli Bir Servisin Günlüklerini İzleme (-u parametresi)

Sadece belirli bir servise (örneğin Apache web sunucusu, SSH veya Nginx) ait logları görmek istiyorsanız -u (unit) parametresini kullanmalısınız.

Bash
sudo journalctl -u ssh
sudo journalctl -u apache2
sudo journalctl -u NetworkManager

Günlükleri Canlı (Gerçek Zamanlı) İzleme (-f parametresi)

Bir servisi yeniden başlattığınızda arka planda neler olduğunu anlık olarak görmek için -f (follow) parametresi kullanılır. Bu, klasik tail -f komutunun systemd karşılığıdır.

Bash
sudo journalctl -u nginx -f

(Canlı izlemeden çıkmak için klavyeden Ctrl + C tuş kombinasyonunu kullanabilirsiniz.)

Zaman Bazlı Filtreleme

Günlükleri belirli bir zaman aralığına göre daraltmak, sorun gidermeyi inanılmaz derecede hızlandırır.

  • Belirli bir zamandan sonrasını görmek için (--since):

    Bash
    sudo journalctl -u apache2 --since "1 hour ago" # Son 1 saat
    sudo journalctl -u ssh --since "2023-10-25 14:00:00" # Belirli tarih ve saat
    sudo journalctl --since today # Bugüne ait loglar
  • Belirli bir zaman aralığını görmek için (--since ve --until):

    Bash
    sudo journalctl --since "2023-10-24" --until "2023-10-25 12:00:00"
    

Sadece Hataları Görüntüleme (-p parametresi)

Sadece kritik hataları veya uyarıları listelemek isterseniz öncelik (priority) parametresini kullanabilirsiniz. Hata seviyesi 0 (en kritik) ile 7 (hata ayıklama) arasındadır. Sadece hataları (Priority 3 - err) görmek için:

Bash
sudo journalctl -p err -b

( -b parametresi, sadece son sistem açılışından (boot) bu yana olan logları gösterir.)

2. Klasik Log Dosyaları (/var/log Dizini)

Pardus, journalctl dışında geleneksel Linux loglama sistemini de (rsyslog) kullanmaya devam eder. Servislere ait fiziksel log dosyaları /var/log dizini altında tutulur.

Önemli Log Dosyaları

Dosya YoluAçıklama
/var/log/syslogGenel sistem günlükleri. Birçok servisin ve çekirdeğin (kernel) logları buraya düşer.
/var/log/auth.logSisteme giriş çıkışlar, kimlik doğrulama işlemleri ve sudo kullanımları.
/var/log/dmesgÇekirdek (Kernel) donanım ve sürücü mesajları (özellikle sistem açılışında).
/var/log/apt/Paket yöneticisi (kurulan/kaldırılan programlar) günlükleri.
/var/log/apache2/(Eğer kuruluysa) Apache web sunucusu erişim ve hata günlükleri.

Fiziksel Dosyaları Okuma Komutları

  • cat: Dosyanın tüm içeriğini tek seferde ekrana basar (Büyük dosyalar için önerilmez).

    Bash
    cat /var/log/syslog
    
  • less: Dosyayı sayfa sayfa okumanızı sağlar. İçinde arama yapmak kolaydır.

    Bash
    less /var/log/auth.log
    
  • tail: Dosyanın sadece en sonunu (varsayılan olarak son 10 satırı) gösterir. Anlık izleme için -f parametresiyle kullanılır.

    Bash
    tail -f /var/log/syslog
    
  • grep ile Arama: Log dosyasının içinde sadece belirli bir kelimeyi (örneğin "error" veya "failed") bulmak için:

    Bash
    grep "Failed" /var/log/auth.log
    

3. İleri Düzey Pratik İpuçları

Log Boyutunu Kontrol Etme ve Temizleme

Zamanla sistem günlükleri diskte çok fazla yer kaplayabilir. journalctl ne kadar disk alanı kullandığını görmek için:

Bash
sudo journalctl --disk-usage

Eğer log boyutunu küçültmek isterseniz (örneğin sadece son 50 MB'ı tutmak için):

Bash
sudo journalctl --vacuum-size=50M

Veya sadece son 1 haftalık logları tutup gerisini silmek için:

Bash
sudo journalctl --vacuum-time=1weeks

Özet ve Sorun Giderme Senaryosu

Diyelim ki Pardus'ta SSH servisi çalışmıyor. İzlemeniz gereken yol şudur:

  1. Servisin durumunu kontrol edin: sudo systemctl status ssh

  2. Son 50 satır logu inceleyin: sudo journalctl -u ssh -n 50

  3. Eğer sorun bağlantı denemeleriyle ilgiliyse auth loglarına bakın: grep sshd /var/log/auth.log

Bu yöntemlerle Pardus üzerinde çalışan tüm servislerin sağlık durumunu kolaylıkla analiz edebilir ve olası hataların kaynağını hızlıca tespit edebilirsiniz.

Siber güvenlik söz konusu olduğunda, servis günlükleri sadece sistem sorunlarını gidermek için değil, bir Mavi Takım (Blue Team) operasyonunun en temel istihbarat kaynağıdır. Özellikle siber güvenlik laboratuvarı ortamlarında, simüle edilmiş saldırıları analiz etmek, tehdit avcılığı (threat hunting) yapmak ve saldırganların bıraktığı uzlaşma göstergelerini (IOC - Indicators of Compromise) tespit etmek için logları stratejik olarak okumak gerekir.

Pardus üzerinde siber güvenlik ve ağ savunması perspektifinden log analizi yaparken odaklanmanız gereken temel vektörler şunlardır:

1. Kimlik Doğrulama ve Sızma Girişimlerinin Tespiti

Saldırganların sisteme sızmak için kullandığı en yaygın yöntemlerden biri Kaba Kuvvet (Brute Force) saldırılarıdır. Bu tür eylemler doğrudan /var/log/auth.log dosyasına düşer.

SSH Brute Force Tespiti: Hatalı şifre denemelerini ve bu denemeleri yapan IP adreslerini sıklıklarına göre listelemek, saldırının boyutunu anlamak için harika bir senaryodur:

Bash
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

Başarılı Şüpheli Girişler: Çok sayıda başarısız denemenin ardından gelen başarılı bir giriş, sistemin ele geçirildiğinin (compromised) kesin bir işaretidir:

Bash
grep "Accepted password" /var/log/auth.log

2. Ayrıcalık Yükseltme (Privilege Escalation) Avcılığı

Bir sisteme düşük yetkilerle giren saldırganın (Kırmızı Takım), sistemde root hakları elde etmeye çalışması beklenir. sudo kullanımını izlemek kritik öneme sahiptir.

Yetkisiz Sudo Denemeleri: Sudo yetkisi olmayan bir kullanıcının root olmaya çalışmasını tespit etmek için:

Bash
grep "NOT in sudoers" /var/log/auth.log

Hangi Komutların Root Olarak Çalıştırıldığını Görme: Sisteme sızmış birinin root yetkisiyle neler yaptığını journalctl üzerinden filtreleyebilirsiniz:

Bash
sudo journalctl -t sudo | grep "COMMAND="

3. Kalıcılık (Persistence) Mekanizmalarının Tespiti

MITRE ATT&CK çerçevesinde saldırganlar, sistem yeniden başlatıldığında bile erişimlerini korumak için genellikle sahte systemd servisleri oluştururlar veya mevcut servisleri manipüle ederler.

Yeni veya Şüpheli Servisleri Tespit Etme: Son zamanlarda sisteme eklenen ve başlatılan servisleri inceleyerek zararlı yazılımları (örneğin arka kapıları) yakalayabilirsiniz:

Bash
sudo journalctl -p info | grep "Loaded unit"

Ayrıca şüpheli bir servisin (örneğin gizli_kapi.service) tam olarak ne zaman ve nasıl çalıştığını detaylıca incelemek için:

Bash
sudo journalctl -u gizli_kapi.service -o verbose

(Bu komut, servisin hangi binary dosyasını tetiklediğini ve yetki durumlarını en ince ayrıntısına kadar döker.)

4. Ağ Trafiği ve Zararlı Bağlantıların İzlenmesi

Wireshark veya Tshark ile paket analizi yapmadan önce, sistemin kendi güvenlik duvarı veya ağ günlükleri üzerinden de şüpheli bağlantılar tespit edilebilir.

Ağ Engellemelerini (Firewall Drops) İzleme: Eğer ufw veya iptables loglama yapıyorsa (çekirdek loglarına düşer), içeriden dışarıya yapılmaya çalışılan şüpheli bağlantı (örneğin bir C2 sunucusuna) engellemelerini görebilirsiniz:

Bash
grep "BLOCK" /var/log/kern.log

VEYA

Bash
sudo journalctl -k | grep "IN="

5. Gelişmiş Tehdit Avcılığı: Auditd Entegrasyonu

Klasik journalctl veya syslog belirli bir noktaya kadar yeterlidir. Tam bir siber güvenlik izlemesi için Pardus'ta auditd (Linux Audit Daemon) devrede olmalıdır. auditd yapılandırıldığında:

  • Belirli kritik dosyaların (örneğin /etc/shadow veya /etc/passwd) kimler tarafından okunduğunu,

  • Hangi kullanıcının hangi bash komutlarını çalıştırdığını,

  • Yetkisiz dosya değiştirme girişimlerini doğrudan /var/log/audit/audit.log dizinine yazar.

Öğrenciler veya ekipler için tasarlanan Mavi Takım simülasyonlarında, bu logların tek bir merkezden anlık olarak analiz edilmesi saldırıya müdahale süresini (Incident Response) ciddi şekilde kısaltır.

Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu