Аудит Unix

На Unix-системах существует множество инструментов для мониторинга событий

Syslog

Это стандартный механизм логирования в Unix-системах, включая Linux. Он используется для сбора логов от ядра, системных служб и приложений. Он был разработан в 1980-х годах и до сих пор широко используется. Поддерживается всеми Unix-системами.

  • Где хранятся логи:

    • /var/log/syslog (общие системные логи)

    • /var/log/auth.log (логи аутентификации)

    • /var/log/kern.log (логи ядра)

    • /var/log/messages (логи системных сообщений, в некоторых дистрибутивах)

  • Настройка: Конфигурация syslog находится в /etc/syslog.conf или /etc/rsyslog.conf (в современных системах).

rsyslog - Усовершенствованная версия syslog, которая используется по умолчанию во многих современных дистрибутивах Linux (например, Ubuntu, Debian, CentOS). Поддерживает фильтрацию, шифрование и отправку логов на удаленные серверы.

  • Пример использования:

    Copy

    auth.* /var/log/auth.log

    Это правило записывает все события аутентификации в файл /var/log/auth.log.

Auditd (Linux Audit Daemon)

Встроенный механизм аудита, который регистрирует события безопасности, такие как изменения файлов, входы пользователей и другие. Он перехватывает системные вызовы от приложений и пользователей, оценивает их по предопределенным правилам и записывает срабатывания в централизованный журнал.

  • Где хранятся логи: Логи хранятся в /var/log/audit/audit.log.

  • Настройка: Конфигурация находится в /etc/audit/auditd.conf, а правила — в /etc/audit/rules.d/.

  • Пример использования:

    bashCopy

    auditctl -w /etc/passwd -p wa -k passwd_changes

    Это правило отслеживает изменения в файле /etc/passwd.

На данный момент auditd не лучший инструмент для работы с контейнерами

OSquery

Инструмент с открытым исходным кодом, который позволяет выполнять SQL-запросы к операционной системе для мониторинга событий и состояния системы. Например, мониторинг запущенных процессов, открытых файлов и сетевых соединений.

  • Настройка: Конфигурация находится в/etc/osquery/osquery.conf

  • Где хранятся логи: По умолчанию логи хранятся в /var/log/osquery/.

Основные возможности OSQuery

  • Мониторинг системы в реальном времени: OSQuery позволяет получать информацию о состоянии системы в режиме реального времени.

  • SQL-интерфейс: Использует SQL-подобный синтаксис для запросов к данным операционной системы.

  • Кросс-платформенность: Работает на Linux, macOS, Windows и других Unix-подобных системах.

  • Гибкость: Поддерживает множество таблиц, каждая из которых предоставляет доступ к определенным данным системы (например, процессы, файлы, сетевые соединения).

Основные команды OSQuery

  • Интерактивный режим:

    osqueryi

    После запуска можно выполнять SQL-запросы, например:

    SELECT * FROM processes;
  • Режим демона:

    osqueryd

    Запускает OSQuery в фоновом режиме для сбора данных по расписанию.

Конфигурация OSQuery

  • Основной конфигурационный файл: /etc/osquery/osquery.conf

  • Пример конфигурации:

    jsonCopy

    {
      "options": {
        "host_identifier": "hostname",
        "schedule_splay_percent": 10
      },
      "schedule": {
        "processes": {
          "query": "SELECT * FROM processes;",
          "interval": 60
        },
        "listening_ports": {
          "query": "SELECT * FROM listening_ports;",
          "interval": 300
        }
      }
    }

    В этом примере:

    • Запрос processes выполняется каждые 60 секунд.

    • Запрос listening_ports выполняется каждые 300 секунд.

У такого подхода есть существенный недостаток. Если процесс завершился между запросами, он не будет зафиксирован.

OSQuery поддерживает событийные таблицы (event-based tables), которые могут отслеживать события в реальном времени. Например, таблица process_events фиксирует события запуска и завершения процессов.

Чтобы залогировать кратковременные процессы, нужно использовать именно такие таблицы.

eBPF

eBPF (extended Berkeley Packet Filter) — это мощная технология в Linux, которая позволяет выполнять код на уровне ядра без необходимости его модификации. Она широко используется для мониторинга системы, анализа производительности и обеспечения безопасности. В контексте мониторинга безопасности eBPF позволяет перехватывать системные вызовы (syscalls), отслеживать процессы, файловые операции, сетевую активность и многое другое.

Основные возможности eBPF для мониторинга безопасности

  • Перехват системных вызовов (syscalls): eBPF позволяет отслеживать вызовы системных функций, таких как open, execve, connect и других.

  • Мониторинг процессов: Отслеживание запуска и завершения процессов, а также их аргументов.

  • Файловые операции: Логирование операций с файлами (открытие, чтение, запись, удаление).

  • Сетевая активность: Анализ сетевых пакетов, подключений и трафика.

  • Безопасность: Обнаружение подозрительной активности, такой как выполнение необычных команд или доступ к критическим файлам.

Существует несколько программ и инструментов, использующих eBPF для логирования и мониторинга в Unix-системах.

Falco — это инструмент для мониторинга безопасности, который использует eBPF для отслеживания системных вызовов и событий в реальном времени. Он помогает выявлять подозрительное поведение в контейнерах и на хостах, предоставляя возможность настраивать правила для обнаружения аномалий.

Last updated

Was this helpful?