Komutları üretim sunucusunda çalıştırmadan önce yedek alın ve mümkünse bir test ortamında deneyin. Yönetim erişiminizi (SSH, panel) kaybetmemek için ayar değişikliklerinde açık bir ikinci oturum bulundurun.
Bu rehberde ne yapacağız?
auditd, Linux çekirdeğinin denetim altyapısını kullanarak kimin hangi dosyaya eriştiğini, hangi komutu çalıştırdığını ve hangi yapılandırmayı değiştirdiğini kaydeden bir hizmettir. Bir güvenlik olayının izini sürmek veya uyumluluk gereksinimlerini karşılamak için auditd ile denetim kaydı tutmak yaygın bir uygulamadır. Bu rehberde auditd kurulumunu, kritik dosyalar için izleme kurallarını, komut izlemeyi ve kayıt sorgulamayı uygulayacaksınız.
Rehber, sunucu güvenliğini artırmak isteyen hosting ve sistem yöneticilerine hitap eder. Tamamlanması yaklaşık 30-40 dakika sürer. Komutlar Debian/Ubuntu için verilmiş, RHEL tabanlı (AlmaLinux, Rocky) farklar ayrıca belirtilmiştir.
Gereksinimler
- Debian, Ubuntu, AlmaLinux veya Rocky Linux sunucu ve sudo yetkisi
- Denetim kayıtları için yeterli disk alanı (/var/log/audit dizini)
- Hangi dosya ve olayları izleyeceğinize dair kısa bir plan
- Kayıtları uzak bir günlük sunucusuna göndermek istiyorsanız, o sunucu bilgileri
Adım adım auditd ile denetim kaydı
1. auditd paketini kurun
# Debian/Ubuntu
sudo apt update && sudo apt install -y auditd audispd-plugins
# RHEL tabanlı
sudo dnf install -y audit
sudo systemctl enable --now auditd
sudo systemctl status auditd2. Kayıt saklama ayarlarını yapın
Denetim kayıtları hızla büyüyebilir. /etc/audit/auditd.conf dosyasında dosya boyutunu ve saklanacak dosya sayısını belirleyin. Aşağıdaki değerler örnektir; sunucunuzun diskine göre ayarlayın.
max_log_file = 50
num_logs = 10
max_log_file_action = ROTATE
space_left_action = SYSLOGDisk dolduğunda sistemi durduran seçenekleri (örneğin HALT) açmadan önce iyi düşünün; bu, uygulamanın çalışmasını bozabilir.
3. Kritik dosyalar için izleme kuralları yazın
Kurallar /etc/audit/rules.d/ dizinindeki .rules dosyalarında tutulur ve açılışta birleştirilerek yüklenir. Aşağıdaki dosya kimlik, sudo ve SSH yapılandırmasına yapılan yazma ve öznitelik değişikliklerini izler. -w izlenecek yolu, -p wa yazma ve öznitelik değişimini, -k ise aramada kullanacağınız etiketi belirtir.
sudoedit /etc/audit/rules.d/50-sunucu.rules-w /etc/passwd -p wa -k kimlik
-w /etc/shadow -p wa -k kimlik
-w /etc/group -p wa -k kimlik
-w /etc/sudoers -p wa -k sudo_degisiklik
-w /etc/sudoers.d/ -p wa -k sudo_degisiklik
-w /etc/ssh/sshd_config -p wa -k ssh_ayar
-w /etc/ssh/sshd_config.d/ -p wa -k ssh_ayar
-w /etc/crontab -p wa -k zamanlanmis
-w /etc/cron.d/ -p wa -k zamanlanmis
-w /etc/hosts -p wa -k ag_ayar4. Komut ve sistem olayı izleme ekleyin
Root yetkisiyle çalıştırılan komutları kaydetmek faydalıdır ancak çok sayıda kayıt üretir. Önce dar bir kuralla başlayın. Aşağıdaki kurallar root komutlarını, zaman ayarı değişikliklerini ve yetkisiz erişim denemelerini izler; bunları aynı kural dosyasının sonuna ekleyin.
-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=unset -k root_komut
-a always,exit -F arch=b64 -S adjtimex,settimeofday,clock_settime -k zaman_degisiklik
-a always,exit -F arch=b64 -S open,openat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k yetkisiz_erisimNot: Sunucunuz 32 bit sistem çağrılarını da destekliyorsa aynı kuralların arch=b32 karşılıklarını ekleyin. Kural söz diziminden emin değilseniz man audit.rules sayfasına bakın. execve kuralı yoğun sunucularda büyük hacim üretir; disk ve performans etkisini izleyerek ilerleyin.
5. Kuralları yükleyin
Kural dosyalarını birleştirip çekirdeğe yükleyin ve listeleyin. RHEL tabanlı sistemlerde auditd, systemctl ile yeniden başlatılmaya izin vermeyebilir; kuralları yüklemek için augenrules --load yeterlidir.
sudo augenrules --check
sudo augenrules --load
sudo auditctl -l
sudo auditctl -s6. Kuralları test edin
Gerçek sistem dosyalarını değiştirmeden denemek için geçici bir izleme kuralı ekleyin, dosyayı değiştirin ve olayı arayın.
sudo auditctl -w /tmp/audit-deneme -p wa -k deneme
sudo touch /tmp/audit-deneme
echo test | sudo tee -a /tmp/audit-deneme
sudo ausearch -k deneme -i
sudo auditctl -W /tmp/audit-deneme -p wa -k deneme7. Kayıtları sorgulayın ve raporlayın
ausearch ayrıntılı arama, aureport ise özet rapor sunar. -i seçeneği kullanıcı ve sistem çağrısı numaralarını okunur adlara çevirir.
sudo ausearch -k kimlik -i --start today
sudo ausearch -k ssh_ayar -i
sudo aureport --summary
sudo aureport -au --failedKuralların yeniden başlatmadan sonra bile kalıcı olması için bu dosya zaten rules.d dizinindedir. İsterseniz en son okunan ayrı bir dosyaya (örneğin 99-finalize.rules) -e 2 yazarak kuralları kilitleyebilirsiniz; bu durumda değişiklik için yeniden başlatma gerekir. Önce kuralları iyice test etmeden bu ayarı kullanmayın.
Doğrulama
Denetimin çalıştığını şu şekilde kanıtlayın:
sudo systemctl is-active auditd
sudo auditctl -l
sudo auditctl -s
sudo ausearch -k deneme -iis-active çıktısı active olmalı, auditctl -s çıktısında enabled 1 (kilitliyse 2) görünmelidir. auditctl -l yazdığınız kuralları listelemelidir. Test adımında oluşturduğunuz geçici dosya için ausearch bir olay kaydı göstermelidir; kaydın içinde dosya yolu, işlemi yapan kullanıcı ve komut bilgileri yer alır.
Sık karşılaşılan sorunlar
- Kurallar yüklenmiyor:
augenrules --checkhata verir mi bakın. Söz dizimi hataları genellikle eksik parametre veya yanlış alan adından kaynaklanır. - Disk hızla doluyor:
execvegibi geniş kurallar çok kayıt üretir. Kuralı daralttıktan sonramax_log_filevenum_logsdeğerlerini ayarlayın. - RHEL'de systemctl restart auditd hata veriyor: Bu sistemlerde auditd için
service auditd restartkullanılır; kural yüklemek içinse restart gerekmez. - Kayıtlar okunamıyor: Çıktıyı
-iile çalıştırın ve zaman aralığını--start todaygibi daraltın. - Çok fazla gürültü: Sistem hizmetlerinin ürettiği olayları
auid!=unsetfiltresiyle ve etiketlerle sınırlayın.
Güvenlik ve bakım notları
- Denetim kayıtlarını (/var/log/audit) yalnızca root okuyabilmelidir; izinleri değiştirmeyin
- Kayıtları saldırgan tarafından silinmeye karşı uzak bir günlük sunucusuna iletmeyi düşünün
- Kural setini küçük başlatıp gerçek ihtiyaca göre genişletin; her kural performansa etki eder
-e 2ile kural kilidini üretimde, testleri tamamladıktan sonra kullanın- Disk doluluğunu izleyin ve saklama süresini kurumsal gereksinimlerinize göre belirleyin
- Yeni bir kural eklediğinizde hangi etiketle aranacağını belgeleyin
Sık sorulan sorular
auditd sunucuyu yavaşlatır mı?
Dar kurallarla etkisi çok düşüktür. Yoğun sistem çağrısı kuralları (özellikle execve veya tüm open çağrıları) yük ve kayıt hacmi artırır; bu yüzden kuralları ihtiyaca göre daraltın.
Kayıtları ne kadar süre saklamalıyım?
Süre kurumsal politikanıza ve yasal gereksinimlere bağlıdır. Yerelde kısa süre tutup uzak bir günlük sunucusunda uzun süre saklamak yaygın bir yaklaşımdır.
auditd ile syslog aynı şey midir?
Hayır. syslog uygulamaların ürettiği mesajları toplar, auditd ise çekirdek düzeyinde sistem çağrısı ve dosya erişimi gibi olayları kaydeder. İkisi birbirini tamamlar.
İlgili sözlük terimleri
Bu kategorideki diğer rehberler
- Linux’ta disk doluluk sorunu giderme (df, du, inode, silinmiş-açık dosyalar)Linux’ta disk doluluk sorununu adım adım giderin: df ve du ile büyük dizinleri bulun, inode tükenmesini ve silinmiş ama açık dosyaları tespit edip güvenle alan açın.
- systemd servis birimi yazma ve sertleştirme seçenekleriKendi uygulamanız için systemd servis birimi yazın: Unit, Service ve Install bölümleri, otomatik yeniden başlatma, ortam dosyası ve sertleştirme seçenekleri.
- LVM ile disk yönetimi: birim oluşturma, büyütme ve anlık görüntüLVM ile disk yönetimini öğrenin: fiziksel birim, birim grubu ve mantıksal birim oluşturma, çalışırken büyütme, yeni disk ekleme ve anlık görüntü (snapshot) alma.
- journalctl ve günlük dosyalarıyla log analizijournalctl log analizi: servis, zaman ve öncelik filtreleri, başarısız SSH girişlerini bulma, günlük boyutunu yönetme ve kalıcı depolama.