RHEL AUDIT BASELINE

Конфигурация аудита в RedHat/CentOS server

В этой статье описывается детальная информация о конфигурировании аудита в “RedHat Linux Enterprise” (далее ПО) при помощи Linux Audit Framework (LAF) для последующего анализа данных событий аудита решением QRadar SIEM.

  1. Настройки демона auditd

Для получения событий аудита системой QRadar SIEM, необходимо сконфигурировать настройки демона аудита auditd на целевой системе:

  • Модифицируйте содержимое файла управления подсистемой аудита /etc/audit/auditd.conf таким образом, чтобы он содержал следующие строки (оставьте другие значения установленными по умолчанию):
Файл /etc/audit/auditd.conf
# This file controls the configuration of the audit daemon
#
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL
freq = 20
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file = 6
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
##tcp_listen_port =
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
  • Модифицируйте содержимое файла управления объектами аудита /etc/audit/audit.rules таким образом, чтобы он содержал следующие строки:
Файл /etc/audit/audit.rules
# First rule — delete all
-D

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

# Feel free to add below this line. See auditctl man page
-e 1

# Audit configuration changes
-w /etc/audit/auditd.conf -p w -k RHEL_AUDIT_WRITE
-w /etc/audit/audit.rules -p w -k RHEL_AUDIT_WRITE

# Identity management configuration changes
-w /etc/group -p w -k RHEL_IDM_WRITE
-w /etc/passwd -p w -k RHEL_IDM_WRITE
-w /etc/gshadow -p w -k RHEL_IDM_WRITE
-w /etc/shadow -p w -k RHEL_IDM_WRITE
-w /etc/sudoers -p w -k RHEL_IDM_WRITE
-w /etc/security/group.conf -p w -k RHEL_IDM_WRITE
-w /etc/security/opasswd -p w -k RHEL_IDM_WRITE

# Identity management tools use
-w /usr/sbin/groupadd -p x -k RHEL_IDM_EXEC
-w /usr/sbin/groupmod -p x -k RHEL_IDM_EXEC
-w /usr/sbin/groupdel -p x -k RHEL_IDM_EXEC
-w /usr/sbin/useradd -p x -k RHEL_IDM_EXEC
-w /usr/sbin/usermod -p x -k RHEL_IDM_EXEC
-w /usr/sbin/userdel -p x -k RHEL_IDM_EXEC

# PAM configuration changes
-w /etc/pam.d/ -p w -k RHEL_PAM_WRITE

# Login logs changes
-w /var/log/faillog -p w -k RHEL_LOGS_WRITE
-w /var/log/lastlog -p w -k RHEL_LOGS_WRITE

# System configuration changes
-w /etc/init.d/ -p w -k RHEL_SYSTEM_WRITE
-w /etc/inittab -p w -k RHEL_SYSTEM_WRITE
-w /etc/ssh/ -p w -k RHEL_SYSTEM_WRITE
-w /etc/hosts -p w -k RHEL_SYSTEM_WRITE
-w /etc/sysconfig/ -p w -k RHEL_SYSTEM_WRITE
-w /etc/security/ -p w -k RHEL_SYSTEM_WRITE
-w /etc/login.defs -p w -k RHEL_SYSTEM_WRITE

# System calls (exclude users without login UID)
-a exit,always -F arch=b64 -S adjtimex -F auid!=4294967295 -k RHEL_SYSTEM_CALL
-a exit,always -F arch=b64 -S settimeofday -F auid!=4294967295 -k RHEL_SYSTEM_CALL

# Cron configuration changes
-w /var/spool/cron/root -p w -k RHEL_CRON_WRITE
-w /etc/at.allow -p w -k RHEL_CRON_WRITE
-w /etc/at.deny -p w -k RHEL_CRON_WRITE
-w /etc/cron.deny -p w -k RHEL_CRON_WRITE
-w /etc/cron.d/ -p w -k RHEL_CRON_WRITE
-w /etc/cron.hourly -p w -k RHEL_CRON_WRITE
-w /etc/cron.dayly -p w -k RHEL_CRON_WRITE
-w /etc/cron.weekly -p w -k RHEL_CRON_WRITE
-w /etc/cron.monthly -p w -k RHEL_CRON_WRITE
-w /etc/crontab -p w -k RHEL_CRON_WRITE
-w /etc/anacrontab -p w -k RHEL_CRON_WRITE

# Critical directories changes
-w /var/www/html -p w -k RHEL_CRITICAL_DIR_CHANGE

При необходимости добавьте дополнительные объекты для мониторинга в соответствующие категории, используя шаблоны категорий.

2. Настройки демона RSyslog

Необходимо сконфигуровать демон rsyslog таким образом, чтобы в  сообщениях использовался параметр hostname. Данный параметр служит для определения идентификатора источника событий (LSI). При использовании других syslog демонов, обратитесь к документации поставщика услуг для выполнения необходимых операций. Файл конфигурации для внесения изменений (каждая команда одной строкой): /etc/rsyslog. conf

Файл /etc/rsyslog. conf
#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides —MARK— message capability

# Provides access to files
$ModLoad imfile

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

#### GLOBAL DIRECTIVES ####

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 *

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

# ### begin forwarding rule ###
# The statement between the begin … end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

# Audit logging via syslog setup
$WorkDirectory /var/lib/rsyslog
$InputFileName /var/log/audit/audit.log
$InputFileStateFile audit.stat
$InputFileTag audit:
$InputFileSeverity debug
$InputFileFacility local0
$InputFilePollingInterval 10
$InputRunFileMonitor

# Template for QRadar syslog message
$template RFC3164fmt,»<%PRI%>%TIMESTAMP% %HOSTNAME%-os %syslogtag%%msg%»

# Send local0.debug to QRadar
local0.debug            @@<QRADAR_HOSTNAME>:514;RFC3164fmt

<QRADAR_HOSTNAME> — имя хоста QRadar или его IP адрес.

Перезагрузите rsyslog:
service rsyslog restart

3. Настройка модуля ядра SELinux

Для успешного доступа к файлу аудита, модуль политики используемого демона RSyslog необходимо включить в системную политику операционной системы. Ниже приведен пример конфигурации модуля политики демона rsyslog для доступа к файлу аудита. При использовании других Syslog демонов, обратитесь к документации SELinux для выполнения необходимых операций.
1. Проверьте состояние SELinux, при помощи выполнения следующей команды в интерфейсе командной строки целевой системы:

sudo sestatus
Пример вывода при включенном состоянии:
# SELinux status: enabled

2. Скопируйте следующие файлы (rhel_audit_baseline):

rsyslogd.pp – Модуль политики демона rsyslog
rsyslogd.te – Тип принуждения модуля политики демона rsyslog

в любой доступный каталог по усмотрению на целевую систему, например, в домашний каталог пользователя.

3. Перейдите в каталог, куда были скопированы файлы поставки и установите модуль политики демона rsyslog при помощи выполнения следующей команды в интерфейсе командной строки:
sudo semodule -i rsyslogd.pp

4. Убедитесь в успешной установке модуля политики демона rsyslog при помощи выполнения следующей команды в интерфейсе командной строки:
sudo semodule –l | grep rsyslog

Пример вывода при успешной установке:
# rsyslogd 1.0

5. Перезапустите SELinux при помощи выполнения следующей команды в интерфейсе командной строки:
setenforce 0 && sleep 10 && setenforce 1