ОС семейства Unix
Общие данные
Примечание: начиная с версии
3.7.2
в Платформе Радар все источники, которые являются операционными системами семейства Unix, объединены в один источник Linux-Unix.
Платформа Радар поддерживает сбор событий со следующих ОС семейства Unix:
- Astra Linux Special Edition 1.7 и выше;
- Ubuntu 16.04, 18.04, 20.04, 22.04;
- CentOS 6, 7, 8, 9;
- Debian 8, 9, 10, 12;
- Oracle Solaris 10, 11;
- Red Hat Enterprise Linux 6, 7, 8;
- SUSE Linux Enterprise Server 11.3, 12, 15;
- Fedora 30, 31.
Для журналирования событий используются следующие службы:
rsyslog
илиsyslog-ng
- служба журналирования для отправки событий в платформу;auditd
- отвечает за запись сообщений аудита вызванных активностью приложений или системы.
Характеристики источника в Платформе Радар:
Характеристика | Значение |
---|---|
Название | Linux-Unix |
Тип | Linux |
Вендор | Unix |
Порт | 2671 |
Протокол | TCP/UDP |
Примечание: если источник будет отдавать большой поток событий, и если таких источников будет много, то рекомендуется передавать события по протоколу UDP. Так как при использовании протокола TCP может образоваться большая очередь на лог-коллекторе. Но при использовании протокола UDP могут происходить потери. Для выбора оптимальных настроек для вашей системы, рекомендуется обратиться в службу технического сопровождения Платформы Радар.
Настройка источника включает в себя следующие процессы:
- Настройка службы журналирования.
- Настройка службы
auditd
. - Настройка лог-коллектора.
- Проверка настроенной конфигурации.
- Включение источника на платформе.
Примечание: все действия при настройке источника должны выполняться от имени суперпользователя.
Настройка службы журналирования
Для отправки событий стандарта syslog
в Платформу Радар на источнике необходимо настроить службу журналирования и отправку событий.
В целях организации безопасной передачи данных на лог-коллектор по протоколу TCP
, а также обеспечения возможности фильтрации сообщений по источникам и их содержимому предлагается использовать службы rsyslog
или syslog-ng
.
Службы реализуют механизм централизованного протоколирования событий в ОС семейства Unix. Все части системы (включая ядро и системные службы) передают происходящие в них события службе журналирования. В свою очередь, служба журналирования добавляет к телу события информацию о важности (severity), категории (facility), времени происшествия события, hostname или IP-адрес хоста, имя и PID службы, сгенерировавшей лог.
Служба журналирования, согласно настройкам в файле конфигурации, классифицирует все события в несколько выходных потоков, согласно категории (facility) и важности (severity). Например, события ядра системы будут иметь категорию kern
, а события почтового сервера - категорию mail
. Если уровень важности не имеет значения, но необходимо, чтобы в одном файле были собраны события только одного демона, в файле конфигурации службы журналирования указывается запись kern.* -/var/log/kern.log
, где *
- любой уровень важности события. Но если необходимо, например, сохранять в файл события ошибок почтового сервера, указывается строка mail.err /var/log/mail.err
. Таким образом, можно распределить события разных категорий и уровней важности по разным файлам.
Перед началом работы с платформой мы рекомендуем вам настроить параметры категории (facility) и важности (severity) события для оптимизации передаваемого в платформу потока.
Подробнее о механизме централизованного протоколирования событий вы можете ознакомиться в соответствующих руководствах для вашей ОС.
Определение используемой службы журналирования
Если установлена ОС Astra Linux, Debian или Ubuntu, то выполните команду:
# dpkg --list | grep syslog
Eсли ALT Linux, CentOS или Red Hat Enterprise Linux, то выполните команду:
# rpm -qa *syslog*
Eсли SUSE Linux Enterprise Server, то выполните команду:
# zypper search *syslog* --installed-only | grep 'i |'
На экран будет выведено название используемой службы. Если результат отличается от rsyslog
или syslog-ng
, то рекомендуется выполнить установку соответствующей службы.
Настройка rsyslog
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
ОС | Команда |
---|---|
для систем на базе deb (Debian / Ubuntu) | # apt-get update # apt-get install rsyslog |
для систем на базе RPM (Red Hat / CentOS) | # yum -y install rsyslog |
Добавьте службу rsyslog
в автозагрузку и запустите:
# systemctl enable rsyslog
# systemctl start rsyslog
Конфигурационный файл службы /etc/rsyslog.conf
по умолчанию имеет следующую структуру:
Первой идет секция модулей:
- Модули ввода — можно рассматривать как способ сбора информации из различных источников, начинаются с
im
; - Модули вывода — позволяют отправлять сообщения в файлы, по сети или в базу данных, имя начинается на
om
; - Модули фильтрации — позволяют фильтровать поступающие сообщения по различным критериям, начинаются с
fm
; - Модули парсинга — предоставляют расширенные возможности для синтаксического анализа сообщения, начинаются с
pm
.
Далее идет секция глобальных директив:
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
предписывает записывать события в формате<PRI> TIMESTAMP HOSTNAME TAG MSG
;$RepeatedMsgReduction on
предписывает отбрасывать дубликаты сообщений;$WorkDirectory /var/spool/rsyslog
— задает директорию для рабочих файлов службы;$IncludeConfig /etc/rsyslog.d/*.conf
— задает директорию дополнительных файлов конфигурации.
Директивы $FileOwner
, $FileGroup
и прочие — устанавливают права доступа, владельца и группу по умолчанию для лог-файлов.
Для настройки пересылки событий в лог-коллектор необходимо в конец конфигурационного файла rsyslog.conf
добавить следующую строку:
auth,authpriv.* @@<адрес лог-коллектора>:2671
Где:
<ip-адрес лог-коллектора>
- IP-адрес лог-коллектора;2671
- номер порта для подключения ОС семейства Unix как источник событий;@@
- указывается в случае, если используется протоколTCP
;@
- указывается в случае, если используется протоколUDP
.
Для завершения настройки необходимо перезапустить службу rsyslog
.
Настройка отправки событий от службы auditd
Чтобы служба rsyslog
принимала и отправляла поток событий от службы auditd
, необходимо создать файл /etc/rsyslog.d/30-auditd.conf
и указать в нем следующие параметры:
module(load="imfile" mode="inotify" PollingInterval="10")
input(type="imfile" File="/var/log/audit/audit.log"
Severity="info"
Facility="local6")
local6.* @@<IP-адрес лог-коллектора>:2671
Где:
<ip-адрес лог-коллектора>
- IP-адрес лог-коллектора;2671
- номер порта для подключения ОС семейства Unix как источник событий;@@
- указывается в случае, если используется протоколTCP
;@
- указывается в случае, если используется протоколUDP
.
Настройка отправки событий от службы UFW
и firewalld
Служба rsyslog
может самостоятельно передавать события от служб firewalld
и UFW
.
При необходимости вы можете подключить службы как отдельный источник.
Описание настройки служб описано в разделе UFW и firewalld.
Настройка syslog-ng
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
ОС | Команда |
---|---|
для систем на базе deb (Debian / Ubuntu) | # apt-get update # apt-get install syslog-ng |
для систем на базе RPM (Red Hat / CentOS | # yum -y install syslog-ng |
Добавьте службу syslog-ng
в автозагрузку и запустите:
# systemctl enable syslog-ng
# systemctl start syslog-ng
В конфигурационном файле /etc/syslog-ng/syslog-ng.conf
настройте службу на сбор необходимых событий (пример файла приведен в Приложении А).
В начале файла укажите версию службы (если она не указана) и включенные конфигурационные файлы:
@version: 3.35
@include "scl.conf"
@include "/etc/syslog-ng/conf.d/*.conf"
В блоке options
установите следующие глобальные переменные:
options {
flush_lines (0);
time_reopen (10);
log_fifo_size (1000);
chain_hostnames (off);
use_dns (no);
dns-cache(no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
stats-freq(0);
mark-freq(0);
};
В блоке Sources
укажите источники получения логов, например:
source s_sys {
system();
internal();
};
В блоке Destinations
укажите пути к файлам, собираемых журналов:
# стандартные файлы журналов.
#
destination d_auth { file("/var/log/auth.log"); };
destination d_auth { file("/var/log/auth.log"); };
destination d_daemon { file("/var/log/daemon.log"); };
destination d_kern { file("/var/log/kern.log"); };
destination d_lpr { file("/var/log/lpr.log"); };
destination d_mail { file("/var/log/mail.log"); };
destination d_syslog { file("/var/log/syslog"); };
destination d_user { file("/var/log/user.log"); };
destination d_uucp { file("/var/log/uucp.log"); };
# журналы, поступающие от почтовых подсистем.
#
destination d_mailinfo { file("/var/log/mail.info"); };
destination d_mailwarn { file("/var/log/mail.warn"); };
destination d_mailerr { file("/var/log/mail.err"); };
# универсальные файлы журналов.
#
destination d_debug { file("/var/log/debug"); };
destination d_error { file("/var/log/error"); };
destination d_messages { file("/var/log/messages"); };
# root's консоль.
#
destination d_mlal { usertty("*"); };
# virtual консоль.
#
destination d_cons { file("/dev/console"); };
# отптравка сообщений в лог-коллектор платформы
#
destination d_net { tcp("<IP-адрес лог-коллектора>" port(2671) log_fifo_size(1000)); };
Где, в параметре destination d_net
укажите следующие данные:
<IP-адрес лог-коллектора>
- IP-адрес лог-коллектора;2671
- номер порта для подключения ОС семейства Unix как источник событий.
В блоке Filters
настройте правила и уровни журналирования, чтобы установить какие именно сообщения будут отправляться. Рекомендуются следующие настройки:
filter f_dbg { level(debug); };
filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_err { level(err); };
filter f_crit { level(crit .. emerg); };
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };
filter f_error { level(err .. emerg) ; };
filter f_messages { level(info,notice,warn) and
not facility(auth,authpriv,cron,daemon,mail,news); };
filter f_audit { program("audit"); };
filter f_auth { facility(auth, authpriv); };
filter f_daemon { facility(daemon) and not filter(f_debug); };
filter f_kern { facility(kern) and not filter(f_debug); };
filter f_lpr { facility(lpr) and not filter(f_debug); };
filter f_local { facility(local0, local1, local3, local4, local5,
local6, local7) and not filter(f_debug); };
filter f_mail { facility(mail) and not filter(f_debug); };
filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };
filter f_user { facility(user) and not filter(f_debug); };
filter f_uucp { facility(uucp) and not filter(f_debug); };
filter f_cnews { level(notice, err, crit) and facility(news); };
filter f_cother { level(debug, info, notice, warn) or facility(daemon, mail); };
filter f_console { level(warn .. emerg); };
В блоке Log path
укажите маршрутизацию принятого службой логирования потока событий (блок Source
) в указанные файлы логов (блока Destination
) в соответствии с заданными фильтрами:
log { source(s_sys); filter(f_auth); destination(d_auth); };
log { source(s_sys); filter(f_daemon); destination(d_daemon); };
log { source(s_sys); filter(f_kern); destination(d_kern); };
log { source(s_sys); filter(f_lpr); destination(d_lpr); };
log { source(s_sys); filter(f_syslog3); destination(d_syslog); };
log { source(s_sys); filter(f_user); destination(d_user); };
log { source(s_sys); filter(f_uucp); destination(d_uucp); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
log { source(s_sys); filter(f_debug); destination(d_debug); };
log { source(s_sys); filter(f_error); destination(d_error); };
log { source(s_sys); filter(f_messages); destination(d_messages); };
log { source(s_sys); filter(f_console); destination(d_cons); };
log { source(s_sys); filter(f_crit); destination(d_mlal); };
# для отправки сообщений на удаленный сайт
# убедитесь, что строка ниже не закомментирована
log { source(s_sys); filter(f_auth); destination(d_net); };
Внимание! убедитесь, что не закомментирована строка
log { source(s_sys); filter(f_auth); destination(d_net); }
Для завершения настройки необходимо перезапустить службу syslog-ng
.
Настройка отправки событий от службы auditd
Для отправки событий собираемых службой auditd
на лог-коллектор, в директории /etc/syslog-ng/conf.d
добавьте файл audit_messages.conf
со следующими параметрами:
source s_audit {
file (/var/log/audit/audit.log persist-name (s_auditd_for_siem) program_override("auditd"));
};
destination d_auditd {
tcp (
"<IP-адрес лог-коллектора>"
port (2671)
persist-name(d_auditd_for_siem)
);
};
log {
source(s_audit); destination(d_auditd);
};
Где, в параметре destination d_auditd
укажите следующие параметры:
<IP-адрес лог-коллектора>
- IP-адрес лог-коллектора;2671
- номер порта для подключения ОС семейства Unix как источник событий.
Настройка отправки событий от службы UFW
и firewalld
Служба syslog-ng
может самостоятельно передавать события от служб firewalld
и UFW
.
При необходимости вы можете подключить службы как отдельный источник.
Описание настройки служб описано в разделе UFW и firewalld.
Настройка службы auditd
Служба auditd
предназначена для мониторинга событий операционной системы и записи их в журналы событий.
Настройка службы включает в себя установку и подключение службы в качестве источника событий для Платформы Радар.
Если служба не установлена, то вы можете ее установить. Для этого выполните соответствующую команду:
ОС | Команда |
---|---|
для систем на базе deb (Debian / Ubuntu) | # sudo apt-get install auditd # sudo apt-get install audispd-plugins |
для систем на базе RPM (Red Hat / CentOS) | # yum -y install auditd # yum -y install audispd-plugins |
Настройка конфигурационного файла службы auditd
Конфигурационный файл службы - /etc/audit/auditd.conf
- содержит информацию о конфигурации, специфичную для аудита. Структура файла: одно ключевое слово конфигурации в каждой строке, знак равенства, а затем следует соответствующая информация о конфигурации.
Если у вас ОС на базе deb (Debian / Ubuntu), то в /etc/audit/auditd.conf
укажите следующее содержимое:
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = adm
log_format = ENRICHED
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NUMERIC
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
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
distribute_network = no
Если у вас ОС на базе RPM (Red Hat / CentOS), то в /etc/audit/auditd.conf
укажите следующее содержимое:
local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = adm
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 6
name_format = HOSTNAME
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
transport = TCP
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
q_depth = 1200
overflow_action = SYSLOG
max_restarts = 10
plugin_dir = /etc/audit/plugins.d
end_of_event_timeout = 2
Описание параметров конфигурационного файла /etc/audit/auditd.conf
приведено в Приложении Б.
Настройка правил расширенного аудита
Если у вас ОС на базе deb (Debian / Ubuntu), то создайте файл с правилами расширенного аудита /etc/audit/rules.d/extended.rules
и добавьте туда следующие правила:
-i
--reset-lost
-a never,exit -F arch=b64 -S execve -F exe=/usr/sbin/crond
-a never,exit -F arch=b64 -S execve -F exe=/lib/systemd/systemd-logind
-a never,filesystem -F fstype=tracefs
-a never,filesystem -F fstype=debugfs
-a exclude,never -F msgtype=BPRM_FCAPS
-a exclude,always -F msgtype=BPF
## kernel modules
-a always,exit -F arch=b64 -S finit_module,init_module,delete_module -F auid!=unset
-a always,exit -F arch=b64 -S socket -F a0=2
-a always,exit -F arch=b32 -S socket -F a0=2
-a always,exit -F arch=b64 -S socket -F a0=0xa
-a always,exit -F arch=b32 -S socket -F a0=0xa
-a always,exit -F arch=b64 -S socket -F a0=0x11
-a always,exit -F arch=b32 -S socket -F a0=0x11
-a always,exit -F arch=b64 -S execve,execveat -F auid=unset -F euid>=0 -F euid<1000
-a always,exit -F arch=b32 -S execve,execveat -F auid=unset -F euid>=0 -F euid<1000
## listen
-a always,exit -F arch=b64 -S listen
-a always,exit -F arch=b32 -S listen
## process UID/GID
-a always,exit -F arch=b64 -S setuid,setgid,setreuid,setregid
-a always,exit -F arch=b32 -S setuid,setgid,setreuid,setregid
## process tracing
-a always,exit -F arch=b64 -S ptrace
-a always,exit -F arch=b32 -S ptrace
## ACLs and file attributes
-a always,exit -F arch=b64 -S setxattr,fsetxattr,lsetxattr
-a always,exit -F arch=b32 -S setxattr,fsetxattr,lsetxattr
## time
-a exit,always -F arch=b64 -S adjtimex,settimeofday,clock_settime
-a exit,always -F arch=b32 -S adjtimex,settimeofday,clock_settime
## hostname
-a always,exit -F arch=b64 -S sethostname,setdomainname
-a always,exit -F arch=b32 -S sethostname,setdomainname
## pam
-a always,exit -F dir=/etc/pam.d -F perm=wa
-a always,exit -F dir=/etc/security -F perm=wa
## passwd
-a always,exit -F path=/etc/passwd -F auid!=unset -F auid>=1000 -F perm=r
-a always,exit -F path=/etc/group -F auid!=unset -F auid>=1000 -F perm=r
-a always,exit -F path=/etc/shadow -F perm=r -F auid!=unset
-a always,exit -F path=/etc/passwd -F perm=wa
-a always,exit -F path=/etc/group -F perm=wa
-a always,exit -F path=/etc/shadow -F perm=wa
-a always,exit -F path=/etc/gshadow -F perm=wa
## COD
-a always,exit -F path=/etc/nsswitch.conf -F perm=wa
-a always,exit -F path=/etc/krb5.conf -F perm=wa
-a always,exit -F path=/etc/krb5.conf.d -F perm=wa
-a always,exit -F path=/etc/krb5.keytab -F perm=wa
## audit
-a always,exit -F path=/etc/libaudit.conf -F perm=wa
-a always,exit -F dir=/etc/audit -F perm=wa
## init
-a always,exit -F path=/etc/fstab -F perm=wa
## network
-a always,exit -F path=/etc/issue -F perm=wa
-a always,exit -F path=/etc/issue.net -F perm=wa
-a always,exit -F path=/etc/hosts -F perm=wa
-a always,exit -F path=/etc/hostname -F perm=wa
-a always,exit -F path=/etc/resolv.conf -F perm=wa
## login defaults
-a always,exit -F path=/etc/login.defs -F perm=wa
-a always,exit -F path=/etc/securetty -F perm=wa
## profiles
-a always,exit -F path=/etc/bashrc -F perm=wa
-a always,exit -F path=/etc/profile -F perm=wa
-a always,exit -F path=/etc/profile.d -F perm=wa
-a always,exit -F path=/etc/skel -F perm=wa
## package management
-a always,exit -F path=/etc/yum.conf -F perm=wa
## mail
-a always,exit -F path=/etc/postfix -F perm=wa
-a always,exit -F path=/etc/aliases -F perm=wa
## ntp
-a always,exit -F path=/etc/ntp.conf -F perm=wa
## syslog
-a always,exit -F path=/etc/rsyslog.conf -F perm=wa
-a always,exit -F path=/etc/rsyslog.d -F perm=wa
## kernel
-a always,exit -F path=/etc/sysctl.conf -F perm=wa
-a always,exit -F path=/etc/sysctl.d -F perm=wa
-a always,exit -F path=/etc/modprobe.d -F perm=wa
## logrotate
-a always,exit -F path=/etc/logrotate.conf -F perm=wa
-a always,exit -F path=/etc/logrotate.d -F perm=wa
## mandatory access control
-a always,exit -F path=/etc/selinux/config -F perm=wa
## ssh
-a always,exit -F path=/etc/ssh -F perm=wa
## ld.so
-a always,exit -F path=/etc/ld.so.conf -F perm=wa
-a always,exit -F path=/etc/ld.so.conf.d -F perm=wa
## sudo
-a always,exit -F path=/etc/sudoers.d -F perm=r
-a always,exit -F path=/etc/sudoers -F perm=r
-a always,exit -F path=/etc/sudoers.d -F perm=wa
-a always,exit -F path=/etc/sudoers -F perm=wa
-a always,exit -F path=/etc/sudo.conf -F perm=wa
-a always,exit -F path=/etc/sudo-ldap.conf -F perm=wa
## scheduler
-a always,exit -F path=/etc/cron.allow -F perm=wa
-a always,exit -F path=/etc/cron.deny -F perm=wa
-a always,exit -F path=/etc/cron.d -F perm=wa
-a always,exit -F path=/etc/cron.daily -F perm=wa
-a always,exit -F path=/etc/cron.hourly -F perm=wa
-a always,exit -F path=/etc/cron.monthly -F perm=wa
## boot
-a always,exit -F dir=/boot -F perm=wa
## bin
-a always,exit -F dir=/bin -F perm=wa
-a always,exit -F dir=/usr/bin -F perm=wa
-a always,exit -F dir=/sbin -F perm=wa
-a always,exit -F dir=/usr/sbin -F perm=wa
-a always,exit -F dir=/usr/local/bin -F perm=wa
-a always,exit -F dir=/usr/local/sbin -F perm=wa
-a always,exit -F dir=/usr/libexec -F perm=wa
## lib
-a always,exit -F dir=/lib64 -F perm=wa
-a always,exit -F dir=/usr/lib64 -F perm=wa
-a always,exit -F dir=/lib -F perm=wa
-a always,exit -F dir=/usr/lib -F perm=wa
## log
-a always,exit -F dir=/var/log -F perm=r -F euid>=1000
-a always,exit -F dir=/var/log -F perm=wa -F auid!=unset
## spool
-a always,exit -F path=/var/spool/cron -F perm=wa
-a always,exit -F path=/var/spool/anacron -F perm=wa
## www
-a always,exit -F path=/var/www -F perm=wa
## home
-a always,exit -F dir=/home -F perm=r -F auid!=unset
-a always,exit -F dir=/home -F perm=wa -F auid!=unset
## root
-a always,exit -F dir=/root -F perm=r -F auid!=unset
-a always,exit -F dir=/root -F perm=wa -F auid!=unset
## Finalize rules
-e 1
Если у вас ОС на базе RPM (Red Hat / CentOS), то в /etc/audit/rules.d/extended.rules
помимо правил выше, укажите следующее содержимое:
-i
--reset-lost
-a always,exclude -F msgtype=CRYPTO_KEY_USER
-a always,exclude -F msgtype=CRYPTO_SESSION
-a always,exclude -F msgtype=NETFILTER_CFG
-a always,exclude -F msgtype=SYSTEM_RUNLEVEL
-a always,exclude -F msgtype=BPF
-e 1
Настройка плагина syslog
для записи логов auditd
В файл /etc/audit/plugins.d/syslog.conf
внесите следующие изменения:
Для Debian 10, CentOS, Fedora и Ubuntu:
# This file controls the configuration of the syslog plugin.
# It simply takes events and writes them to syslog. The
# arguments provided can be the default priority that you
# want the events written with. And optionally, you can give
# a second argument indicating the facility that you want events
# logged to. Valid options are LOG_LOCAL0 through 7, LOG_AUTH,
# LOG_AUTHPRIV, LOG_DAEMON, LOG_SYSLOG, and LOG_USER.
active = yes
direction = out
path = builtin_syslog
type = builtin
args = LOG_LOCAL6
format = string
Для Debian 11 и выше:
# This file controls the configuration of the syslog plugin.
# It simply takes events and writes them to syslog. The
# arguments provided can be the default priority that you
# want the events written with. And optionally, you can give
# a second argument indicating the facility that you want events
# logged to. Valid options are LOG_LOCAL0 through 7, LOG_AUTH,
# LOG_AUTHPRIV, LOG_DAEMON, LOG_SYSLOG, and LOG_USER.
active = yes
direction = out
path = /sbin/audisp-syslog
type = always
args = LOG_LOCAL6
format = string
Перезапуск служб
После настройки конфигурации любой службы, её необходимо перезапустить.
Если в ОС используется система инициализации Upstart
, то выполните команду:
# service <Название службы> restart
Если System V
, то выполните команду:
# /etc/init.d/<Название службы> restart
Настройка брандмауэра
Если используется брандмауэр, то необходимо открыть порт 2671/TCP.
Для этого выполните следующую команду:
- если используется служба
firewalld
:
# firewall-cmd --permanent --add-port=2671/tcp
- если используется служба
iptables
:
# iptables -A OUTPUT -p tcp --dport 2661 -j ACCEPT
- если в вашей ОС используется
SElinux
, то чтобы проверить активен ли он выполните команду
# getenforce
Если был получен ответ Permissive
, то служба остановлена; если Enforcing
, то служба запущена и ее необходимо настроить следующим образом:
# semanage port -a -t syslogd_port_t -p tcp 2661
# ausearch -c 'audisp-remote' --raw | audit2allow -M my-audispremote
# semodule -X 300 -i my-audispremote.pp
При необходимости можно отключить службу командой:
# setenforce 0
Настройка лог-коллектора
Внимание! убедитесь что источник и лог коллектора настроены на обмен сообщениями по одному протоколу. В данном разделе приведены примеры на основе протокола
TCP
.
В конфигурационный файл лог-коллектора config.yaml
добавьте компонент сбора событий input
.
tcp_input_linux: & tcp_input_linux
id: "tcp_input_linux"
host: "<ip адрес лог-коллектора>`"
port: <порт для приема соединений>`
sock_buf_size: 0
format: "json"
log_level: "INFO"
Где:
host: <ip адрес лог-коллектора>
- адрес, на котором запущен коллектор;port: <порт для приема соединений>
- порт, на который будут приниматься события.
Настройте компонент отправки событий output
.
tcp_output_linux: & tcp_output_linux
id: "tcp_output_linux"
target_host: "<ip адрес Платформы Радар>"
port: 2671
sock_buf_size: 0
log_level: "INFO"
Где:
target_host: <ip адрес Платформы Радар>
- адрес Платформы Радар;port: 2671
- номер порта для подключения ОС семейства Unix как источник событий.
Укажите добавленные компоненты сбора и отправки в разделы collectors
и senders
соответственно:
collectors:
tcp_receiver:
- <<: *tcp_input_linux
senders:
port: 48001
tcp:
- <<: *tcp_output_linux
Добавьте маршрут взаимодействия между компонентами сбора событий и компонентами отправки событий:
route_1_linux: &route_1_linux
collector_id:
- "tcp_input_linux"
sender_id:
- "tcp_output_linux"
Включите маршрут в разделе routers
:
routers:
- <<: *route_1_linux
Включение источника на платформе
Перейдите в веб-интерфейс платформы и выполните следующие действия:
- Перейдите в раздел Администрирование → Источники → Управление источниками.
- Включите источник Unix/Linux.
- Нажмите кнопку Синхронизировать.
- Перейдите в раздел События и проверьте наличие потока событий от данного источника.
Приложение A. Пример файла конфигурации службы syslog-ng
Пример файла /etc/syslog-ng/syslog-ng.conf
:
@version: 3.35
@include "scl.conf"
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation.
# First, set some global options.
#options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
# dns_cache(no); owner("root"); group("adm"); perm(0640);
# stats_freq(0); bad_hostname("^gconfd$"); mark-freq(0);
#};
options {
flush_lines (0);
time_reopen (10);
log_fifo_size (1000);
chain_hostnames (off);
use_dns (no);
dns-cache(no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
stats-freq(0);
mark-freq(0);
};
########################
# Sources
########################
# This is the default behavior of sysklogd package
# Logs may come from unix stream, but not from another machine.
#
source s_sys {
system();
internal();
};
# If you wish to get logs from remote machine you should uncomment
# this and comment the above source line.
#
#source s_net { tcp(ip(127.0.0.1) port(1000)); };
########################
# Destinations
########################
# First some standard logfile
#
destination d_auth { file("/var/log/auth.log"); };
#destination d_cron { file("/var/log/cron.log"); };
destination d_daemon { file("/var/log/daemon.log"); };
destination d_kern { file("/var/log/kern.log"); };
destination d_lpr { file("/var/log/lpr.log"); };
destination d_mail { file("/var/log/mail.log"); };
destination d_syslog { file("/var/log/syslog"); };
destination d_user { file("/var/log/user.log"); };
destination d_uucp { file("/var/log/uucp.log"); };
# This files are the log come from the mail subsystem.
#
destination d_mailinfo { file("/var/log/mail.info"); };
destination d_mailwarn { file("/var/log/mail.warn"); };
destination d_mailerr { file("/var/log/mail.err"); };
# Logging for INN news system
#
#destination d_newscrit { file("/var/log/news/news.crit"); };
#destination d_newserr { file("/var/log/news/news.err"); };
#destination d_newsnotice { file("/var/log/news/news.notice"); };
# Some 'catch-all' logfiles.
#
destination d_debug { file("/var/log/debug"); };
destination d_error { file("/var/log/error"); };
destination d_messages { file("/var/log/messages"); };
# The root's console.
#
destination d_mlal { usertty("*"); };
# Virtual console.
#
destination d_cons { file("/dev/console"); };
# The named pipe /dev/xconsole is for the nsole' utility. To use it,
# you must invoke nsole' with the -file' option:
#
# $ xconsole -file /dev/xconsole [...]
#
#destination d_xconsole { pipe("/dev/xconsole"); };
# Send the messages to an other host
#
destination d_net { tcp("<IP-адрес лог-коллектора>" port(2661) log_fifo_size(1000)); };
# Debian only
#destination d_ppp { file("/var/log/ppp.log"); };
########################
# Filters
########################
# Here's come the filter options. With this rules, we can set which
# message go where.
filter f_dbg { level(debug); };
filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_err { level(err); };
filter f_crit { level(crit .. emerg); };
filter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };
filter f_error { level(err .. emerg) ; };
filter f_messages { level(info,notice,warn) and
not facility(auth,authpriv,cron,daemon,mail,news); };
filter f_audit { program("audit"); };
#filter f_auth { facility(auth, authpriv) and not filter(f_debug) and not filter(f_audit); };
filter f_auth { facility(auth, authpriv); };
#filter f_cron { facility(cron) and not filter(f_debug); };
filter f_daemon { facility(daemon) and not filter(f_debug); };
filter f_kern { facility(kern) and not filter(f_debug); };
filter f_lpr { facility(lpr) and not filter(f_debug); };
filter f_local { facility(local0, local1, local3, local4, local5,
local6, local7) and not filter(f_debug); };
filter f_mail { facility(mail) and not filter(f_debug); };
#filter f_news { facility(news) and not filter(f_debug); };
filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };
filter f_user { facility(user) and not filter(f_debug); };
filter f_uucp { facility(uucp) and not filter(f_debug); };
filter f_cnews { level(notice, err, crit) and facility(news); };
filter f_cother { level(debug, info, notice, warn) or facility(daemon, mail); };
#filter f_ppp { facility(local2) and not filter(f_debug); };
filter f_console { level(warn .. emerg); };
########################
# Log paths
########################
log { source(s_sys); filter(f_auth); destination(d_auth); };
#log { source(s_sys); filter(f_cron); destination(d_cron); };
log { source(s_sys); filter(f_daemon); destination(d_daemon); };
log { source(s_sys); filter(f_kern); destination(d_kern); };
log { source(s_sys); filter(f_lpr); destination(d_lpr); };
log { source(s_sys); filter(f_syslog3); destination(d_syslog); };
log { source(s_sys); filter(f_user); destination(d_user); };
log { source(s_sys); filter(f_uucp); destination(d_uucp); };
log { source(s_sys); filter(f_mail); destination(d_mail); };
#log { source(s_sys); filter(f_mail); filter(f_info); destination(d_mailinfo); };
#log { source(s_sys); filter(f_mail); filter(f_warn); destination(d_mailwarn); };
#log { source(s_sys); filter(f_mail); filter(f_err); destination(d_mailerr); };
#log { source(s_sys); filter(f_news); filter(f_crit); destination(d_newscrit); };
#log { source(s_sys); filter(f_news); filter(f_err); destination(d_newserr); };
#log { source(s_sys); filter(f_news); filter(f_notice); destination(d_newsnotice); };
#log { source(s_sys); filter(f_cnews); destination(d_console_all); };
#log { source(s_sys); filter(f_cother); destination(d_console_all); };
#log { source(s_sys); filter(f_ppp); destination(d_ppp); };
log { source(s_sys); filter(f_debug); destination(d_debug); };
log { source(s_sys); filter(f_error); destination(d_error); };
log { source(s_sys); filter(f_messages); destination(d_messages); };
log { source(s_sys); filter(f_console); destination(d_cons); };
log { source(s_sys); filter(f_crit); destination(d_mlal); };
# All messages send to a remote site
#
log { source(s_sys); filter(f_auth); destination(d_net); };
###
# Include all config files in /etc/syslog-ng/conf.d/
###
@include "/etc/syslog-ng/conf.d/*.conf"
Приложение Б. Описание параметров файла auditd.conf
Перечень рекомендуемых параметров конфигурации приведен в таблице:
Ключевое слово | Описание | Debian / Ubuntu | Red Hat / CentOS |
---|---|---|---|
local_events |
Параметр определяет, необходимо ли службе собирать локальные события | yes |
yes |
write_logs |
Параметр определяет, необходимо ли службе записывать журналы | yes |
yes |
log_file |
Полный путь к файлу журнала, в котором будут храниться записи аудита | /var/log/audit/audit.log |
/var/log/audit/audit.log |
log_group |
Группа, которая применяется к разрешениям файла журнала | adm |
adm |
log_format |
Формат журнала. Параметр описывает, как информация должна храниться. Доступные значения - RAW - запись аудита будут храниться точно так, как его отправляет ядро;- NOLOG - запись аудита храниться не будет;- ENRICHED - запись аудита будет храниться с обогащением: добавится информация о uid, gid, системных вызовах, архитектуре и адресе сокета перед записью события на диск. |
ENRICHED |
RAW |
flush |
Команда сброса данных на диск. Допустимые значения: - none - incremental - data - sync |
INCREMENTAL_ASYNC |
INCREMENTAL_ASYNC |
freq |
Сколько записей следует записать перед выполнением команды flush . Доступно только, если flush имеет значение incremental |
50 |
50 |
max_log_file |
Максимальный размер файла журнала, в мегабайтах | 8 |
8 |
num_logs |
Количество сохраняемых файлов журнала | 5 |
5 |
priority_boost |
Необходимое повышение приоритета | 4 |
6 |
disp_qos |
Поведение службы при потерях между службой и диспетчером. Допустимые значения - lossy - блокировать связь;- lossless - не блокировать связь |
lossy |
параметр не указывается |
dispatcher |
Это программа, которая запускается службой при запуске. Она будет передавать копии всех событий аудита на стандартный ввод этого приложения. Убедитесь, что вы доверяете приложению, которое вы добавляете в эту строку, поскольку оно запускается с правами root | /sbin/audispd |
параметр не указывается |
name_format |
Формат наименования узлов (node) компьютеров, которые добавляются в поток событий аудита. Допустимые значения: - none - в событие аудита не указывается имя компьютера;- hostname - указывается имя, возвращаемое запросом gethostname - fqd - полное доменное имя компьютера- numeric - тоже что и fqd , но при этом определяется IP-адрес компьютера- user - наименование учетной записи пользователя компьютера |
NUMERIC |
HOSTNAME |
max_log_file_action |
Поведение службы при достижении максимального размера файла журнала. Допустимые значения: - ignore - ничего не делать;- syslog - выдать предупреждение в системный журнал;- suspend - прекратить запись;- rotate - последовательно менять журналы для записи;- keep_logs - аналогичен параметру Rotate , за исключением того, что он не использует параметр num_logs . Это предотвращает перезапись журналов аудита |
ROTATE |
ROTATE |
space_left |
Количество оставшихся на диске мегабайт, при достижении которых служба будет требовать выполнение параметра space_left_action , поскольку в системе начинает заканчиваться дисковое пространство |
75 |
75 |
space_left_action |
Поведение службы когда в системе начало заканчиваться дисковое пространство. Допустимые значения: - ignore - ничего не делать;- syslog - выдать предупреждение в системный журнал;- email - отправить предупреждение на адрес электронной почты, указанный в параметре action_mail_acct и в системный журнал;- exec - выполнить скрипт;- suspend - прекратить запись журналов- single - перевести компьютер в однопользовательский режим- halt - выключить компьютер. |
SYSLOG |
SYSLOG |
verify_email |
Поведение службы для проверки адреса электронной почты | yes |
yes |
action_mail_acct |
Адрес электронной почты или алиас. Значение по умолчанию - root |
root |
root |
admin_space_left |
Количество оставшихся на диске мегабайт, при достижении которых служба будет требовать выполнение параметра admin_space_left_action , поскольку в системе начинает критически не хватать дискового пространства |
50 |
50 |
admin_space_left_action |
Поведение службы когда в системе начинает критически не хватать дискового пространства. Допустимые значения те же, что и для space_left_action |
SUSPEND |
SUSPEND |
disk_full_action |
Какое действие следует предпринять, если служба обнаружила что диск, на который записываются файлы журналов, заполнен. Допустимые значения те же, что и для space_left_action |
SUSPEND |
SUSPEND |
disk_error_action |
Какие действия следует предпринять при возникновении ошибки при записи событий аудита на диск или изменении последовательности журналов. | SUSPEND |
SUSPEND |
use_libwrap |
Параметр определяет, следует ли использовать tcp_wrappers для обнаружения попыток подключения с разрешенных компьютеров |
yes |
yes |
tcp_listen_queue |
Параметр определяет количество допустимых ожидающих соединений в очереди | 5 |
5 |
tcp_max_per_addr |
Параметр определяет количество разрешенных одновременных подключений с одного IP-адреса | 1 |
1 |
tcp_client_max_idle |
Параметр определяет количество секунд, в течение которых допустимо бездействие клиента (не поступают данные), прежде чем служба подаст жалобу для закрытия неактивного подключения. Значение 0 отключает проверку. |
0 |
0 |
enable_krb5 |
Параметр определяет, использовать ли Kerberos 5 для аутентификации и шифрования |
no |
параметр не указывается |
krb5_principal |
Это принципал для этого сервера. По умолчанию используется auditd . Учитывая это значение по умолчанию, сервер будет искать ключ с именем вида Auditd/hostname@EXAMPLE.COM , хранящийся в /etc/audit/audit.key , для аутентификации, где имя хоста — это имя хоста сервера, возвращаемое DNS |
auditd |
auditd |
transport |
Протокол передачи данных. Если установлено значение TCP , будут использоваться только TCP-соединения в виде открытого текста. Если установлено значение KRB5 , для аутентификации и шифрования будет использоваться Kerberos 5 |
параметр не указывается | tcp |
distribute_network |
Параметр определяет, используется ли распределенная сеть | no |
no |
q_depth |
Параметр определяет, насколько большой должна быть внутренняя очередь событий аудита | параметр не указывается | 1200 |
overflow_action |
Параметр определяет, какое действия нужно предпринять службе при переполнении внутренней очереди. Допустимые значения те же, что и для space_left_action |
параметр не указывается | SYSLOG |
max_restarts |
Параметр определяет, сколько раз служба может попытаться перезапустить вышедший из строя плагин | параметр не указывается | 10 |
plugin_dir |
Параметр определяет путь, по которому установлены плагины. | параметр не указывается | /etc/audit/plugins.d |
end_of_event_timeout |
Параметр определяет количество секунд, используемое библиотечными процедурами пользовательского пространства auparse() и утилитами aureport(8) , ausearch(8) для того, чтобы считать событие завершенным при анализе потока журнала событий. |
параметр не указывается | 2 |