Auditd ile Linux Sunucu Güvenlik Denetimi Rehberi
Auditd ile Linux Sunucu Güvenlik Denetimi Rehberi
Son Güncelleme: Haziran 2026
Auditd, Linux sunucularda dosya erişimleri, yetki yükseltme denemeleri, kullanıcı oturumları, sistem çağrıları ve kritik yapılandırma değişikliklerini izlemek için kullanılan güçlü bir güvenlik denetimi aracıdır. Özellikle VPS, VDS, kiralık sunucu ve kurumsal hosting altyapılarında olay takibi, uyumluluk ve ihlal analizi için düzenli audit kayıtları büyük önem taşır.
Bu rehberde auditd kurulumu, temel yapılandırma, izleme kuralları, log analizi, performans ayarları ve pratik güvenlik senaryoları adım adım ele alınmaktadır. Amaç, Linux sunucunuzda yalnızca log toplamak değil, aynı zamanda hangi olayın ne zaman, hangi kullanıcı tarafından ve hangi işlemle gerçekleştiğini anlamanızı sağlamaktır.
İçindekiler
- Auditd Nedir?
- Auditd Ne İşe Yarar?
- Linux Sunucuda Auditd Kurulumu
- Temel Auditd Yapılandırması
- Audit Kuralları Nasıl Yazılır?
- Pratik İzleme Senaryoları
- Audit Log Analizi
- Performans ve Güvenlik İpuçları
- Yaygın Sorunlar ve Çözümleri
- Sıkça Sorulan Sorular
- Sonuç
Auditd Nedir?
Auditd, Linux Audit Framework üzerinde çalışan ve çekirdek seviyesindeki güvenlik olaylarını kullanıcı alanında kayıt altına alan bir daemon yani arka plan servisidir. Audit altyapısı, Linux çekirdeğinin olay üretme yeteneğini kullanır; auditd ise bu olayları alır, işler ve genellikle /var/log/audit/audit.log dosyasına yazar.
Standart sistem logları çoğu zaman bir servisin hata verdiğini, bir bağlantının başarısız olduğunu veya bir uygulamanın yeniden başlatıldığını gösterebilir. Ancak auditd daha ayrıntılıdır. Örneğin /etc/passwd dosyasını hangi kullanıcının açtığını, sudo ile hangi komutun çalıştırıldığını, belirli bir dosyanın silinip silinmediğini veya sistem saatinin değiştirilip değiştirilmediğini takip edebilirsiniz.
Bu yönüyle auditd, yalnızca saldırı sonrası inceleme için değil, aynı zamanda proaktif güvenlik izleme, mevzuat uyumluluğu, erişim kontrol denetimi ve sistem yöneticisi faaliyetlerinin kayıt altına alınması için de kullanılır. Linux tabanlı Sanal Sunucu, Kiralık Sunucu ve Linux Hosting altyapılarında audit kayıtları, yönetim süreçlerini daha şeffaf hale getirir.
Auditd Ne İşe Yarar?
Auditd, Linux sunucularda güvenlik açısından kritik kabul edilen olayların detaylı şekilde kaydedilmesini sağlar. Burada temel amaç, sistemde meydana gelen önemli değişiklikleri sonradan analiz edilebilir hale getirmektir. Özellikle çok kullanıcılı sunucularda, yönetici erişimi bulunan ekiplerde veya müşteriye özel izole sistemlerde auditd ciddi bir görünürlük kazandırır.
- Dosya bütünlüğü takibi: Kritik dosyaların okunması, yazılması, silinmesi veya izinlerinin değiştirilmesi izlenebilir.
- Kullanıcı faaliyet denetimi: Oturum açma, oturum kapatma, kimlik değiştirme ve yetki yükseltme olayları kayıt altına alınabilir.
- Sistem çağrısı izleme: Belirli sistem çağrıları yani kernel seviyesindeki işlem talepleri takip edilebilir.
- Uyumluluk desteği: ISO 27001, PCI DSS, KVKK süreçleri veya iç denetim politikalarında kanıt niteliğinde log üretilebilir.
- İhlal sonrası analiz: Şüpheli bir dosya değişikliği, yetkisiz erişim veya beklenmeyen kullanıcı hareketi geriye dönük incelenebilir.
Auditd, klasik antivirüs veya güvenlik duvarı yerine geçen bir araç değildir. Bunun yerine, olay denetimi ve kanıt üretimi görevini üstlenir. Örneğin bir saldırgan root yetkisi elde etmişse, auditd doğru yapılandırıldığında saldırganın hangi dosyalara eriştiğini, hangi kullanıcıları oluşturduğunu veya hangi komutları çalıştırdığını gösterebilir.
| Özellik | Standart Sistem Logları | Auditd Logları |
|---|---|---|
| Kapsam | Servis, uygulama ve sistem mesajları | Dosya erişimi, sistem çağrısı, kullanıcı ve yetki olayları |
| Detay Seviyesi | Genellikle olay sonucu odaklıdır | Kullanıcı, işlem, pid, dosya yolu ve anahtar bilgisi içerir |
| Uyumluluk | Temel kayıt için yeterli olabilir | Denetim ve regülasyon süreçleri için daha uygundur |
| Kural Tabanlı İzleme | Sınırlıdır | Özel audit kuralları ile ayrıntılı yapılandırılabilir |
Linux Sunucuda Auditd Kurulumu
Auditd birçok kurumsal Linux dağıtımında paket yöneticisi üzerinden kolayca kurulabilir. Bazı sistemlerde varsayılan olarak kurulu gelebilir; ancak servis etkin olmayabilir. Kurulum öncesinde root veya sudo yetkisine sahip olmanız gerekir.
Ubuntu ve Debian Üzerinde Kurulum
Ubuntu veya Debian tabanlı bir sunucuda auditd kurulumu için aşağıdaki komutları kullanabilirsiniz:
sudo apt update
sudo apt install auditd audispd-plugins -y
sudo systemctl enable auditd
sudo systemctl start auditd
sudo systemctl status auditd
audispd-plugins paketi, audit olaylarının farklı hedeflere yönlendirilmesi veya ek işlem hatlarına aktarılması için kullanılır. Basit kullanımda zorunlu olmasa da merkezi loglama, SIEM entegrasyonu veya özel denetim akışları için faydalıdır.
RHEL, AlmaLinux ve Rocky Linux Üzerinde Kurulum
RHEL tabanlı sistemlerde auditd genellikle varsayılan olarak bulunur. Yine de kurulum ve servis kontrolü için şu komutlar kullanılabilir:
sudo dnf install audit audit-libs -y
sudo systemctl enable auditd
sudo systemctl start auditd
sudo systemctl status auditd
Eski sistemlerde dnf yerine yum kullanılabilir:
sudo yum install audit audit-libs -y
Servis Durumunu Doğrulama
Kurulumdan sonra auditd servisinin çalıştığını doğrulamak için aşağıdaki komutları çalıştırabilirsiniz:
sudo systemctl is-active auditd
sudo auditctl -s
auditctl -s çıktısında enabled, backlog, lost ve backlog_limit gibi bilgiler görülür. lost değerinin artması, sistemin audit olaylarını kaybettiğini gösterebilir ve performans ayarlarının gözden geçirilmesi gerekir.
Temel Auditd Yapılandırması
Auditd ana yapılandırma dosyası genellikle /etc/audit/auditd.conf yolunda bulunur. Bu dosya log dosyasının konumunu, log rotasyon davranışını, disk dolduğunda ne yapılacağını ve olay yazma yöntemini belirler.
Önemli auditd.conf Parametreleri
| Parametre | Açıklama | Öneri |
|---|---|---|
log_file |
Audit log dosyasının yolunu belirler. | /var/log/audit/audit.log varsayılanı genellikle uygundur. |
max_log_file |
Tek bir audit log dosyasının MB cinsinden maksimum boyutudur. | Yoğun sistemlerde 100 MB veya üzeri değerlendirilebilir. |
num_logs |
Saklanacak eski log dosyası sayısını belirler. | Disk kapasitesine göre 10 veya daha yüksek seçilebilir. |
max_log_file_action |
Log dosyası maksimum boyuta ulaşınca yapılacak işlemdir. | ROTATE çoğu sunucu için uygundur. |
space_left_action |
Disk alanı azaldığında alınacak aksiyondur. | SYSLOG veya kritik sistemlerde EMAIL kullanılabilir. |
Örnek bir temel yapılandırma aşağıdaki gibi olabilir:
log_file = /var/log/audit/audit.log
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 100
num_logs = 10
max_log_file_action = ROTATE
space_left = 500
space_left_action = SYSLOG
disk_full_action = SUSPEND
disk_error_action = SUSPEND
Yapılandırma değişikliklerinden sonra servisi yeniden başlatmak için dağıtıma göre aşağıdaki komut kullanılabilir:
sudo systemctl restart auditd
Bazı Linux dağıtımlarında auditd servisi özel güvenlik nedeniyle systemctl restart komutuyla yeniden başlatılamayabilir. Bu durumda aşağıdaki komut tercih edilebilir:
sudo service auditd restart
Audit Kuralları Nasıl Yazılır?
Auditd kuralları, hangi olayların takip edileceğini belirler. Geçici kurallar auditctl komutu ile eklenir ve sistem yeniden başlatıldığında kaybolur. Kalıcı kurallar ise genellikle /etc/audit/rules.d/ dizini altındaki .rules dosyalarına yazılır.
Geçici Kural Ekleme
Örneğin /etc/passwd dosyasındaki yazma ve izin değişikliklerini izlemek için şu komut kullanılabilir:
sudo auditctl -w /etc/passwd -p wa -k user_account_changes
Bu komutta -w izlenecek dosyayı, -p izin türlerini, -k ise arama ve raporlama sırasında kullanılacak anahtar kelimeyi belirtir.
- r: Okuma işlemlerini izler.
- w: Yazma işlemlerini izler.
- x: Çalıştırma işlemlerini izler.
- a: Dosya özniteliği yani izin ve sahiplik değişikliklerini izler.
Kalıcı Kural Oluşturma
Kalıcı audit kuralları için özel bir dosya oluşturabilirsiniz:
sudo nano /etc/audit/rules.d/corelux-hardening.rules
Aşağıdaki örnek kurallar, temel güvenlik denetimi için başlangıç noktası olarak kullanılabilir:
-w /etc/passwd -p wa -k user_account_changes
-w /etc/shadow -p wa -k user_password_changes
-w /etc/group -p wa -k group_changes
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/ssh/sshd_config -p wa -k ssh_config_changes
-w /var/log/auth.log -p wa -k auth_log_changes
-w /var/log/secure -p wa -k secure_log_changes
Kuralları yüklemek için aşağıdaki komutu çalıştırabilirsiniz:
sudo augenrules --load
sudo auditctl -l
auditctl -l komutu, aktif audit kurallarını listeler. Böylece yazdığınız kuralların sisteme yüklendiğini doğrulayabilirsiniz.
Sistem Çağrısı Kuralları
Dosya izleme kuralları çoğu senaryo için yeterli olsa da, gelişmiş denetimde sistem çağrısı yani system call tabanlı kurallar da kullanılır. Örneğin 64 bit sistemlerde kullanıcı ve grup kimliği değiştirme çağrılarını izlemek için şu kural kullanılabilir:
-a always,exit -F arch=b64 -S setuid -S setgid -S setreuid -S setregid -k identity_changes
Bu tür kurallar güçlüdür ancak dikkatli kullanılmalıdır. Çok geniş kapsamlı sistem çağrısı takibi, yüksek trafikli sunucularda log hacmini artırabilir ve performansı etkileyebilir.
Pratik İzleme Senaryoları
Auditd en verimli şekilde, belirli risk senaryoları için hedefli kurallar yazıldığında kullanılır. Aşağıdaki örnekler, Linux sunucu yöneticilerinin günlük operasyonlarda en sık ihtiyaç duyduğu denetim alanlarını kapsar.
SSH Yapılandırma Değişikliklerini İzleme
SSH servisi sunucu erişiminin temel noktasıdır. sshd_config dosyasında yapılacak hatalı veya kötü niyetli bir değişiklik, root girişini açabilir ya da güvenli kimlik doğrulama politikasını zayıflatabilir.
-w /etc/ssh/sshd_config -p wa -k sshd_config_watch
Sudo Yetkilerini Takip Etme
/etc/sudoers ve /etc/sudoers.d/ altındaki değişiklikler, kimlerin yönetici yetkisi kullanabileceğini belirler. Bu nedenle mutlaka izlenmelidir.
-w /etc/sudoers -p wa -k sudo_policy
-w /etc/sudoers.d/ -p wa -k sudo_policy
Web Dizinlerinde Şüpheli Dosya Oluşturma
Web sunucularında zararlı dosya yükleme, shell dosyası bırakma veya beklenmeyen PHP dosyaları oluşturma gibi olaylar sık karşılaşılan güvenlik riskleridir. Örnek olarak /var/www dizinindeki yazma ve öznitelik değişiklikleri izlenebilir:
-w /var/www/ -p wa -k web_content_changes
Paylaşımlı hosting, bayi hosting veya uygulama sunucusu senaryolarında bu kural oldukça faydalıdır. Daha kapsamlı ve yönetilebilir altyapılar için Hosting, Linux Bayi Hosting veya Uygulama Sunucuları çözümleri değerlendirilebilir.
Kritik Komutların Çalıştırılmasını İzleme
Bazı komutların çalıştırılması doğrudan risk anlamına gelmez; fakat güvenlik analizi için önemlidir. Örneğin useradd, usermod, passwd ve chattr komutları izlenebilir.
-w /usr/sbin/useradd -p x -k user_mgmt_cmd
-w /usr/sbin/usermod -p x -k user_mgmt_cmd
-w /usr/bin/passwd -p x -k password_cmd
-w /usr/bin/chattr -p x -k file_attribute_cmd
Sistem Saati Değişikliklerini İzleme
Sistem saatinin değiştirilmesi log bütünlüğünü etkileyebilir. Saldırganlar olay sırasını gizlemek için zamanı değiştirmeye çalışabilir. Bu nedenle saat değişikliği çağrıları izlenebilir:
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-w /etc/localtime -p wa -k time_change
Audit Log Analizi
Auditd tarafından üretilen ham loglar ayrıntılıdır ancak ilk bakışta karmaşık görünebilir. Bu nedenle auditd ile birlikte gelen ausearch ve aureport araçları analiz sürecini kolaylaştırır.
Belirli Anahtara Göre Arama
Bir kuralda belirlediğiniz -k anahtarına göre arama yapmak için ausearch kullanılabilir:
sudo ausearch -k sshd_config_watch
Daha okunabilir çıktı için -i parametresi eklenebilir:
sudo ausearch -k sshd_config_watch -i
Kullanıcıya Göre Olay Arama
Belirli bir kullanıcı kimliği ile ilişkili olayları aramak için aşağıdaki komut kullanılabilir:
sudo ausearch -ua 1000 -i
Bu yöntem, özellikle bir kullanıcının hangi komutları çalıştırdığı veya hangi dosyaları değiştirdiği araştırılırken yararlıdır.
Rapor Üretme
aureport, audit loglarından özet rapor üretmek için kullanılır. Örneğin oturum açma raporu için:
sudo aureport -l
Yetkilendirme olayları için:
sudo aureport -au
Dosya olayları için:
sudo aureport -f
Örnek Olay İnceleme Akışı
Bir web dizininde beklenmeyen dosya oluştuğunu varsayalım. Önce ilgili anahtarla arama yapılır:
sudo ausearch -k web_content_changes -i
Çıktıda uid, auid, pid, comm, exe ve dosya yolu bilgileri incelenir. comm alanı işlemin adını, exe alanı çalıştırılan dosyanın tam yolunu, auid alanı ise oturumu başlatan kullanıcıyı anlamaya yardımcı olur. Böylece işlemin bir web sunucusu kullanıcısı, bir yönetici hesabı veya beklenmeyen bir süreç tarafından mı yapıldığı anlaşılabilir.
Performans ve Güvenlik İpuçları
Auditd güçlü bir denetim aracıdır; ancak yanlış veya aşırı geniş kurallar performans, disk kullanımı ve analiz edilebilirlik açısından sorun oluşturabilir. İyi bir audit stratejisi, yüksek sinyal ve düşük gürültü prensibine dayanmalıdır.
- Hedefli kural yazın: Tüm dosya sistemini izlemek yerine kritik dosyaları, dizinleri ve komutları seçin.
- Anahtar kullanımını standartlaştırın: Her kuralda anlamlı
-kanahtarı kullanın. Örneğinssh_config_changes,sudo_policyveyaweb_content_changes. - Log rotasyonunu planlayın: Audit logları hızla büyüyebilir.
max_log_filevenum_logsdeğerlerini disk kapasitesine göre ayarlayın. - Merkezi loglama kullanın: Kritik sistemlerde audit loglarını yalnızca yerel diskte tutmak yeterli değildir. Uzak log sunucusu veya SIEM çözümü değerlendirilebilir.
- Disk doluluk aksiyonlarını belirleyin: Disk dolduğunda auditd davranışının ne olacağını önceden planlayın. Üretim sistemlerinde plansız servis durması riskini dikkate alın.
- Kuralları test edin: Yeni kural ekledikten sonra bilinçli bir test olayı oluşturun ve
ausearchile kayıt oluştuğunu doğrulayın.
Yüksek trafikli e-ticaret siteleri, API servisleri, kurumsal paneller ve çok kullanıcılı uygulamalarda audit logları düzenli yedeklenmelidir. Bu noktada Yedekleme Hizmeti kullanmak, güvenlik olaylarında kanıt niteliğindeki kayıtların kaybolmasını önlemeye yardımcı olabilir.
Backlog Limit Ayarı
Audit olayları çok hızlı oluştuğunda çekirdek tarafında bekleyen olay kuyruğu dolabilir. Bu durumda olay kaybı yaşanabilir. Geçici olarak backlog limitini artırmak için:
sudo auditctl -b 8192
Kalıcı yapılandırma için audit kurallarının başına aşağıdaki satır eklenebilir:
-b 8192
Immutable Audit Kuralları
Yüksek güvenlik gerektiren ortamlarda audit kuralları değiştirilemez hale getirilebilir. Bunun için kural dosyasının sonuna şu satır eklenir:
-e 2
-e 2 audit yapılandırmasını kilitler. Bu ayardan sonra kuralları değiştirmek için sistemin yeniden başlatılması gerekebilir. Bu nedenle üretim sistemlerinde dikkatli uygulanmalıdır.
Yaygın Sorunlar ve Çözümleri
Auditd kullanırken karşılaşılan sorunların büyük bölümü kural sözdizimi, servis durumu, log rotasyonu veya aşırı log üretimi ile ilgilidir. Aşağıdaki kontroller, pratik sorun giderme sürecinde yardımcı olur.
Auditd Servisi Çalışmıyor
Öncelikle servis durumunu kontrol edin:
sudo systemctl status auditd
sudo journalctl -u auditd --no-pager
Yapılandırma hatası varsa journalctl çıktısında ilgili satırlar görülebilir. Kural dosyalarında yanlış parametre, eksik dosya yolu veya desteklenmeyen sistem çağrısı kullanımı servis yüklemesini engelleyebilir.
Kurallar Yüklenmiyor
Kalıcı kuralları yeniden oluşturmak ve yüklemek için:
sudo augenrules --check
sudo augenrules --load
sudo auditctl -l
augenrules --check, kural dosyalarında değişiklik olup olmadığını kontrol eder. Kurallar aktif listede görünmüyorsa dosya uzantısının .rules olduğundan ve doğru dizinde bulunduğundan emin olun.
Log Dosyası Çok Hızlı Büyüyor
Bu durum genellikle çok geniş kapsamlı kurallardan kaynaklanır. Örneğin kök dizini / üzerinde yazma izlemesi yapmak, yoğun sistemlerde aşırı log üretir. Kuralları daraltın ve yalnızca kritik dizinleri izleyin.
sudo auditctl -l
sudo aureport --summary
Olay Kaybı Yaşanıyor
auditctl -s çıktısında lost değeri artıyorsa backlog limiti, disk yazma performansı ve kural yoğunluğu gözden geçirilmelidir.
sudo auditctl -s
Yoğun üretim sistemlerinde daha güçlü disk altyapısı, optimize edilmiş kural seti ve merkezi loglama planı gerekir. Kritik iş yükleri için Türkiye Kiralık Sunucu veya kaynak izolasyonu sunan Türkiye VDS Sunucu çözümleri tercih edilebilir.
Sıkça Sorulan Sorular
Auditd antivirüs veya güvenlik duvarı yerine geçer mi?
Hayır. Auditd bir antivirüs, WAF veya firewall değildir. Görevi güvenlik olaylarını ayrıntılı şekilde kayıt altına almak ve denetim izi oluşturmaktır. En iyi sonuç için güvenlik duvarı, erişim kontrolü, güncelleme yönetimi ve yedekleme stratejileriyle birlikte kullanılmalıdır.
Auditd performansı etkiler mi?
Doğru yapılandırıldığında etkisi genellikle sınırlıdır. Ancak çok geniş kapsamlı sistem çağrısı kuralları, tüm dosya sistemini izleyen kurallar veya yüksek frekansta olay üreten dizinler performansı ve disk kullanımını olumsuz etkileyebilir. Bu nedenle hedefli ve ölçülebilir kurallar yazılmalıdır.
Audit logları nerede tutulur?
Varsayılan olarak audit logları /var/log/audit/audit.log dosyasında tutulur. Log konumu /etc/audit/auditd.conf dosyasındaki log_file parametresiyle değiştirilebilir. Kritik sistemlerde bu logların merkezi bir log sunucusuna da aktarılması önerilir.
Auditd ile hangi dosyalar mutlaka izlenmelidir?
Genellikle /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers, /etc/ssh/sshd_config ve web uygulaması dizinleri izlenir. Ancak en doğru liste, sunucunun rolüne göre belirlenmelidir. Veritabanı sunucusu, web sunucusu ve uygulama sunucusu için izlenecek yollar farklı olabilir.
Auditd kayıtları saldırı sonrası incelemede yeterli olur mu?
Auditd önemli kanıtlar sağlayabilir; ancak tek başına her şeyi garanti etmez. Saldırı sonrası inceleme için sistem logları, web sunucusu logları, veritabanı logları, ağ kayıtları, yedekler ve dosya bütünlüğü kontrolleri birlikte değerlendirilmelidir. Auditd bu sürecin güçlü bir parçasıdır.
Kuralları değiştirilmez hale getirmek güvenli midir?
-e 2 ile audit kurallarını immutable yani değiştirilemez hale getirmek güvenliği artırabilir. Ancak bu ayar yönetim esnekliğini azaltır ve değişiklik için yeniden başlatma gerektirebilir. Bu nedenle özellikle üretim ortamlarında test edilmeden uygulanmamalıdır.
Sonuç
Auditd, Linux sunucularda güvenlik denetimi, olay takibi ve ihlal sonrası analiz için vazgeçilmez araçlardan biridir. Kritik dosyaların değişimini izlemek, kullanıcı faaliyetlerini kaydetmek, sistem çağrılarını takip etmek ve uyumluluk süreçleri için kanıt üretmek isteyen sistem yöneticileri için güçlü ve esnek bir çözüm sunar.
En iyi sonuç için auditd kurallarını sunucunun rolüne göre planlamak, gereksiz log üretiminden kaçınmak, log rotasyonunu doğru yapılandırmak ve kritik kayıtları yedeklemek gerekir. Corelux altyapısında Sanal Sunucu, Kiralık Sunucu, Bulut Sunucu ve SSL Sertifikası çözümlerini değerlendirerek güvenli, izlenebilir ve sürdürülebilir bir sunucu mimarisi oluşturabilirsiniz.
Yazar
Boran BAR