Skip to main content

Логгирование

Демоны логгирования

WAF между логгером и фаером.

системные rsyslog, journalctl
ИБ auditd
WAF modsecurity
Системное логгирование

Есть rsyslog и journalctl. journalctl постепенно заменяет rsyslog.

Journalctl

sudo journalctl Просмотреть системный журнал
sudo journalctl -u ssh Логи конкретной службы
sudo journalctl -f Последние логи (как tail -f) 
sudo journalctl -p err Только ошибки

Journalctl по умолчанию сохраняет логи в ОП

Rsyslog

Rsyslog нужен, если:

  • нужны обычные текстовые файлы /var/log/auth.log, /var/log/syslog;
  • необходима ротацию логов через logrotate;
  • нужно отправлять логи на внешний syslog-сервер (например, в SIEM).

Установка: 

sudo apt install rsyslog
sudo systemctl enable --now rsyslog

Типы логов, настраивается.

Название журнала Расположение

Аутентификация

/var/log/auth.log

Ядро

/var/log/kern.log

Демоны

/var/log/daemon.log

Запуск

/var/log/boot.log

Обновления

/var/log/apt/history.log
/var/log/dpkg.log

Cron

/var/log/cron.log
Драйверы /var/log/dmesg

Размещение настроечных файлов

/etc/rsyslog.conf Основной файл настроек. Дополнительные файлы настроек подключаются в алфавитном порядке из /etc/rsyslog.d/*.conf
/etc/rsyslog.d/50-default.conf Создается при установке. Базовые правила. Можно комментировать. Например 
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none  -/var/log/syslog
mail.*                  -/var/log/mail.log
cron.*                  -/var/log/cron.log
Рекомендованные файлы
10-base.conf Базовые глобальные настройки 
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
20-remote.conf Отправка логов на удалённый сервер 
*.* @@syslog.example.com:514
30-ssh.conf Логи от sshd 
if ($programname == 'sshd' or $programname == 'sudo') then /var/log/security.log
& stop
40-sudo.conf Логи sudo 
if ($programname == 'sudo') then /var/log/sudo.log
99-local.conf Локальные мелкие правки, фильтры, формат вывода

Структура логов: timestamp hostname program identifier log level message content. Можно добавлять хост, с которого было отправлено сообщение. 

Типы событий:

  • kernel: загрузка модулей, аппаратные ошибки, 
  • authentication: попытки входа, изменения паролей
  • service and daemon: работа системных служб и демонов. Запуск служб, ошибки и предупреждения
  • network: подключение сетевых интерфейсов, обнаружение сетевых атак, изменения настроек сети
  • system: общая системная информация о работе операционной системы. Запуск системы, события загрузки, ошибки файловых систем.
  • logging: события журналирования. Создание и ротация журналов, ошибки записи в журналы.

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

# Маркировать сообщения ядра, которые требуют прямого вывода в файл /dev/console
kern.warning;*.err;authpriv.none;mail.crit       /dev/console

# Записывать все сообщения уровня emergency и выше в файл /var/log/emergency.log
*.emerg                         /var/log/emergency.log

# Записывать все сообщения уровня info и выше в файл /var/log/messages
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# Записывать все сообщения уровня notice и выше в файл /var/log/messages
*.notice                        /var/log/messages

# Записывать все сообщения уровня warning и выше в файл /var/log/messages
*.warn                          /var/log/messages

# Записывать все сообщения уровня error и выше в файл /var/log/errors.log
*.err                           /var/log/errors.log

# Записывать все сообщения уровня crit и выше в файл /var/log/critical.log
*.crit                          /var/log/critical.log

# Записывать все сообщения уровня alert и выше в файл /var/log/alert.log
*.alert                         /var/log/alert.log

# Записывать все сообщения уровня debug и выше в файл /var/log/debug.log
*.debug                         /var/log/debug.log

# Записывать все сообщения от локальных7 в файл /var/log/local7.log
local7.*                        /var/log/local7.log

Для изменения формата сообщений изменяем файл sudo nano /etc/rsyslog.conf 

$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%\n" #добавляем шаблон
auth,authpriv.*                 /var/log/auth.log;RFC3164fmt #привязываем шаблон к лог файлу

Приоритет syslog считается по формуле facility * 8 + severity. Facility имеет заданные значения, и определяет к какому типу относится событие. Например, facility #0 относится к событиям ядра, а #4 - к событиям систем безопасности.

Severity отвечает за уровень критичности событий, где 0 это максимум(emergency), а уровень 7 - малоинформативные данные, используемые для отладки(debug).

В нашем примере число 38 получается за счет facility 4 и severity 6 (info). 

Журнал аутентификации

/var/log/auth.log Содержит информацию об аутентификации пользователей, включая входы в систему, попытки неудачной аутентификации и другие аутентификационные события.

Типы событий в журнале auth.log

Успешная аутентификация (Successful Authentication). Это может быть вход через SSH, консоль, графический интерфейс и т. д. 

Feb 11 14:23:45 server sshd[1234]: Accepted password for user123 from 192.168.1.100 port 12345 ssh2

Неудачная аутентификация (Failed Authentication). Это может быть вызвано неправильным паролем, недействительным пользователем и т. д. 

Feb 11 14:30:10 server sshd[1234]: Failed password for invaliduser from 192.168.1.50 port 54321 ssh2

Изменение пароля (Password Changes). Это позволяет отслеживать изменения паролей и управлять безопасностью. 

Feb 11 15:45:32 server passwd[5678]: password for user123 has been changed

Изменение параметров аутентификации (Authentication Configuration Changes). 

Feb 11 16:12:20 server login[9876]: PAM (login) session opened for user123 by (uid=0)

Запуск или остановка служб аутентификации (Start/Stop of Authentication Services).  

Feb 11 17:00:05 server systemd: Starting OpenSSH server daemon...

События, связанные с аутентификацией. Проблемы с файлами авторизации, недоступность источников аутентификации, ...

Feb 11 18:30:15 server su: pam_unix(su:session): session opened for user456 by user123(uid=1000)

Журнал ядра

/var/log/kern.log Содержит сообщения ядра Linux, такие как сообщения об ошибках, предупреждения и другую важную информацию о работе ядра.

Типы событий

Сообщения ядра (Kernel Messages). Основные сообщения. Загрузка ядра, проблемах с аппаратным обеспечением, ошибках файловых систем, сетевых событиях, а также другие системные события, связанные с работой ядра. 

Feb 11 08:30:15 server kernel: [    0.000000] Linux version 5.10.0-14-generic (buildd@lcy01-amd64-017) (gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0, GNU ld (GNU Binutils for Ubuntu) 2.36.1) #15-Ubuntu SMP Fri Dec 31 14:49:08 UTC 2021 (Ubuntu 5.10.0-14.15-generic 5.10.21)

Сообщения о загрузке и выгрузке модулей ядра (Kernel Module Loading and Unloading). Полезно для отслеживания загрузки различных драйверов и модулей ядра. 

Feb 11 08:31:45 server kernel: [    3.141592] Module 'nvidia-drm' is loaded.

Сообщения об ошибках ввода-вывода (I/O Errors). Если возникают проблемы с вводом-выводом, такие как ошибки чтения или записи на диске, это может быть отражено в kern.log. Помогает отслеживать проблемы с дисками и файловыми системами. 

Feb 11 09:12:20 server kernel: [  405.837234] ata1: EH complete

Сообщения об ошибках памяти (Memory Errors). Например ошибка ECC (Error-Correcting Code) или ошибка доступа к памяти. 

Feb 11 09:55:10 server kernel: [ 1025.556789] EDAC MC0: 1 CE error on CPU0 memory controller (channel 0 /channel 1 = 0x1/0x0): 0x0000 (corrected)

Сообщения о загрузке и выгрузке ядра (Kernel Boot and Shutdown Messages). Включает сообщения о запуске служб и драйверов. Это полезно для отслеживания процесса загрузки и выявления проблем. 

Feb 11 10:00:05 server kernel: [    0.000000] Initializing cgroup subsys cpuset

Другие системные сообщения ядра (Other Kernel System Messages). В kern.log также могут записываться другие системные сообщения, связанные с работой ядра, такие как события управления питанием, управления процессором и т.д.
Feb 11 10:15:30 server kernel: [  765.320123] ACPI: Battery Slot [BAT0] (battery present)

Журнал демонов

/var/log/daemon.log Сообщения системных служб и демонов, таких как сервисы SSH, FTP, DHCP и другие.

Типы событий

Запуск и остановка демонов (Daemon Start and Stop). 

Feb 11 08:30:15 server systemd[1]: Started OpenSSH server daemon.

Сообщения об ошибках служб (Service Error Messages). Могут содержать информацию о проблемах с конфигурацией, недоступности ресурсов и других критических ситуациях. 

Feb 11 09:45:20 server apache2[1234]: [error] (28)No space left on device: Cannot create SSLMutex

Информационные сообщения (Informational Messages). Содержат отчеты о выполненных действиях, успешных операциях и других системных событиях. 

Feb 11 10:00:05 server cron[5678]: (CRON) INFO (Running @reboot jobs)

Сообщения об ошибках в работе демонов (Daemon Error Messages). Содержат информацию о сбоях, падениях и других аномальных ситуациях, происходящих в процессе выполнения служб. 

Feb 11 11:15:30 server postfix[9876]: fatal: parameter "smtpd_sender_login_maps": file too large

Сообщения о подключении и отключении к демонам (Connection and Disconnection Messages). Отслеживают активность пользователя или других систем, пытающихся взаимодействовать с демоном. 

Feb 11 12:30:45 server sshd[2345]: Accepted publickey for user123 from 192.168.1.100 port 12345 ssh2: RSA SHA256:abc123

Другие системные сообщения (Other System Messages). Не подпадающие под вышеперечисленные категории, но относящиеся к работе демонов и служб в системе. Это может включать сообщения о перезагрузках, обновлениях и других системных событиях. 

Feb 11 13:45:10 server systemd[1]: Reloading.

Журнал запуска

/var/log/boot.log Содержит информацию о процессе загрузки системы, включая загрузку ядра и инициализацию устройств.

Типы событий

Сообщения ядра (Kernel Messages). Сообщения, генерируемые ядром Linux во время загрузки. Информация об оборудовании, обнаруженном ядром, настройка ядра, загрузка драйверов и другие системные события, происходящие во время загрузки. 

[    0.000000] Linux version 5.4.0-91-generic (buildd@lgw01-amd64-035) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #102-Ubuntu SMP Fri Aug 13 23:50:30 UTC 2021 (Ubuntu 5.4.0-91.102-generic 5.4.143)

Сообщения об инициализации системных служб (Service Initialization Messages). Запуск системных служб и демонов, которые запускаются во время загрузки операционной системы. 

[    4.105167] systemd[1]: Started Forward Password Requests to Wall Directory Watch.

Сообщения об ошибке загрузки (Boot Error Messages). 

[FAILED] Failed to start Network Time Synchronization.

Информация о загрузочных скриптах и конфигурации (Boot Scripts and Configuration Information). Выполнение загрузочных скриптов, настройках загрузчика и других параметрах конфигурации, применяемых при загрузке системы. 

[    0.820671] ACPI: Core revision 20200326

Сообщения об успешном завершении загрузки (Boot Completion Messages). В конце файла boot.log обычно содержится информация о завершении процесса загрузки. Это может включать сообщения об успешном запуске всех требуемых служб и демонов. 

[    5.091481] systemd[1]: Started Daily apt download activities.

Другие системные сообщения (Other System Messages). Например, изменения параметров ядра или настройках безопасности. 

[    6.220215] random: crng init done

Журнал обновлений

/var/log/apt/history.log /var/log/dpkg.log Установка, обновление и удаление ПО через APT или dpkg. Пример history.log: 

Start-Date: 2024-02-10  15:20:17
Commandline: apt-get install firefox
Requested-By: user123 (1000)
Install: firefox:amd64 (100.0.0-0ubuntu1), firefox-locale-en:amd64 (100.0.0-0ubuntu1)
End-Date: 2024-02-10  15:21:05

Пример dpkg.log: 

2024-02-10 15:21:05 status installed firefox:amd64 100.0.0-0ubuntu1
2024-02-10 15:21:05 status installed firefox-locale-en:amd64 100.0.0-0ubuntu1

Запись в логе содержит статус установки, времени и дате операции, версии и архитектуре установленных пакетов.

Журнал cron

/var/log/cron.log Запланированные задания, успешные и неудачные выполнения, сообщения или ошибки, связанные с выполнением этих заданий. 

Feb 10 15:00:01 DEVICE_NAME CRON[1234]: (root) CMD (/usr/bin/php /path/to/script.php)

Журнал драйверов

/var/log/dmesg Сообщения, сгенерированные ядром во время загрузки системы, информация о оборудовании и драйверах. 

[    0.000000] Linux version 5.4.0-91-generic (buildd@lcy01-amd64-016) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 (Ubuntu 5.4.0-91.102-generic 5.4.154)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.4.0-91-generic root=UUID=12345678-1234-1234-1234-1234567890ab ro quiet splash
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
...
[    1.234567] sd 0:0:0:0: [sda] Attached SCSI disk
[    1.345678] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    1.456789] random: crng init done
[    1.567890] random: 7 urandom warning(s) missed due to ratelimiting

Каждая строка начинается с квадратных скобок, в которых указывается время (в секундах и долях секунды) с момента запуска системы. Затем идет версия ядра Linux, аргументы командной строки, поддерживаемые процессоры, подключенные устройства (например, жесткие диски), инициализация файловых систем и другие системные действия.

Демон аудита auditd

auditd — демон аудита, используется для отслеживания и регистрации действий в системе (запуск процессов, доступ к файлам и директориям, изменения конфигурации). Записывает обычно в /var/log/audit/. Основные файлы, используемые auditd:

  • audit.log — основной журнал аудита. Подробная информация о событиях (время, тип, идентификатор процесса, действие, выполненное пользователем, и другие детали).
  • audit.log.[N] — это архивные файлы аудита, которые содержат старые записи аудита. Например, audit.log.1

Формат логов аудита, создаваемых auditd, обычно структурирован и содержит различные поля, представляющие информацию о событии аудита. Вот типичный формат записи в логе auditd:

type=SYSCALL msg=audit(1625525281.877:123): arch=c000003e syscall=2 success=yes exit=0 a0=7ffdf44d1eab a1=0 a2=1 a3=0 items=2 ppid=29942 pid=29943 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="ls" exe="/bin/ls" key="audit-wazuh-r"
Поле Описание
type Тип события аудита, например, SYSCALL, CWD, EXECVE, SOCKET, и т. д.
msg Общее сообщение аудита
audit(timestamp:serial) Временная метка и серийный номер события аудита
arch Архитектура процессора
syscall Имя системного вызова, связанного с событием
success Успешность выполнения системного вызова
exit Код завершения системного вызова
a0-a3
 
Регистры системного вызова
items Количество элементов в событии аудита.
ppid Идентификатор родительского процесса
pid Идентификатор процесса
auid Идентификатор аудита пользователя.
uid Идентификатор пользователя.
gid Идентификатор группы.
euid/suid/fsuid Эффективный, фактический и файловый идентификаторы пользователя.
egid/sgid/fsgid Эффективный, фактический и файловый идентификаторы группы.
tty
 
Терминал, связанный с процессом
ses Идентификатор сеанса аудита
comm Имя исполняемого файла
exe Путь к исполняемому файлу
key Ключ, связанный с событием аудита

Это общий формат, и поля могут варьироваться в зависимости от типа события и конфигурации auditd.

Отличия auditd от журналов в Linux

  1. auditd предназначен для аудита событий безопасности, а именно для мониторинга и анализа активности на системе с целью обнаружения и предотвращения угроз безопасности, когда как обычные журналы, такие как /var/log/syslog, обычно используются для отслеживания работы системы, включая запуск и остановку служб, сообщения о состоянии аппаратного обеспечения и другие системные события.
  2. auditd обычно настраивается администратором системы для мониторинга конкретных событий безопасности в соответствии с требованиями безопасности системы, в то время как обычные журналы логов создаются и используются системой по умолчанию для регистрации различных событий и действий на системе.