Перейти к содержанию

ОС семейства 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 могут происходить потери. Для выбора оптимальных настроек для вашей системы, рекомендуется обратиться в службу технического сопровождения Платформы Радар.

Настройка источника включает в себя следующие процессы:

  1. Настройка службы журналирования.
  2. Настройка службы auditd.
  3. Настройка лог-коллектора.
  4. Проверка настроенной конфигурации.
  5. Включение источника на платформе.

Примечание: все действия при настройке источника должны выполняться от имени суперпользователя.

Настройка службы журналирования

Для отправки событий стандарта 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

Включение источника на платформе

Перейдите в веб-интерфейс платформы и выполните следующие действия:

  1. Перейдите в раздел АдминистрированиеИсточникиУправление источниками.
  2. Включите источник Unix/Linux.
  3. Нажмите кнопку Синхронизировать.
  4. Перейдите в раздел События и проверьте наличие потока событий от данного источника.

Приложение 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