Ana içeriğe geç

Sistem Olay Denetimi: İzleme ve Güvenlik Analizi

Bu makalede

Linux sisteminin güvenliğini ve istikrarını sağlamak, tehditleri önlemekten daha fazlasını gerektirir—olayları tespit etmek ve araştırmak esastır. Sistem denetimi saldırıları engellemez, ancak ihlali kaydetmenizi, kaynağını ve kapsamını belirlemenizi ve analiz için kanıt toplamanızı sağlar. Çoğu dağıtımda ana denetim aracı *****auditd****** deamon'dur. Çekirdek çağrılarını (sistem çağrıları) izler, kullanıcı ve süreç eylemlerini günlüğe kaydeder ve olayları yapılandırılmış günlüklerde saklar.

auditd Nasıl Çalışır

Denetim sistemi, sistem çağrısına girerken (entry) veya çıkarken (exit) tetiklenen tetikleyiciler aracılığıyla çekirdeğe bağlanır. Kurallar, hangi çağrıların, dosyaların, kullanıcıların veya süreçlerin izleneceğini belirler. Tüm yakalanan olaylar /var/log/audit/audit.log dosyasına yazılır.

auditd ile şunları izleyebilirsiniz: - Sistem ve hizmet başlatma/durdurma
- /etc/passwd, /etc/shadow, SSH yapılandırmaları vb. gibi kritik dosyalar üzerindeki işlemler
- Dosya izinleri, sahipliği veya özniteliklerdeki değişiklikler
- Dosyaların, dizinlerin ve bağlantıların oluşturulması/silmesi
- Dosya sistemi bağlama
- Ağ bağlantıları ve yapılandırma değişiklikleri
- Belirli kullanıcıların veya süreçlerin eylemleri

Kurulum ve Bileşenler

CentOS/RHEL'de audit paketi varsayılan olarak kurulur.
Debian/Ubuntu'da kurmak için:

sudo apt-get install auditd

Ana yardımcı programlar:

Araç Amaç
auditctl Denetim kurallarını ve durumunu yönet (dinamik yapılandırma)
ausearch Çeşitli kriterlere göre (kullanıcı, dosya, sistem çağrısı vb.) günlükleri ara
aureport Özet raporlar oluştur (dosya, kullanıcı, zaman vb.)
autrace Bir sürecin sistem çağrılarını izle (strace'e benzer, ancak denetimle entegre)

Arka plan yapılandırması /etc/audit/auditd.conf dosyasında bulunur (tamponlar, taşma davranışı, günlük döndürme vb.). Varsayılan ayarlar genellikle çoğu senaryoya uygundur.

Denetim Kuralları Yapılandırma

Kurallar dinamik olarak auditctl ile veya statik olarak /etc/audit/audit.rules içinde ayarlanabilir.

Temel Sözdizimi:

sudo auditctl -a <list>,<action> -S <syscall> -F <filter>
  • Olay listeleri:
    task — süreç oluşturma
    entry / exit — syscall giriş/çıkış (en yaygın)
    user — kullanıcı alanı olayları
    exclude — hariç tutmalar
  • Eylemler:
    always — olayı günlüğe kaydet
    never — yok say
  • Örnekler:
# /etc'de yazma veya öznitelik değişiklikleriyle dosya açılışlarını izle
sudo auditctl -a task,always -S open -F dir=/etc -F auid>=1000 -F perm=wa

# Aynı, ancak dosya/dizinler için daha basit ve etkili
sudo auditctl -a task,always -S open -F dir=/etc -F perm=wa

# Belirli dosya
sudo auditctl -a task,always -F path=/etc/passwd -F perm=wa

Not

-p wa filtresi write ve attribute değişikliklerini ifade eder.

Kalıcı Kurallar — /etc/audit/audit.rules içinde

Format, auditctl komutlarıyla aynı, ancak komut kendisi olmadan:

# Örnek girişler (satır başına bir)
-a task,always -S open -F dir=/etc -F perm=wa
-a task,always -S open -F path=/etc/passwd -F perm=wa

Dosyayı düzenledikten sonra değişiklikleri uygula:

sudo systemctl restart auditd

Log Analizi

Günlükler /var/log/audit/ içinde saklanır. Ana araçlar aureport ve ausearch'dir.

aureport — Özetler ve Raporlar

# Dosya erişim raporu
sudo aureport -f

# Sadece son 10 dakika (insan‑okunur adlar)
sudo aureport -f -i --start recent

# Dosya bazında özet (her birinin kaç kez erişildiği)
sudo aureport -f --summary

# Belirli bir dönem için rapor
sudo aureport --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f

# Kolay zaman işaretleri: bugün, dün, bu hafta, yakın, şimdi
sudo aureport -f --start today --summary

Şüpheli erişim için arama örneği:

sudo aureport -f -i --start today | grep /etc/passwd

ausearch — Detaylı Olay Analizi

# Olay Kimliği (aureport) ile  
sudo ausearch -a 123456  

# Kullanıcı (UID) ile  
sudo ausearch -ui 1001 -i  

# Çalıştırılabilir Dosya ile  
sudo ausearch -x /usr/bin/sudo -i  

# Sistem Çağrısı ile  
sudo ausearch -sc openat -i  

# Hizmet (örneğin, cron) ile  
sudo ausearch -tm cron -i  

# Zaman Sınırıyla  
sudo ausearch --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f /etc/passwd

Not

The -i (or --interpret) bayrağı UIDs/GIDs ve syscall kodlarını insan‑okunur adlarla değiştirir.