it-swarm-id.com

Contoh konfigurasi auditd sederhana?

Auditd direkomendasikan dalam jawaban untuk perintah Linux?

Instalasi default pada Ubuntu tampaknya hampir tidak mencatat apa pun. Ada beberapa contoh yang menyertainya (capp.rules, nispom.rules, stig.rules) tetapi tidak jelas apa dampak kinerja masing-masing, atau lingkungan atau asumsi seperti apa yang paling cocok untuk masing-masing.

Apa yang akan menjadi titik awal terbaik untuk menggunakan auditd pada, katakanlah, server web? Ini akan mencakup file audit.rules, pengaturan untuk memungkinkan pengiriman aliran log audit ke mesin jarak jauh secara real time, dan alat paling sederhana untuk melihat apa yang telah dicatat.

Selanjutnya, bagaimana dengan mesin desktop biasa?

Perbarui: dannysauer mencatat bahwa untuk keamanan, penting untuk memulai dengan tujuan, dan saya setuju. Tapi maksud utama saya adalah spark beberapa penjelasan yang lebih berguna tentang penggunaan alat ini, dan lihat contoh kerja jika sedang beraksi, bersama dengan implikasi kinerja dan penyimpanan, dll. Jika itu sudah ada dan saya melewatkannya, tunjukkan padanya. Jika tidak, saya menyarankan agar contoh dibuat untuk salah satu skenario yang lebih umum (misalnya a server web sederhana, jalankan tumpukan pilihan Anda), di mana tujuannya mungkin untuk menyimpan informasi jika terjadi pembobolan untuk membantu melacak kembali untuk mengetahui di mana penetrasi dimulai. Jika ada tujuan yang lebih cocok atau dapat dicapai untuk digunakan dalam misalnya bisnis kecil tanpa staf TI yang signifikan, itu akan membantu juga.

48
nealmcb

Auditd adalah alat pemantauan yang sangat kuat. Seperti yang dapat dibuktikan oleh siapa saja yang pernah melihatnya, kegunaan adalah kelemahan utama. Menyiapkan sesuatu seperti auditd membutuhkan banyak pemikiran mendalam tentang apa yang perlu diaudit pada sistem tertentu yang dimaksud. Dalam pertanyaan, Anda memutuskan server web sebagai sistem contoh kami, yang bagus karena spesifik.

Demi argumen, mari kita asumsikan bahwa ada pembagian formal antara server web test/dev dan server web produksi di mana pengembang web melakukan semua pekerjaan mereka pada sistem pengujian/dev dan perubahan pada lingkungan produksi dilakukan dalam penyebaran yang terkontrol.

Jadi membuat asumsi yang agak besar, dan fokus pada sistem produksi, kita bisa mulai bekerja. Melihat rekomendasi auditd di benchmark CIS untuk RHEL5 kita dapat mulai membangun aturan yang disarankan berikut:

-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

Ini akan menyebabkan log akan ditulis kapan pun sistem panggilan rmdir, unlink, stime, atau setrlimit keluar. Ini harus memberi tahu kami jika ada yang mencoba menghapus file atau jigger dengan perkembangan zaman. Kami juga menyiapkan jam tangan file tertentu pada file yang menentukan grup, pengguna, kata sandi, dan akses Sudo. Alih-alih melihat panggilan sistem untuk masing-masing log audit akan ditulis setiap kali salah satu file tersebut adalah:

  1. dibuka dengan mode O_WRONLY atau O_RDWR
  2. atribut diubah

Karena kita sudah membuat asumsi bahwa kita sedang berbicara tentang server web produksi, saya akan merekomendasikan menambahkan baris:

-w /var/www -p wa

Ini akan menonton semua file secara rekursif di bawah /var/www pohon direktori.

Sekarang kita dapat melihat alasan asumsi "lingkungan terkendali" yang dibuat sebelumnya. Antara memantau semua file di root web, serta semua peristiwa unlink atau rmdir, ini bisa sangat bising di lingkungan pengembangan. Jika kami dapat mengantisipasi perubahan sistem file, seperti saat jendela pemeliharaan atau menyebarkan acara, kami dapat lebih memfilter suara ini.

Menggabungkan semua ini menjadi satu file yang koheren, kita inginkan /etc/audit/audit.rules agar terlihat seperti

# 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

Pembaruan: Artikel ini adalah penjelasan yang bagus tentang aturan auditd dan memberikan contoh untuk setiap acara yang mungkin ingin Anda catat:

HOWTO_configure_the_auditing_of_the_system_auditd


Lihat laporan bug di sini:

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

Mereka memberikan contoh file yang sangat panjang yang berisi banyak perubahan penting yang mungkin dibuat untuk suatu sistem. Disalin di bawah untuk kenyamanan (dengan sedikit modifikasi):

## 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

Anda agak mendekati pertanyaan dengan cara yang salah. Anda perlu memutuskan apa yang ingin Anda catat, dan mencari tahu cara mencatatnya. Menghasilkan banyak file log itu keren dan semuanya, tetapi jika Anda tidak pernah melihatnya atau tidak tahu apa yang Anda cari, itu hanya membuang-buang waktu dan ruang.

Saat memutuskan apa yang akan dicatat, Anda perlu mengidentifikasi perilaku apa yang Anda pedulikan, dan kemudian mencari tahu cara mencatat aktivitas itu. Cara yang baik untuk mulai melakukan ini adalah membaca tentang AppArmor dan membaca dengan teliti auditctl halaman manual. kemudian pelajari panggilan sistem apa yang tersedia dengan mempelajari program untuk Unix, dan mengidentifikasi panggilan yang mungkin menarik. Ini benar-benar usaha yang cukup besar. Saya tahu ini sedikit jawaban yang glib dan tidak memberikan "inilah skrip Shell yang akan mencatat semua yang Anda pedulikan di server Anda" - tetapi alasan jawaban itu tidak ada adalah, well, setiap situasi berbeda jadi tidak mungkin memberikan jawaban "satu ukuran paling cocok".

Di tempat (yang diakui besar) tempat saya bekerja, kami memiliki seluruh tim yang didedikasikan hanya untuk sistem logging - belum lagi berbagai admin dan tim keamanan yang berkontribusi. Ini bukan topik kecil. : /

11
dannysauer