it-swarm-tr.com

Basit örnek denetim yapılandırması?

Linux komut günlüğü? yanıtında Auditd önerildi

Ubuntu'daki varsayılan yükleme, neredeyse hiçbir şey kaydetmiyor gibi görünüyor. Bununla birlikte gelen birkaç örnek vardır (capp.rules, nispom.rules, stig.rules), ancak her birinin performans etkisinin ne olacağı veya her birinin ne tür ortam veya varsayımlara en uygun olacağı net değildir.

Diyelim ki, bir web sunucusunda denetleme dağıtmak için en iyi başlangıç ​​noktası nedir? Bu, bir audit.rules dosyasını, denetim günlüğü akışını uzaktaki bir makineye gerçek zamanlı olarak göndermeyi sağlayan ayarları ve nelerin günlüğe kaydedildiğini görmek için en basit araçları içerir.

Sonra, tipik bir masaüstü makinesine ne dersiniz?

Güncelleme: dannysauer, güvenlik için hedefle başlamanın önemli olduğunu ve katılıyorum. Ama asıl amacım spark bu aracın kullanımıyla ilgili bazı yararlı açıklamalar ve çalışılmış bir örneği görmek performans ve depolama sonuçları, vb. ile birlikte, bu zaten varsa ve kaçırdıysam, lütfen işaret edin.Öyleyse, daha yaygın senaryolardan biri için bir örnek oluşturulmasını öneririm (örn. basit bir web sunucusu, seçtiğiniz yığınınızı çalıştırır), burada penetrasyonun nerede başladığını bulmaya yardımcı olmak için bir içeri girme durumunda bilgileri korumak olabilir.Kullanım için daha uygun veya ulaşılabilir bir hedef varsa Örneğin, önemli bir BT personeli olmayan küçük bir işletme, bu da yardımcı olacaktır.

48
nealmcb

Auditd olağanüstü güçlü bir izleme aracıdır. Şimdiye kadar inceleyen herkes kanıtlayabilir, kullanılabilirlik birincil zayıflıktır. Audit gibi bir şey oluşturmak, tam olarak ne hakkında çok derinlemesine düşünmeyi gerektirir; bu, söz konusu belirli sistem üzerinde denetime ihtiyaç duymasıdır. Soruda, bir web sunucusunda örnek sistemimiz olarak karar verdiniz, bu da spesifik olduğundan iyi.

Tartışma amacıyla, test/dev web sunucuları ile üretim web sunucuları arasında, web geliştiricilerinin test/dev sistemlerindeki tüm çalışmalarını yaptıkları ve üretim ortamındaki değişikliklerin kontrollü bir dağıtımda yapıldıkları resmi bir ayrım olduğunu varsayalım.

Bu büyük varsayımları yapmak ve üretim sistemine odaklanmak, işe başlayabiliriz. RHEL5 için CIS karşılaştırması içindeki denetim önerisine bakarak, aşağıdaki önerilen kural setini oluşturmaya başlayabiliriz:

-a exit,always -S unlink -S rmdir
-a exit,always -S stime.*
-a exit,always -S setrlimit.*
-w /etc/group -p wa 
-w /etc/passwd -p wa 
-w /etc/shadow -p wa 
-w /etc/sudoers -p wa
-b 1024
-e 2

Bu, rmdir, unlink, stime veya setrlimit sistem çağrıları her çıktığında günlüklerin yazılmasına neden olur. Bu, herkesin zamanla dosya veya jigger silmeye çalışıp çalışmadığını bize bildirmelidir. Grupları, kullanıcıları, şifreleri ve Sudo erişimini tanımlayan dosyalarda belirli dosya saatleri de kurduk. Bunların her biri için sistem çağrılarına bakmak yerine, bu dosyalardan biri her birinde:

  1. o_WRONLY veya O_RDWR modlarıyla açıldı
  2. bir özellik değiştirildi

Bir üretim web sunucusundan bahsettiğimizi varsaydığımızdan, satırı eklemenizi tavsiye ederim:

-w /var/www -p wa

Bu, /var/www dizin ağacı.

Şimdi daha önce yapılan "kontrollü çevre" varsayımının nedenini görebiliriz. Web kökündeki tüm dosyaların yanı sıra tüm bağlantıyı kaldırma veya rmdir olaylarını izleme arasında, bu bir geliştirme ortamında yasaklayıcı olabilir. Bakım pencereleri veya olayları dağıtma gibi dosya sistemi değişikliklerini tahmin edebilirsek, bu gürültüyü daha makul bir şekilde filtreleyebiliriz.

Tüm bunları tek, tutarlı bir dosyada birleştirmek istiyoruz /etc/audit/audit.rules benzemek

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 1024

-a exit,always -S unlink -S rmdir
-a exit,always -S stime.*
-a exit,always -S setrlimit.*
-w /var/www -p wa
-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow -p wa
-w /etc/sudoers -p wa

# Disable adding any additional rules - note that adding *new* rules will require a reboot
-e 2
41
Scott Pack

Güncelleme: Bu makale, denetim kurallarının güzel bir açıklamasıdır ve günlüğe kaydetmek isteyebileceğiniz her olay için örnekler verir:

HOWTO_configure_the_auditing_of_the_system_auditd


Hata raporuna buradan göz atın:

https://github.com/gds-operations/puppet-auditd/pull/1

Bir sistemde yapılabilecek birçok önemli değişikliği içeren çok uzun bir örnek dosya verirler. Kolaylık sağlamak için aşağıda kopyalanmıştır (küçük değişikliklerle):

## Remove any existing rules
-D

## Buffer Size
## Feel free to increase this if the machine panic's
-b 8192

## Failure Mode
## Possible values are 0 (silent), 1 (printk, print a failure message),
## and 2 (panic, halt the system).
-f 1

## Audit the audit logs.
## successful and unsuccessful attempts to read information from the
## audit records; all modifications to the audit trail
-w /var/log/audit/ -k auditlog

## Auditd configuration
## modifications to audit configuration that occur while the audit
## collection functions are operating.
-w /etc/audit/ -p wa -k auditconfig
-w /etc/libaudit.conf -p wa -k auditconfig
-w /etc/audisp/ -p wa -k audispconfig

## Monitor for use of audit management tools
-w /sbin/auditctl -p x -k audittools
-w /sbin/auditd -p x -k audittools

## special files
-a exit,always -F Arch=b32 -S mknod -S mknodat -k specialfiles
-a exit,always -F Arch=b64 -S mknod -S mknodat -k specialfiles

## Mount operations
-a exit,always -F Arch=b32 -S mount -S umount -S umount2 -k mount
-a exit,always -F Arch=b64 -S mount -S umount2 -k mount

## changes to the time
##
-a exit,always -F Arch=b32 -S adjtimex -S settimeofday -S stime -S clock_settime -k time
-a exit,always -F Arch=b64 -S adjtimex -S settimeofday -S clock_settime -k time

## Use stunnel
-w /usr/sbin/stunnel -p x -k stunnel

## cron configuration & scheduled jobs
-w /etc/cron.allow -p wa -k cron
-w /etc/cron.deny -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /etc/cron.daily/ -p wa -k cron
-w /etc/cron.hourly/ -p wa -k cron
-w /etc/cron.monthly/ -p wa -k cron
-w /etc/cron.weekly/ -p wa -k cron
-w /etc/crontab -p wa -k cron
-w /var/spool/cron/crontabs/ -k cron

## user, group, password databases
-w /etc/group -p wa -k etcgroup
-w /etc/passwd -p wa -k etcpasswd
-w /etc/gshadow -k etcgroup
-w /etc/shadow -k etcpasswd
-w /etc/security/opasswd -k opasswd

## monitor usage of passwd
-w /usr/bin/passwd -p x -k passwd_modification

#Monitor for use of tools to change group identifiers
-w /usr/sbin/groupadd -p x -k group_modification
-w /usr/sbin/groupmod -p x -k group_modification
-w /usr/sbin/addgroup -p x -k group_modification
-w /usr/sbin/useradd -p x -k user_modification
-w /usr/sbin/usermod -p x -k user_modification
-w /usr/sbin/adduser -p x -k user_modification

## login configuration and information
-w /etc/login.defs -p wa -k login
-w /etc/securetty -p wa -k login
-w /var/log/faillog -p wa -k login
-w /var/log/lastlog -p wa -k login
-w /var/log/tallylog -p wa -k login

## network configuration
-w /etc/hosts -p wa -k hosts
-w /etc/network/ -p wa -k network

## system startup scripts
-w /etc/inittab -p wa -k init
-w /etc/init.d/ -p wa -k init
-w /etc/init/ -p wa -k init

## library search paths
-w /etc/ld.so.conf -p wa -k libpath

## local time zone
-w /etc/localtime -p wa -k localtime

## kernel parameters
-w /etc/sysctl.conf -p wa -k sysctl

## modprobe configuration
-w /etc/modprobe.conf -p wa -k modprobe

## pam configuration
-w /etc/pam.d/ -p wa -k pam
-w /etc/security/limits.conf -p wa  -k pam
-w /etc/security/pam_env.conf -p wa -k pam
-w /etc/security/namespace.conf -p wa -k pam
-w /etc/security/namespace.init -p wa -k pam

## GDS specific secrets
-w /etc/puppet/ssl -p wa -k puppet_ssl

## postfix configuration
-w /etc/aliases -p wa -k mail
-w /etc/postfix/ -p wa -k mail

## ssh configuration
-w /etc/ssh/sshd_config -k sshd

## changes to hostname
-a exit,always -F Arch=b32 -S sethostname -k hostname
-a exit,always -F Arch=b64 -S sethostname -k hostname

## changes to issue
-w /etc/issue -p wa -k etcissue
-w /etc/issue.net -p wa -k etcissue

## this was to noisy currently.
# log all commands executed by an effective id of 0 aka root.
-a exit,always -F Arch=b64 -F euid=0 -S execve -k rootcmd
-a exit,always -F Arch=b32 -F euid=0 -S execve -k rootcmd

## Capture all failures to access on critical elements
-a exit,always -F Arch=b64 -S open -F dir=/etc -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/bin -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/sbin -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/usr/bin -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/usr/sbin -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/var -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/home -F success=0 -k unauthedfileacess
-a exit,always -F Arch=b64 -S open -F dir=/srv -F success=0 -k unauthedfileacess

## Monitor for use of process ID change (switching accounts) applications
-w /bin/su -p x -k priv_esc
-w /usr/bin/Sudo -p x -k priv_esc
-w /etc/sudoers -p rw -k priv_esc

## Monitor usage of commands to change power state
-w /sbin/shutdown -p x -k power
-w /sbin/poweroff -p x -k power
-w /sbin/reboot -p x -k power
-w /sbin/halt -p x -k power

## Make the configuration immutable
-e 2
14
dberm22

Soruya biraz yanlış yaklaşıyorsunuz. Neyi kaydetmek istediğinize karar vermeniz ve bunu nasıl kaydedeceğinizi öğrenmeniz gerekir. Bir sürü günlük dosyası oluşturmak harika ve her şeydir, ancak onlara hiç bakmazsanız veya ne aradığınızı bilmiyorsanız, sadece zaman ve alan harcar.

Neyi kaydedeceğinize karar verirken, hangi davranışa değer verdiğinizi belirlemeniz ve ardından bu etkinliği nasıl günlüğe kaydedeceğinizi öğrenmeniz gerekir. Bunu yapmaya başlamanın iyi bir yolu AppArmor hakkında okumak ve auditctl man sayfasını incelemek olacaktır. daha sonra Unix için programlamayı öğrenerek hangi sistem çağrılarının kullanılabileceğini öğrenin ve ilginizi çekebilecek çağrıları belirleyin. Gerçekten çok büyük bir girişim. Bunun biraz glib yanıtı olduğunu ve "burada sunucunuzda önem verdiğiniz her şeyi günlüğe kaydedecek bir Shell betiği" sağlamadığını biliyorum - ancak bu yanıtların var olmamasının nedeni, her durumun farklı olması bu yüzden "en uygun tek beden" cevabı vermek mümkün değildir.

Çalıştığım (kuşkusuz büyük) yerde, yalnızca sistem günlüğüne adanmış, katkıda bulunan çeşitli yönetici ve güvenlik ekiplerinden bahsetmemek için çalışan bir ekibimiz var. Bu küçük bir konu değil. : /

11
dannysauer