Bölüm 18. Güvenlik Olayı Denetimi
18.1. Özet
FreeBSD işletim sistemi, güvenlik olayı denetimi için destek içerir. Olay denetimi, oturum açmalar, yapılandırma değişiklikleri ve dosya ve ağ erişimi dahil olmak üzere güvenlikle ilgili çeşitli sistem olaylarının güvenilir, ayrıntılı ve yapılandırılabilir günlüğe kaydedilmesini destekler. Bu günlük kayıtları, canlı sistem izleme, izinsiz giriş tespiti ve ölüm sonrası analiz için paha biçilmez olabilir. FreeBSD, Sun'ın™ yayınladığı Temel Güvenlik Modülü (BSM) Uygulama Programlama Arabirimi'ni (API) ve dosya biçimini uygular ve Solaris™ ve Mac OS® X denetim uygulamalarıyla birlikte çalışabilir.Bu bölüm, olay denetiminin yüklenmesi ve yapılandırılması üzerine odaklanmaktadır. Denetim ilkelerini açıklar ve örnek bir denetim yapılandırması sağlar.
Bu bölümü okuduktan sonra şunları bileceksiniz:
Bu bölümü okumadan önce şunları yapmalısınız:
Denetim tesisinin bilinen bazı sınırlamaları vardır. Güvenlikle ilgili tüm sistem olayları denetlenebilir değildir ve Xorg tabanlı görüntü yöneticileri ve üçüncü taraf daemon'lar gibi bazı oturum açma mekanizmaları, kullanıcı oturum açma oturumları için denetimi düzgün yapılandırmaz. Güvenlik olayı denetleme tesisi, sistem etkinliğinin çok ayrıntılı günlüklerini oluşturabilir. Meşgul bir sistemde, iz dosyası verileri yüksek ayrıntı için yapılandırıldığında çok büyük olabilir ve bazı yapılandırmalarda haftada gigabaytları aşabilir. Yöneticiler, yüksek hacimli denetim yapılandırmalarıyla ilişkili disk alanı gereksinimlerini dikkate almalıdır. Örneğin, denetim dosya sistemi dolduğunda diğer dosya sistemlerinin etkilenmemesi için bir dosya sisteminin /var/audit dizinine ayrılması istenebilir. |
18.2. Temel Şartlar
Aşağıdaki terimler güvenlik olayı denetimi ile ilgilidir:18.3. Denetim Yapılandırması
Olay denetimi için kullanıcı alanı desteği, temel FreeBSD işletim sisteminin bir parçası olarak yüklenir. Çekirdek desteği varsayılan olarak GENEL çekirdekte kullanılabilir ve auditd(8) /etc/rc.conf dosyasına aşağıdaki satır eklenerek etkinleştirilebilir:auditd_enable="YES"
Ardından, denetim cinini başlatın:
# service auditd start
Özel bir çekirdek derlemeyi tercih eden kullanıcılar, özel çekirdek yapılandırma dosyalarına aşağıdaki satırı eklemelidir:
options AUDIT
18.3.1. Etkinlik Seçimi İfadeleri
Seçim ifadeleri, hangi olayların denetlenmesi gerektiğini belirlemek için denetim yapılandırmasında çeşitli yerlerde kullanılır. İfadeler, eşleşecek olay sınıflarının bir listesini içerir. Seçim ifadeleri soldan sağa doğru değerlendirilir ve iki ifade biri diğerine eklenerek birleştirilir.Varsayılan Denetim Olay Sınıfları, varsayılan denetim olay sınıflarını özetler:
Tablo 1. Varsayılan Denetim Olay Sınıfları
Sınıf Adı | Tarif | Eylem |
---|---|---|
tüm | tüm | Tüm etkinlik sınıflarını eşleştirin. |
Acar | kimlik doğrulama ve yetkilendirme | |
reklam | yönetimsel | Bir bütün olarak sistem üzerinde gerçekleştirilen idari eylemler. |
Ap | uygulama | Uygulama tanımlı eylem. |
Cl | dosya kapatma | Sistem çağrısına yapılan çağrıları denetleme.close |
Ex | Exec | Denetim programının yürütülmesi. Komut satırı bağımsız değişkenlerinin ve ortam değişkenlerinin denetimi, ayarın ve parametreleri kullanılarak audit_control(5) aracılığıyla denetlenir.argvenvvpolicy |
Fa | dosya özniteliği erişimi | stat(1) ve pathconf(2) gibi nesne özniteliklerinin erişimini denetleyin. |
Fc | dosya oluşturma | Sonuç olarak bir dosyanın oluşturulduğu olayları denetleyin. |
Fd | dosya silme | Dosya silme işleminin gerçekleştiği olayları denetleyin. |
Fm | dosya özniteliğini değiştirme | chown(8), chflags(1) ve flock(2) gibi dosya özniteliği değişikliğinin gerçekleştiği olayları denetleyin. |
Fr | okunan dosya | Verilerin okunduğu veya dosyaların okunmak üzere açıldığı denetim olayları. |
Fw | dosya yazma | Verilerin yazıldığı veya dosyaların yazıldığı veya değiştirildiği olayları denetleyin. |
ıo | ioctl | Sistem çağrısının kullanımını denetleme.ioctl |
ıp | ıpc | POSIX boruları ve System V IPC işlemleri dahil olmak üzere çeşitli Süreçler Arası İletişim biçimlerini denetleyin. |
işte | login_logout | login(1) ve logout(1) olaylarını denetleyin. |
Na | atfedilemez | İlişkilendirilemeyen olayları denetleyin. |
Hayır | geçersiz sınıf | Hiçbir denetim olayını eşleştirmeyin. |
Nt | ağ | connect(2) ve accept(2) gibi ağ eylemleriyle ilgili olayları denetleyin. |
ot | başka | Çeşitli olayları denetleyin. |
kişisel bilgisayar | işlem | exec(3) ve exit(3) gibi denetim süreci işlemleri. |
Her denetim olay sınıfı, başarılı/başarısız işlemlerin eşleşip eşleşmediğini ve girdinin sınıf ve tür için eşleşme ekleyip eklemediğini veya kaldırdığını belirten bir önekle birleştirilebilir. Denetim Olay Sınıfları için önekler, kullanılabilir önekleri özetler:
Tablo 2. Denetim Olay Sınıfları için Önekler
Önek | Eylem |
---|---|
+ | Bu sınıftaki başarılı olayları denetleyin. |
- | Bu sınıftaki başarısız olayları denetleyin. |
^ | Audit neither successful nor failed events in this class. |
^+ | Do not audit successful events in this class. |
^- | Do not audit failed events in this class. |
The following example selection string selects both successful and failed login/logout events, but only successful execution events:
lo,+ex
18.3.2. Configuration Files
The following configuration files for security event auditing are found in /etc/security:Audit configuration files should be edited and maintained carefully, as errors in configuration may result in improper logging of events. |
18.3.2.1. The audit_control File
A number of defaults for the audit subsystem are specified in audit_control:dir:/var/audit
distff
flags:lo,aa
minfree:5
naflags:lo,aa
policy:cnt,argv
filesz:2M
expire-after:10M
The entry is used to set one or more directories where audit logs will be stored. If more than one directory entry appears, they will be used in order as they fill. It is common to configure audit so that audit logs are stored on a dedicated file system, in order to prevent interference between the audit subsystem and other subsystems if the file system fills.dir
If the field is set to or , hard links will be created to all trail files in /var/audit/dist.distonyes
The field sets the system-wide default preselection mask for attributable events. In the example above, successful and failed login/logout events as well as authentication and authorization are audited for all users.flags
The entry defines the minimum percentage of free space for the file system where the audit trail is stored.minfree
The entry specifies audit classes to be audited for non-attributed events, such as the login/logout process and authentication and authorization.naflags
Girdi, denetim davranışının çeşitli yönlerini denetleyen ilke bayraklarının virgülle ayrılmış bir listesini belirtir. Bu, bir denetim hatasına rağmen sistemin çalışmaya devam etmesi gerektiğini gösterir (bu bayrak şiddetle tavsiye edilir). Diğer bayrak, execve(2) sistem çağrısına yönelik komut satırı bağımsız değişkenlerinin komut yürütmenin bir parçası olarak denetlenmesine neden olur.policycntargv
Girdi, iz dosyasını otomatik olarak sonlandırmadan ve döndürmeden önce denetim izinin en büyük boyutunu belirtir. Otomatik günlük döndürmeyi devre dışı bırakır değeri. İstenen dosya boyutu minimum 512k değerinin altındaysa, yok sayılır ve bir günlük mesajı oluşturulur.filesz0
Bu alan, denetim günlüğü dosyalarının süresinin ne zaman dolacağını ve kaldırılacağını belirtir.expire-after
18.3.2.2. audit_user Dosyası
Yönetici, audit_user'daki belirli kullanıcılar için daha fazla denetim gereksinimi belirtebilir. Her satır, bir kullanıcı için denetimi iki alan aracılığıyla yapılandırır: alan, kullanıcı için her zaman denetlenmesi gereken bir olaylar kümesini belirtir ve alan, kullanıcı için asla denetlenmemesi gereken bir olaylar kümesini belirtir.alwaysauditneverauditAşağıdaki örnek girişler login/logout olaylarını ve başarılı komut yürütmeyi denetliyor ve dosya oluşturma ve başarılı komut yürütme için . Varsayılan audit_control ile kullanılırsa, girdi gereksizdir ve login/logout olayları da .rootwwwlorootwww
root:lo,+ex:no
www:fc,+ex:no
18.4. Denetim İzleriyle Çalışma
Denetim izleri BSM ikili biçiminde depolandığından, bu izleri değiştirmek veya metne dönüştürmek için çeşitli yerleşik araçlar kullanılabilir. İz dosyalarını basit bir metin biçimine dönüştürmek için . Denetim izi dosyasını çözümleme, arşivleme veya yazdırma amacıyla azaltmak için . Bu yardımcı program, olay türü, olay sınıfı, kullanıcı, olayın tarihi veya saati ve üzerinde işlem yapılan dosya yolu veya nesne dahil olmak üzere çeşitli seçim parametrelerini destekler.prauditauditreduceÖrneğin, belirtilen bir denetim günlüğünün tüm içeriğini düz metin olarak dökmek için:
# praudit /var/audit/AUDITFILE
Burada AUDITFILE, dökümü yapılacak denetim günlüğüdür.
Denetim izleri, belirteçlerden oluşan ve her satırda bir tane olmak üzere sırayla yazdırılan bir dizi denetim kaydından oluşur. Her belirteç, (denetim kaydı üstbilgisi) veya (ad aramasından bir dosya yolu) gibi belirli bir türdedir. Aşağıda bir olay örneği verilmiştirrauditheaderpathexecve
header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133
Bu denetim, komutun çalıştırıldığı başarılı bir çağrıyı temsil eder. Belirteç, kabuk tarafından çekirdeğe sunulan işlenmiş komut satırını içerir. Belirteç, çekirdek tarafından aranan yürütülebilir dosyanın yolunu tutar. Belirteç ikili dosyayı açıklar ve dosya modunu içerir. Belirteç, denetim kullanıcı kimliğini, etkin kullanıcı kimliğini ve grup kimliğini, gerçek kullanıcı kimliğini ve grup kimliğini, işlem kimliğini, oturum kimliğini, bağlantı noktası kimliğini ve oturum açma adresini depolar. Denetim kullanıcı kimliğinin ve gerçek kullanıcı kimliğinin, kullanıcı bu komutu çalıştırmadan önce hesaba geçiş yaptığı için farklılık gösterdiğine, ancak kimliği doğrulanmış özgün kullanıcı kullanılarak denetlendiğine dikkat edin. Belirteç, başarılı yürütmeyi gösterir ve kaydı sonuçlandırır.execvefinger dougexec argpathattributesubjectrobertrootreturntrailer
XML çıktı formatı da desteklenir ve dahil edilerek seçilebilir.-x
Denetim günlükleri çok büyük olabileceğinden, . Bu örnek, AUDITFILE'da depolanan kullanıcı için üretilen tüm denetim kayıtlarını seçer:auditreducetrhodes
# auditreduce -u trhodes /var/audit/AUDITFILE | praudit
Grubun üyeleri /var/audit içindeki denetim izlerini okuma iznine sahiptir. Varsayılan olarak, bu grup boştur, bu nedenle yalnızca kullanıcı denetim izlerini okuyabilir. Denetim gözden geçirme hakları için temsilci seçmek üzere gruba kullanıcılar eklenebilir. Denetim günlüğü içeriğini izleme yeteneği, kullanıcıların ve işlemlerin davranışları hakkında önemli bilgiler sağladığından, denetim gözden geçirme haklarının devredilmesinin dikkatle gerçekleştirilmesi önerilir.auditrootaudit
18.4.1. Denetim Boruları Kullanılarak Canlı İzleme
Denetim boruları, uygulamaların canlı denetim kaydı akışına dokunmasına izin veren sahte cihazları klonlamaktadır. Bu, öncelikle izinsiz giriş tespiti ve sistem izleme uygulamalarının yazarlarının ilgisini çekmektedir. Ancak, denetim kanalı aygıtı, yöneticinin denetim izi dosyası sahipliğiyle veya olay akışını kesintiye uğratan günlük döndürmesiyle ilgili sorunlarla karşılaşmadan canlı izlemeye izin vermesi için uygun bir yoldur. Canlı denetim olayı akışını izlemek için:# praudit /dev/auditpipe
Varsayılan olarak, denetim kanalı cihaz düğümlerine yalnızca kullanıcı erişebilir. Bunları grubun üyeleri tarafından erişilebilir kılmak için, /etc/devfs.rules dosyasına bir kural ekleyin:rootauditdevfs
add path 'auditpipe*' mode 0440 group audit
Devfs dosya sistemini yapılandırma hakkında daha fazla bilgi için devfs.rules(5) dosyasına bakın.
Her denetim olayının görüntülenmesinin daha fazla denetim olayının oluşturulmasıyla sonuçlandığı denetim olayı geri bildirim döngüleri oluşturmak kolaydır. Örneğin, tüm ağ G/Ç denetlenirse ve bir SSH oturumundan çalıştırılırsa, yazdırılan her olay başka bir olay oluşturacağından, yüksek oranda sürekli bir denetim olayları akışı oluşturulur. Bu nedenle, ince taneli G/Ç denetimi olmayan oturumlardan bir denetim borusu cihazında çalıştırılması önerilir.prauditpraudit |
18.4.2. Denetim İzi Dosyalarını Döndürme ve Sıkıştırma
Denetim izleri çekirdek tarafından yazılır ve denetim daemon, auditd(8) tarafından yönetilir. Yöneticiler, denetim günlüklerini doğrudan döndürmek için newsyslog.conf(5) veya diğer araçları kullanmaya çalışmamalıdır. Bunun yerine, denetimi kapatmak, denetim sistemini yeniden yapılandırmak ve günlük döndürme gerçekleştirmek için kullanılmalıdır. Aşağıdaki komut, audit daemon'un yeni bir denetim günlüğü oluşturmasına ve çekirdeğe yeni günlüğü kullanmaya geçmesini bildirmesine neden olur. Eski günlük sonlandırılır ve yeniden adlandırılır, bu noktada yönetici tarafından manipüle edilebilir:audit# audit -n
auditd(8) şu anda çalışmıyorsa, bu komut başarısız olur ve bir hata iletisi üretilir.
/etc/crontab dizinine aşağıdaki satırın eklenmesi bu rotasyonu her on iki saatte bir zamanlar:
0 */12 * * * root /usr/sbin/audit -n
Değişiklik, /etc/crontab kaydedildikten sonra geçerli olacaktır.
Denetim izi dosyasının dosya boyutuna göre otomatik olarak döndürülmesi, audit_control Dosyası'nda açıklandığı gibi audit_control kullanılarak mümkündür.filesz
Denetim izi dosyaları çok büyük olabileceğinden, denetim arka plan programı tarafından kapatıldıktan sonra izlerin sıkıştırılması veya başka bir şekilde arşivlenmesi genellikle istenir. audit_warn komut dosyası, döndürüldüklerinde denetim izlerinin temiz bir şekilde sonlandırılması da dahil olmak üzere denetimle ilgili çeşitli olaylar için özelleştirilmiş işlemler gerçekleştirmek üzere kullanılabilir. Örneğin, denetim izlerini kapanışta sıkıştırmak için /etc/security/audit_warn aşağıdakiler eklenebilir:
#
# Compress audit trail files on close.
#
if [ "$1" = closefile ]; then
gzip -9 $2
fi
Diğer arşivleme etkinlikleri, iz dosyalarını merkezi bir sunucuya kopyalamayı, eski iz dosyalarını silmeyi veya gereksiz kayıtları kaldırmak için denetim izini azaltmayı içerebilir. Bu komut dosyası yalnızca denetim izi dosyaları temiz bir şekilde sonlandırıldığında çalıştırılır. Uygun olmayan bir kapatmanın ardından sonlandırılmamış parkurlarda çalıştırılmayacaktır.