Günümüzde sağlam bir audit altyapısı olmayan işletim sisteminin ticari ortamlarda kullanımı oldukça zorlaşıyor. Gerek güvenlik gerek yine güvenliğe dayanan çeşitli kanunlar, düzenlemeler ve standartlar kullanılacak tüm sistemlerin sağlıklı audit altyapısına sahip olmasını şart koşuyor.
Audit altyapisindan kastım kullanılan sistemin kim tarafından ne zaman ve nasıl kullanıldığının kayıt altına alınması. Bu altyapı işletim sistemi için belki çalıştırılan bir komut ya da bir dosya üzerinde yapılan değişikliklerin incelenmesi, veritabanı için belirli bir tablodaki hareketliliğin gözlenmesi olabilir.
Audit altyapisini pasif olarak calisan IDS’lere benzetmek mümkündür. Her ikisi de kendisine verilen çeşitli parametrelere uygun bir şekilde trafiği/hareketleri izle ve loglar.
Auditd basitce kernela yapılan sistem çağrılarını izler. Sistem çağrıları kullanıcı seviyesi programların kernel fonksiyonlarına erişip kullanmasıdır.
Hemen hemen tüm UNIX/Linux sistemlerde gelismis audit altyapısı bulunmaktadır. (Linux sistemlerde 2.6 kernel ile birlikte gelmektedir)
Neyin audit’i?
Audit mekanizmasının sistem çağrılarını izlediğini söylemiştik. Linux sistemine bakıldığında sayamayacağımız kadar çok sistem çağrısı vardır. Peki bunlardan hangileri audit manasında bizim işimize yarar, hangileri yaramaz. Buna karar vermek şirketinizin politikalarına bağlı olarak değişecektir. Temel olarak bazı önemli dosya/dizinlere erişim, kritik olarak belirlenen komutların çalıştırılması ve kullanıcı haklarında değişiklik alınabilir.
Linux üzerinde audit altyapısını aktif hale getirmek
Öncelikle sisteminizde auditd paketinin kurulu olması gerekir. Bunu anlamak için Red Hat sistemlerde rpm -qi auditd komutu çalıştırılmalı. Aşağıdaki gibi bir çıktı alıyorsanız audit paketi kurulu demektir.
[email protected] [/etc/audit]# rpm -qi audit
Name : audit Relocations: (not relocatable)
Version : 1.6.5 Vendor: CentOS
Release : 9.el5 Build Date: Sun 25 May 2008 09:28:37 AM EEST
Install Date: Sun 05 Oct 2008 10:23:40 PM EEST Build Host: builder10.centos.org
Group : System Environment/Daemons Source RPM: audit-1.6.5-9.el5.src.rpm
Size : 669245 License: GPL
Signature : DSA/SHA1, Sun 15 Jun 2008 02:29:32 AM EEST, Key ID a8a447dce8562897
URL : http://people.redhat.com/sgrubb/audit/
Summary : User space tools for 2.6 kernel auditing
Description :
The audit package contains the user space utilities for
storing and searching the audit records generate by
the audit subsystem in the Linux 2.6 kernel.
Auditd paketi kurulu değilse ;
yum install auditd
ve
chkconfig –level 345 auditd on
komutlarının çalıştırılması gerekir.
Audit servisini çalıştırmak
Redhat tabanlı sistemler için:
#service auditd start
#service auditd status
auditd (pid 3440) is running…
Auditd yapılandırma dosyaları
/etc/auditd altında iki adet yapılandırma dosyası bulunur. Bunlardan auditd.conf audit işleminin nasıl yapılacağı , audit.rules dosyası da neyin hangi seviyede denetime tabi tutulacağını karar verdiğimiz dosyalardır.
Audit Log Dosyası
/var/log/auditd dizini altında audit.log dosyasına yazılır. İstenirse bu dizin auditd.conf dosyasından değiştirilebilir.
[email protected] [/etc/audit]# ls /var/log/audit/
./ ../ audit.log audit.log.1 audit.log.2 audit.log.3
auditd ile birlikte gelen yardımcı programlar
ausearch – Log sorgulama için
aureport – Özet rapor çıkarımı için
auditctl – Interaktif olarak audit kurallarını değiştirmek için
Kullanıcı komutlarını Loglama
audit.rules dosyasına aşağıdaki satırlar eklenmeli.
# Audit all execve calls
-a entry,always -S execve
-a entry,never
komut loglamayı sadece belirli kullanıcılar için açmak istersek
-a entry,always -S execve -F uid=0
gibi bir girdi yeterli olacaktir.
Dosyaları İzlemek
Sisteminizde kritik olarak belirlediğiniz dosyalar üzerinde yapılan işlemler(r=read, x=execute, w=write, a=attribute) için audit mekanızmasını aktif edebilirsiniz. Böylece bu dosyalar üzerinde belirlediğiniz bir işlem gerçekleştirildiğinde loglara kayıt düşecektir. Bunun için auditctl komutunu kullanıyoruz.
Mesela /etc/passwd dosyası üzerinde yapılan okuma ve yazma işlemlerini kayıt altına almak istersek
# auditctl -w /etc/passwd -p wr
komutunu çalıştırabiliriz.
kaydımızın aktif olup olmadığını görmek için
# auditctl -l
LIST_RULES: entry,always syscall=execve
LIST_RULES: entry,never syscall=all
LIST_RULES: exit,always watch=/etc/passwd perm=rw
Loglar arasında filtrelemeyi kolaylaştırmak için auditctl’e ile birlikte -k parametresi kullanılabilir. Mesela bir önceki örnekte /etc/passwd’e yapılan kouma ve yazma işlemlerinin loglarda kolaylıkla filtrelenebilmesi için şu şekilde değiştirelim.
# auditctl -w /etc/passwd -p wr -k parola-dosyasi
Böylelikle loglarda arama yaparken parola-dosyası filtresini kullanarak doğrudan istediğimiz sonuçlara ulaşabileceğiz.
/tmp dizini altında çalıştırılan dosyaları izleme
# auditctl -w /tmp/ -p x -k tmp-dizini-kritik
[email protected] [/etc/audit]# auditctl -l
LIST_RULES: entry,always syscall=execve
LIST_RULES: entry,never syscall=all
LIST_RULES: exit,always dir=/tmp (0x4) perm=x key=tmp-dizini-kritik
LIST_RULES: exit,always watch=/etc/passwd perm=rw key=parola-dosyasi
Ausearch ile kayıt arama
mesela çalıştırılan vi komutlarını bulmasını istersek;
# ausearch -x vi
—-
time->Sun Nov 30 12:37:48 2008
type=PATH msg=audit(1228041468.730:771441): item=1 name=(null) inode=1508855 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1228041468.730:771441): item=0 name=”/bin/vi” inode=589904 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1228041468.730:771441): cwd=”/etc/audit”
type=EXECVE msg=audit(1228041468.730:771441): argc=2 a0=”vi” a1=”/etc/passwd”
type=SYSCALL msg=audit(1228041468.730:771441): arch=40000003 syscall=11 success=yes exit=0 a0=8c980b8 a1=8c782e8 a2=8c77290 a3=0 items=2 ppid=17577 pid=31540 auid=0 uid=0 gid=0
euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=110702 comm=”vi” exe=”/bin/vi” key=(null)
root kullanıcısı tarafından çalıştırılan tüm rm komutlarının bulunması
# ausearch -ge root -x rm
—-
time->Sun Nov 30 12:24:01 2008
type=PATH msg=audit(1228040641.377:762054): item=1 name=(null) inode=1508855 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1228040641.377:762054): item=0 name=”/bin/rm” inode=589874 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1228040641.377:762054): cwd=”/root”
type=EXECVE msg=audit(1228040641.377:762054): argc=3 a0=”rm” a1=”-f” a2=”/usr/local/bfd/lock.utime”
type=SYSCALL msg=audit(1228040641.377:762054): arch=40000003 syscall=11 per=400000 success=yes exit=0 a0=9899948 a1=98a21e0 a2=989a690 a3=0 items=2 ppid=3204 pid=3263 auid=0
uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=110865 comm=”rm” exe=”/bin/rm” key=(null)
—-
time->Sun Nov 30 12:24:15 2008
type=PATH msg=audit(1228040655.311:763254): item=1 name=(null) inode=1508855 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=PATH msg=audit(1228040655.311:763254): item=0 name=”/bin/rm” inode=589874 dev=08:05 mode=0100755 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1228040655.311:763254): cwd=”/var/log/audit”
type=EXECVE msg=audit(1228040655.311:763254): argc=3 a0=”rm” a1=”-i” a2=”/tmp/RHek3T”
type=SYSCALL msg=audit(1228040655.311:763254): arch=40000003 syscall=11 success=yes exit=0 a0=8c96f98 a1=8c78810 a2=8c77290 a3=0 items=2 ppid=17577 pid=8083 auid=0 uid=0 gid=0
euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=110702 comm=”rm” exe=”/bin/rm” key=(null)
Kaynaklar:
http://people.redhat.com/sgrubb/audit/audit-ids.pdf
http://www.prelude-ids.com/en/development/index.html
Merhaba, bir Gnu/Linux Pardus kullanıcısıyım.
Linuxta tüm sistem kayıtları /var/log altında mıdır? Ya da sistemimde yapılacak bir incelemede ilk bakılacak yerler nelerdir?
Pardus’ta tüm kayıtlar /var/log dizini altında tutuluyor. Ama sistem yöneticisi log dosyalarının nerelerde tutulacağını ayarlayabilir.