Linux Audit Altyapisi-I

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

This entry was posted in Compliance, Linux Security, PCI DSS. Bookmark the permalink.

2 Responses to Linux Audit Altyapisi-I

  1. Serdar says:

    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?

  2. admin says:

    Pardus’ta tüm kayıtlar /var/log dizini altında tutuluyor. Ama sistem yöneticisi log dosyalarının nerelerde tutulacağını ayarlayabilir.

Leave a Reply

Your email address will not be published. Required fields are marked *

two × 5 =