11 Mart 2016

Linux System Auditing Konfigürasyonu

Linux audit sistemi güvenlikle ilişkili bilgileri takip etme imkanı tanır. Audit, sistemde gerçekleşen olaylar hakkında mümkün olan en fazla veriyle log dosyaları oluşturur. Log dosyalarına düşen bu bilgiler güvenlik problemleri için önemli bilgiler içermektedir. Audit kelime manası olarak 'izlemek' anlamına gelmekle birlikte asıl işlevinin sistemimizi daha güvenli bir hale getirmek değil sistemde gerçekleşen olayların kayıtlarını tutarak güvenlik politikalarının ihlali durumunda veya oluşan bir siber suç eyleminde, olayın nasıl gerçekleştiğine dair kanıtlar ve bilgiler sunar. Audit sistemi ile : Dosya erişimleri, Sisteme yapılan çağrılar, Kullanıcılar tarafından çalıştırılan kodlar, Network erişimleri, ve diğer güvenlikle ilişkili olaylar gözlenebilir, kayıt edilebilir ve özet raporları hazırlanabilir.

NOT : Audit sistemi tarafından gözlemlenen verilerin miktarina bağlı olarak sistem performansı etkilenir.




Kernel tarafından gönderilen bilgiler Kullanıcı taraflı çalışan Audit daemon tarafından toplanır ve log dosyalarına yazılır. Default olarak çoğu linux dağıtımında gelen auditd bu amaçla kullanılabilecek user space audit daemon'dır. Mevcut işletim sisteminizde kurulu gelmediyse kurulumu için “apt-get install auditd audispd-plugins” komutu kullanılır. Konfigürasyonu iki dosya aracılığı ile yapılabilir : auditd.conf (daemon'un kendisi) , audit.rules (auditctl programı tarafından kullanılan dosya). Auditctl konfigurasyon için kullanılacak yardımcı bir araçtır.

Audit.conf = log eventlerin nereye ve nasıl kayıt edileceği, full disk durumu, log rotation gibi ayarlar yapmak içindir.

Audit.rules = hangi eventlerin kayıt edileceğini belirlemek için kullanılır. Bu dosyaya manuel olarak kural girilebileceği gibi auditctl aracıda kullanılabilir. Kullanılabilecek komutlar aşağıda anlatılmıştır.

  • Mevcut kuralların Listelenmesi = auditctl -l
  • Bütün kuralların silinmesi = auditctl -D
  • Dosya takibi = auditctl -w path_to_file -p permissions

path_to_file : izlenmesi istenen dosya
permission : r (read), w (write) , x (execute), a(attribute) izinleri



Artık /etc/passwd dosyası üzerinde yapılan tüm işlemler /var/log/audit/audit.log dosyasına yazılır. Ayrıca, ausearch logları takip etmek için auditd daemonu yanında gelen bir araçtır ve '-f' parametresi ile belirtilen dosya hakkındaki loglar kolaylıkla aratılabilir.



Görüldüğü gibi zaman (time), objenin ismi (name), güncel çalışma dizini (cwd), tipi SYSCALL, audit user id (auid), kullanıcının erişmek için kullandığı komut (comm), başarılı olup olmadığı (success), dosya üzerinde işlem yapan binary (exe) görüntülenmiştir.

Kuralların bir dosyadan yüklenmesi = auditctl -R /home/new.rule
Kuralların yedeği alınmasında fayda vardır, yeniden yüklenmesi gerektiğinde bu şekilde tamamı geri yüklenebilir.

System Call kuralları tanımlanması = auditctl -a action,filter -S system_call -F field=value
Action ve Filter eventlerin ne zaman loglanacağını belirlemek için kullanılır.Action always,never gibi değerler alırken filter task, exit, user, exclude değerlerini alabilir. Örneğin

# auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday

Örnekler

* Belirli bir program tarafından yapılan bütün syscall girdilerini kaydetmek
auditctl -a entry,always -S all -F pid=1005
* Belirli bir kullanıcı tarafından açılan dosyaların girdilerini kaydetmek
auditctl -a exit,always -S open -F auid=510
* unseccesfull open call's
auditctl -a exit,always -S open -F success=0
* Dosya üzerindeki değişiklikleri takip etmek
auditctl -w /etc/shadow -p wa

Audit Log Dosyalarında Arama Yapmak


Manuel yapılacak araştırma için /var/log/audit/audit.log dosyası incelenebileceği gibi,Auditd daemonu ile birlikte gelen ausearch aracının audit logları içerisinde arama yapmak için kullanılabileceğinden bahsedilmişti. Örneğin

* Hatalı giriş denemelerini bulmak için
ausearch --message USER_LOGIN --success no –interpret
* Bütün account, group, ve role değişikliklerini bulmak için
ausearch -m ADD_USER -m DEL_USER -m ADD_GROUP -m USER_CHAUTHTOK -m DEL_GROUP -m CHGRP_ID -m ROLE_ASSIGN -m ROLE_REMOVE -i
* Belirli bir kullanıcı için mevcut tüm loglaru bulmak için
ausearch -ua 500 -i
* Dünden bugüne kadar olan tüm hata ile sonuçlanan syscall'lar
ausearch --start yesterday --end now -m SYSCALL -sv no -i

Ausearch aracı –help parametresi ile incelendiğinde sunduğu birçok seçenek olduğu görülmektedir






NOT : Yine auditd daemonu yanında gelen araçlardan olan aureport ile loglar üzerinde gelişmiş rapor hazırlama imkanları mevcuttur.




Öneriler

  • Log Dosyalarının izinleri uygun şekilde ayarlanmalıdır.
  • Merkezi bir Syslog Server kurularak tüm logların tek cihazda toplanması avantajlıdır.
  • Log transferinin şifreli biçimde yollanması önemlidir.
  • Tüm cihazlar tarafından kullanılacak bir merkezi saat olması için NTP server kurulmalıdır. Loglamada doğru çalışan bir saat büyük önem taşır.
  • Syslog Facility'lerinden auth önemli veriler bulundurduğu için açık olmalıdır.(auth.*)
  • Bütün loglarını tüm detaylarıyla almak dos saldırılarına sebep olabilir.
  • Uygulamalar için uygun log konfigürasyonları yapılmış olmalıdır.
  • Hassas dosya ve objeler için loglamanın açılmış olması gerekir.

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.