Linux sunucularda güvenlik denetimi, özellikle kritik yapılandırma dosyalarının yetkisiz değişikliklere karşı korunması büyük önem taşır. Bu noktada auditd, Linux çekirdeğinin sunduğu güçlü bir denetim mekanizmasıdır. Dosya değişikliklerini, sistem çağrılarını ve kullanıcı eylemlerini detaylı şekilde kaydeder. Bu rehberde, auditd kullanarak dosya değişiklik izleme adımlarını adım adım anlatacağız.
Auditd Nedir ve Neden Önemlidir?
auditd, Linux sistemlerde denetim kayıtlarını toplayan ve yöneten bir hizmettir. Özellikle /etc/passwd, /etc/shadow, /etc/ssh/sshd_config gibi hassas dosyalardaki değişiklikleri izlemek için idealdir. Bir saldırganın bu dosyaları değiştirmesi durumunda auditd sayesinde olayı tespit edebilir, kimin, ne zaman ve nasıl bir değişiklik yaptığını görebilirsiniz. Bu, güvenlik ihlallerinin erken fark edilmesini sağlar.
Kurulum ve Başlangıç Yapılandırması
Çoğu Linux dağıtımında auditd varsayılan olarak yüklüdür. Eğer yoksa aşağıdaki komutla kurabilirsiniz:
sudo apt install auditd audispd-plugins # Debian/Ubuntu için
sudo yum install audit audit-libs # RHEL/CentOS için
Kurulumdan sonra hizmeti başlatın ve sistemle birlikte otomatik çalışmasını sağlayın:
sudo systemctl enable auditd
sudo systemctl start auditd
Artık auditd çalışıyor. Temel yapılandırma dosyası /etc/audit/auditd.conf‘dur. Burada log boyutu, saklama süresi gibi ayarları değiştirebilirsiniz.
Dosya Değişiklik İzleme Kuralları
Kuralları /etc/audit/rules.d/ dizini altına .rules uzantılı dosyalar olarak ekleyin. Örneğin, /etc/passwd dosyasındaki değişiklikleri izlemek için:
sudo nano /etc/audit/rules.d/watch-passwd.rules
İçine şu kuralı yazın:
-w /etc/passwd -p wa -k passwd_changes
Bu kuralda: -w izlenecek dosyayı, -p wa yazma ve öznitelik değişikliklerini (write, attribute), -k ise anahtar kelimeyi belirtir. Benzer şekilde /etc/shadow için:
-w /etc/shadow -p wa -k shadow_changes
Kuralları yüklemek için auditd’i yeniden başlatın:
sudo systemctl restart auditd
Ayrıca belirli bir dizini de izleyebilirsiniz. Örneğin:
-w /etc/ssh -p wa -k ssh_config_changes
Logları Görüntüleme ve Analiz
Loglar /var/log/audit/audit.log dosyasında tutulur. ausearch ve aureport araçlarıyla sorgulama yapabilirsiniz. Örneğin, passwd_changes anahtar kelimesine ait kayıtları görmek için:
sudo ausearch -k passwd_changes
Çıktı oldukça detaylıdır; her olay için tip (syscall), kullanıcı (uid), işlem (pid), zaman damgası ve sonuç (success/fail) bilgisi bulunur. Örnek bir satır:
type=SYSCALL msg=audit(1609459200.123:456): arch=c000003e syscall=2 success=yes exit=0 ... uid=1000 comm="vim" ... key="passwd_changes"
Bu, UID 1000 kullanıcısının vim ile dosyayı açtığını gösterir. aureport ile özet raporlar alabilirsiniz:
sudo aureport -k -i
Örnek Senaryolar
1. Yetkisiz SSH Yapılandırma Değişikliği: Bir saldırgan /etc/ssh/sshd_config dosyasını değiştirip kök oturum açmaya izin verirse, auditd sayesinde bu değişiklik anında kaydedilir. ausearch -k ssh_config_changes ile olayı inceleyebilirsiniz.
2. Sistem İkili Dosyalarının İzlenmesi: /usr/bin veya /usr/sbin gibi kritik yollar da izlenebilir. Örneğin:
-w /usr/bin -p wa -k binary_changes
Ancak bu çok fazla log üretebilir; bu nedenle yalnızca belirli dosyaları izlemek daha mantıklıdır.
3. Log Rotasyonu ve Saklama: auditd.conf dosyasında max_log_file ve num_logs parametreleriyle log boyutunu ve saklanacak dosya sayısını ayarlayabilirsiniz. Örneğin, 50 MB boyutunda 5 adet log dosyası tutmak için:
max_log_file = 50
num_logs = 5
Sonuç
auditd, Linux sunucularda dosya değişiklik izleme için vazgeçilmez bir araçtır. Doğru kurallarla saldırıları erken tespit edebilir, adli analizler için gerekli kanıtları sağlayabilirsiniz. Unutmayın, logların düzenli olarak incelenmesi gerekir. Otomatik uyarı sistemleri (örneğin, audispd ile syslog’a yönlendirme) kurarak süreci daha etkin hale getirebilirsiniz. HostingServer.com.tr olarak sunucu güvenliğinizi artırmak için auditd kullanımını öneriyoruz.