23 Şubat 2023 Perşembe

FreeBSD 🎱 Güvenlik Olayı🔑 Denetimi🔐

 

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:
  • Olay denetiminin ne olduğu ve nasıl çalıştığı.
  • Kullanıcılar ve işlemler için FreeBSD'de olay denetimi nasıl yapılandırılır.
  • Denetim azaltma ve gözden geçirme araçlarını kullanarak denetim izinin gözden geçirilmesi.
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:
  • event: denetlenebilir olay, denetim alt sistemi kullanılarak günlüğe kaydedilebilen herhangi bir olaydır. Güvenlikle ilgili olaylara örnek olarak bir dosyanın oluşturulması, ağ bağlantısının oluşturulması veya kullanıcının oturum açması verilebilir. Olaylar ya "atfedilebilir", yani kimliği doğrulanmış bir kullanıcıya kadar izlenebilir ya da "ilişkilendirilemez". İlişkilendirilemeyen olaylara örnek olarak, hatalı parola denemeleri gibi oturum açma işleminde kimlik doğrulamasından önce meydana gelen tüm olaylar verilebilir.
  • class: seçim ifadelerinde kullanılan adlandırılmış ilgili olaylar kümesi. Yaygın olarak kullanılan olay sınıfları arasında "dosya oluşturma" (fc), "exec" (ex) ve "login_logout" (lo) bulunur.
  • record: bir güvenlik olayını açıklayan bir denetim günlüğü girişi. Kayıtlar bir kayıt olay türü, eylemi gerçekleştiren konu (kullanıcı) hakkındaki bilgiler, tarih ve saat bilgileri, herhangi bir nesne veya bağımsız değişken hakkında bilgi ve bir başarı veya başarısızlık durumu içerir.
  • trail: güvenlik olaylarını açıklayan bir dizi denetim kaydından oluşan bir günlük dosyası. İzler, tamamlanan zaman olaylarına göre kabaca kronolojik sıradadır. Yalnızca yetkili süreçlerin denetim izine kayıt yapmasına izin verilir.
  • selection expression: olayları eşleştirmek için kullanılan öneklerin ve denetim olay sınıfı adlarının listesini içeren bir dize.
  • Ön seçim: Sistemin hangi olayların yöneticiyi ilgilendirdiğini belirlediği süreç. Ön seçim yapılandırması, hangi kullanıcıların hangi olay sınıflarının denetleneceğini belirlemek için bir dizi seçim ifadesinin yanı sıra hem kimliği doğrulanmış hem de kimliği doğrulanmamış işlemlere uygulanan genel ayarları kullanır.
  • azaltma: Mevcut denetim izlerinden gelen kayıtların koruma, yazdırma veya analiz için seçildiği süreç. Aynı şekilde, istenmeyen denetim kayıtlarının denetim izinden kaldırıldığı süreç. Azaltmayı kullanarak, yöneticiler denetim verilerinin korunmasına yönelik ilkeler uygulayabilir. Örneğin, ayrıntılı denetim izleri bir ay boyunca saklanabilir, ancak bundan sonra, arşivleme amacıyla yalnızca oturum açma bilgilerini korumak için izler azaltılabilir.

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ıTarifEylem
tümtümTüm etkinlik sınıflarını eşleştirin.
Acarkimlik doğrulama ve yetkilendirme
reklamyönetimselBir bütün olarak sistem üzerinde gerçekleştirilen idari eylemler.
ApuygulamaUygulama tanımlı eylem.
Cldosya kapatmaSistem çağrısına yapılan çağrıları denetleme.close
ExExecDenetim 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
Fadosya özniteliği erişimistat(1) ve pathconf(2) gibi nesne özniteliklerinin erişimini denetleyin.
Fcdosya oluşturmaSonuç olarak bir dosyanın oluşturulduğu olayları denetleyin.
Fddosya silmeDosya silme işleminin gerçekleştiği olayları denetleyin.
Fmdosya özniteliğini değiştirmechown(8)chflags(1) ve flock(2) gibi dosya özniteliği değişikliğinin gerçekleştiği olayları denetleyin.
Frokunan dosyaVerilerin okunduğu veya dosyaların okunmak üzere açıldığı denetim olayları.
Fwdosya yazmaVerilerin yazıldığı veya dosyaların yazıldığı veya değiştirildiği olayları denetleyin.
ıoioctlSistem çağrısının kullanımını denetleme.ioctl
ıpıpcPOSIX boruları ve System V IPC işlemleri dahil olmak üzere çeşitli Süreçler Arası İletişim biçimlerini denetleyin.
iştelogin_logoutlogin(1) ve logout(1) olaylarını denetleyin.
Naatfedilemezİlişkilendirilemeyen olayları denetleyin.
Hayırgeçersiz sınıfHiçbir denetim olayını eşleştirmeyin.
Ntconnect(2) ve accept(2) gibi ağ eylemleriyle ilgili olayları denetleyin.
otbaşkaÇeşitli olayları denetleyin.
kişisel bilgisayarişlemexec(3) ve exit(3) gibi denetim süreci işlemleri.
Bu denetim olay sınıfları, audit_class ve audit_event yapılandırma dosyaları değiştirilerek özelleştirilebilir.
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
ÖnekEylem
+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.
If no prefix is present, both successful and failed instances of the event will be audited.
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_class: contains the definitions of the audit classes.
  • audit_control: controls aspects of the audit subsystem, such as default audit classes, minimum disk space to leave on the audit log volume, and maximum audit trail size.
  • audit_event: textual names and descriptions of system audit events and a list of which classes each event is in.
  • audit_user: user-specific audit requirements to be combined with the global defaults at login.
  • audit_warn: a customizable shell script used by auditd(8) to generate warning messages in exceptional situations, such as when space for audit records is running low or when the audit trail file has been rotated.
Audit configuration files should be edited and maintained carefully, as errors in configuration may result in improper logging of events.
In most cases, administrators will only need to modify audit_control and audit_user. The first file controls system-wide audit properties and policies and the second file may be used to fine-tune auditing by user.

18.3.2.1. The audit_control File​

A number of defaults for the audit subsystem are specified in audit_control:
dir:/var/audit
dist:eek:ff
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.alwaysauditneveraudit
Aş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ştir:prauditheaderpathexecve
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.

Hiç yorum yok:

Yorum Gönder

Popüler Yayınlar