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 userJul 30 09:18 sudo pam_unix authentication failureJul 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-10
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 passwordInvalid userConnection closedToo 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 errjournalctl -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 sudojournalctl | 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:
Olayın gerçekleştiği zaman aralığını belirleyin.
İlgili servisin günlüklerini filtreleyin.
Hata, uyarı ve yetkilendirme kayıtlarını inceleyin.
IP adresleri, kullanıcı adları ve süreç (PID) bilgilerini ilişkilendirin.
Gerekirse günlükleri dışa aktararak SIEM veya adli bilişim araçlarında analiz edin.
En Faydalı journalctl Komutları
| Amaç | Komut |
|---|---|
| Son loglar | journalctl -n 100 |
| Canlı takip | journalctl -f |
| SSH logları | journalctl -u ssh |
| Apache logları | journalctl -u apache2 |
| Docker logları | journalctl -u docker |
| Kernel logları | journalctl -k |
| Bugünkü kayıtlar | journalctl --since today |
| Son 1 saat | journalctl --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 temizleme | journalctl --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):
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
qtuş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.
sudo journalctl -u sshsudo journalctl -u apache2sudo 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.
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):Bashsudo journalctl -u apache2 --since "1 hour ago" # Son 1 saatsudo journalctl -u ssh --since "2023-10-25 14:00:00" # Belirli tarih ve saatsudo journalctl --since today # Bugüne ait loglarBelirli bir zaman aralığını görmek için (
--sinceve--until):Bashsudo 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:
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 Yolu | Açıklama |
| /var/log/syslog | Genel sistem günlükleri. Birçok servisin ve çekirdeğin (kernel) logları buraya düşer. |
| /var/log/auth.log | Sisteme 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).Bashcat /var/log/syslogless: Dosyayı sayfa sayfa okumanızı sağlar. İçinde arama yapmak kolaydır.Bashless /var/log/auth.logtail: Dosyanın sadece en sonunu (varsayılan olarak son 10 satırı) gösterir. Anlık izleme için-fparametresiyle kullanılır.Bashtail -f /var/log/sysloggrepile Arama: Log dosyasının içinde sadece belirli bir kelimeyi (örneğin "error" veya "failed") bulmak için:Bashgrep "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:
sudo journalctl --disk-usage
Eğer log boyutunu küçültmek isterseniz (örneğin sadece son 50 MB'ı tutmak için):
sudo journalctl --vacuum-size=50M
Veya sadece son 1 haftalık logları tutup gerisini silmek için:
sudo journalctl --vacuum-time=1weeks
Özet ve Sorun Giderme Senaryosu
Diyelim ki Pardus'ta SSH servisi çalışmıyor. İzlemeniz gereken yol şudur:
Servisin durumunu kontrol edin:
sudo systemctl status sshSon 50 satır logu inceleyin:
sudo journalctl -u ssh -n 50Eğ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:
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:
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:
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:
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:
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:
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:
grep "BLOCK" /var/log/kern.log
VEYA
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/shadowveya/etc/passwd) kimler tarafından okunduğunu,Hangi kullanıcının hangi
bashkomutlarını çalıştırdığını,Yetkisiz dosya değiştirme girişimlerini doğrudan
/var/log/audit/audit.logdizinine 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