Подключение с помощью Syslog-коллектора

Подключение нового Syslog-коллектора

Предварительные условия:

Для установки Syslog-коллектора на определенный узел, необходимо:

  1. На узле создать директорию, в которую необходимо переместить deb-пакет komrad-syslog-collector*.deb из дистрибутива ПК «КОМРАД»;

  2. Установить из папки syslog-collector командой:

    sudo apt install ./komrad-syslog-collector*.deb
  3. Открыть файл komrad-syslog-collector.yaml командой:

    sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml
  4. Отредактировать параметр bus-url, задав IP-адрес сервера ПК «КОМРАД»:

bus:
  servers:
  - nats://IP_ ПК «КОМРАД»:3490
  1. Сохранить файл и перезагрузить syslog-collector командой:

    sudo systemctl restart komrad-syslog-collector.service
  2. Новый Syslog-коллектор отобразится в списке коллекторов в веб-интерфейсе

Подключение новых источников событий

Предварительные условия:

  • убедиться, что существует возможность сетевого взаимодействия между KOMRAD SIEM и источником событий

Настройка Syslog-коллектора

  1. Администрирование → Настройка коллекторов → Коллекторы → Syslog → Выбрать нужный Syslog-коллектор

  2. Нажать иконку «Редактировать» → Настраиваем коллектор :

    1. При необходимости можно изменить имя коллектора

    2. Выбрать активные парсеры (также необходимо проверить совместимость)

    3. Указать необходимые порты

    4. Указать диапазоны сбора с указанием действия, применяемого к событиям с данных адресов

    5. При необходимости указать ограничение числа одновременных соединений (0 — не ограничено) и размера входящих сообщений (0 — не ограничено), а также выбрать временную зону и ввести разделитель строки.

Настройка передачи событий в Linux с помощью rsyslog

  1. Проверить наличие в системе rsyslog:

    sudo systemctl status rsyslog
  2. Если результат выполнения команды - Unit rsyslog.service could not be found, то выполнить:

    sudo apt install rsyslog
  3. С правами суперпользователя изменить файл rsyslog.conf, для этого:

    1. Ввести в терминале:

      sudo nano /etc/rsyslog.conf
    2. Перейти в конец файла и добавить строку:

      *.* action(type="omfwd" target="<1>" port="<2>" protocol="<3>" action.resumeRetryCount="<4>" queue.type="<5>" queue.size="<6>")
      • <1> - IP-адрес хоста с Syslog-коллектором, на который нужно посылать события

      • <2> - порт хоста с коллектором, на который нужно посылать события

      • <3> - протокол (tcp или udp)

      • <4> - как часто действие будет повторяться, прежде чем оно начнёт считаться неудачным. Неудачные действия отбрасывают сообщения. Рекомендуется установить значение 100

      • <5> - указать тип очереди, которая будет использоваться. Рекомендуется установить значение LinkedList

      • <6> - указать максимальный размер очереди по количеству сообщений. Обратите внимание, что очень маленькие значения размера очереди (примерно 100 сообщений и менее) не поддерживаются и могут привести к непредсказуемым результатам. Рекомендуется установить значение 10000

    3. Сохранить изменения в файле

  4. Перезагрузить сервис rsyslog командой в терминале:

    sudo systemctl restart rsyslog
  5. Проверить работоспособность rsyslog:

    sudo systemctl status rsyslog
Подробнее про rsyslog вы можете узнать здесь.

Настройка передачи событий в Linux с помощью syslog-ng

  1. Проверить наличие в системе syslog-ng:

    sudo systemctl status syslog-ng
  2. Если результат выполнения команды - Unit syslog-ng.service could not be found, то выполнить:

    sudo apt install syslog-ng
  3. С правами суперпользователя изменить файл syslog-ng.conf, для этого:

    1. Ввести в терминале:

      sudo nano /etc/syslog-ng/syslog-ng.conf
    2. В разделе Destinations добавить строку:

      destination <1> { <2>("<3>" port(<4>) persist-name ("<5>") template("<6>")); };
      • <1> - условное имя места назначения для отправки логов (любое, например, destination komrad или destination siem)

      • <2> - протокол отправки (tcp или udp)

      • <3> - IP-адрес хоста с Syslog-коллектором, на который нужно посылать события

      • <4> - порт хоста с коллектором, на который нужно посылать события

      • <5> - уникальное имя для строки подключения destination (любое, например, persist-name ("komrad-siem"))

      • <6> - шаблон отправки

    3. В разделе Log paths добавить строку:

      log { source(s_src); destination(<1>); };
      • <1> - условное имя места назначения для отправки логов, взятое из Destinations

    4. Сохранить изменения в файле

  4. Перезагрузить сервис syslog-ng командой в терминале:

    sudo systemctl restart syslog-ng
  5. Проверить работоспособность syslog-ng:

    sudo systemctl status syslog-ng

Для отправки всех логов без изменений на Комрад по адресу "10.0.3.124" и порту "49000" строка подключения выглядит следующим образом:

########################
# 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"); };
destination komrad { tcp("10.0.3.124" port(49000) persist-name("RAW_SIEM") template("$MESSAGE\n")); };

########################
# Log paths
########################
log { source(s_src);  destination(komrad); };

Вы также можете конфигурировать по своему усмотрению шаблон отправки сообщения (template). Для настройки шаблона отправки в разделе Sources после всех источников (source) укажите строку:

template <1> { template("<2>"); template-escape(<3>); };
  • <1> - условное имя шаблона отправки (любое, например, template siem или template ForKomrad)

  • <2> - тело шаблона отправки (набор переменных, а также любой другой поясняющий текст)

  • <3> - избегание экранирующих символов (no или yes) - по умолчанию no. Приводит к тому, что syslog-ng экранирует символы ', " и обратной косой черты из сообщений. Данная функция может быть полезна, когда сообщения передаются приложению, которое не может должным образом обрабатывать экранированные символы.

После настройки шаблона отправки укажите его имя в строке destination (пункт <6>). Перезагрузите сервис syslog-ng командой в терминале:

sudo systemctl restart syslog-ng

Проверка работоспособности syslog-ng:

sudo systemctl status syslog-ng

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

########################
# Sources
########################
# This is the default behavior of sysklogd package
# Logs may come from unix stream, but not from another machine.
#
source s_src {
       system();
       internal();
};
source s_auditd { file (/var/log/audit/audit.log persist-name (s_auditd_for_siem) flags(no-parse)); };
template siem { template("<$PRI>\ $DAY.$MONTH.$YEAR SYSLOG-NG $HOUR:$MIN:$SEC $PID $MSG\n"); template-escape(no); };

Пример события по данному шаблону отправки:

syslog ng template

Настройка передачи событий с помощью службы Auditd

Auditd – специальная утилита, которая позволяет вести мониторинг системных действий и анализировать их. Система аудита устанавливает триггеры на функции, ответственные за обработку системных вызовов (обращений к функциям ядра, без которых не может быть произведена ни одна операция в системе), после чего эти триггеры срабатывают согласно пользовательским правилам. Установка службы auditd с помощью команды:

sudo apt install auditd

В данный пакет входит несколько утилит:

  • auditctl — управление системой аудита, получение информации о состоянии системы, добавление и удаление правил;

  • autrace — аудит событий, вызываемых процессами (аналогично strace);

  • ausearch — поиск событий в журналах;

  • aureport — создание отчетов о работе аудита.

Варианты действий:

  • always - установить контекст аудита. Всегда заполнять его во время входа в системный вызов и всегда генерировать запись во время выхода из системного вызова;

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

Поля сравнения и их описание:

  • a0, a1, a2, a3 - первые 4 аргумента системного вызова соответственно;

  • arch - так как система ориентируется на номера (не названия) системных вызовов, а для многих системных вызовов номера отличаются для 32 и 64 разрядных систем, то необходимо указывать для какой архитектуры мы пишем правило;

  • auid - ID пользователя, с которым он вошёл в систему. Системные сервисы, как правило, имеют auid=-1 (или 4294967295);

  • dir - директория, за которой необходимо наблюдать. Будут залогированы и все события, связанные с файлами и поддиректориями в указанной директории рекурсивно;

  • euid - действительный идентификатор пользователя;

  • exe - полный путь к исполняемому файлу. Может использоваться только с exit;

  • exit - значение, возвращаемое системным вызовом при выходе;

  • key (-k) - установка поля для фильтра. Добавляет поле с заданным именем в событие, что облегчает поиск событий в журналах (может иметь любое имя);

  • msgtype - тип события;

  • path - полный путь к файлу, за которым необходимо следить, может использоваться только с exit;

  • perm - то же, что и параметр -p, будет рассмотрен ниже;

  • success - если значение, возвращаемое системным вызовом, больше либо равно 0, данный объект будет равен «true/yes», иначе «false/no». При создании правила используйте 1 вместо «true/yes» и 0 вместо «false/no»;

  • uid - идентификатор пользователя - вместо числовых идентификаторов пользователей можно указывать имена (www-data, mail, irc), таким образом, вам не придется учитывать их числовые различия на разных серверах;

  • -p - [r|w|x|a] - описывает разрешение доступа файла, за которым нужно следить: чтение, запись, выполнение или изменение прав доступа соответственно;

  • -w <path> - устанавливает наблюдение за директорией (рекурсивно) или файлом;

  • -W <path> - исключает наблюдение за указанной директорией или файлом.

Постоянные правила рекомендуется добавлять в файл audit.rules, расположенный в каталоге /etc/audit/rules.d/. При желании можно создать в данном каталоге новый файл формата *.rules с произвольным именем и задать в нем нужные правила. Файл audit.rules можно редактировать вручную или с помощью графической утилиты system-config-audit. Другие файлы правил можно редактировать только вручную.

sudo nano /etc/audit/rules.d/audit.rules

Начинается этот файл с так называемых метаправил, в которых задаются общие настройки журналирования, в качестве примера могут быть использованы следующие:

# игнорирование ошибок
-i
# удаление всех ранее созданных правил
-D
# задаём количество буферов, в которых будут храниться сообщения аудита
-b 16384
# что делать в чрезвычайной ситуации (например, если все буферы будут заполнены) (0 – ничего не делать, 1 – поместить сообщение в dmesg, 2 – отправить ядро в панику (kernel panic))
-f 1
-a exit,always -F dir=/home/TestUser/ -F arch=b64 -S unlink -S unlinkat  -S rmdir -S rename -S renameat -k delete
#или
-a exit,always -F dir=/home/TestUser/ -F arch=b32 -S unlink -S unlinkat  -S rmdir -S rename -S renameat -k delete

#Изменение паролей:
-w /etc/shadow -p wa -k shadow
-w /etc/passwd -p wa -k passwd

#Отслеживание процессов:
-w /bin/systemctl -p x -k systemd
-w /etc/systemd/ -p wa -k systemd
-w /usr/lib/systemd -p wa -k system

#Изменение настроек сети:
-w /etc/network/ -p wa -k network
-a exit,always -F dir=/etc/NetworkManager/ -F perm=wa -k network_modifications

#Редактирование правил auditd:
-w /sbin/auditctl -p x -k audittools
-w /usr/sbin/auditd -p x -k audittools
-w /usr/sbin/augenrules -p x -k audittools

После сохранения необходимо выйти из файла /etc/audit/rules.d/audit.rules.

Для сохранения файла используйте ctrl+o → Enter → ctrl+x.

Перезагрузить службу:

sudo systemctl restart auditd

Подробнее о конфигурации правил на auditd можно почитать здесь (раздел 6. "Регистрация событий безопасности").

Передача событий из /var/log/audit/audit.log в Комрад Enterprise SIEM c помощью rsyslog

Необходимо изменить файл rsyslog.conf с правами суперпользователя:

Ввести в терминале:

sudo nano /etc/rsyslog.conf

Добавить в MODULES следующие строки:

module(load="imfile")
input(type="imfile"
File="/var/log/audit/audit.log"
Tag="tag1"
Severity="error"
Facility="local7")
  • Файл указывает путь и имя текстового файла, который необходимо отслеживать. Имя файла должно быть абсолютным.

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

  • Severity присваивает всем сообщениям журнала файла одинаковую серьезность. Это необязательно. По умолчанию для всех сообщений будет установлено значение Уведомление

  • Facility дает всем сообщениям журнала файла одно и то же средство. Опять же, это необязательно. По умолчанию для всех сообщений будет установлено значение local0

Далее в конце файла добавить следующую строку:

local7.* action(type="omfwd" target="IP-адрес Syslog-коллектора" port="49000" protocol="tcp")

Сохранить изменения и выйти. Более подробное описание конфигурации rsyslog см. Настройка передачи событий в Linux с помощью rsyslog

Перезапустить rsyslog с помощью команды:

sudo systemctl restart rsyslog

Проверка работоспособности rsyslog:

sudo systemctl status rsyslog

Передача событий из /var/log/audit/audit.log в Комрад Enterprise SIEM по Syslog-ng

С правами суперпользователя изменить файл syslog-ng.conf, для этого:

Ввести в терминале:

sudo nano /etc/syslog-ng/syslog-ng.conf

В разделе Sources добавить строку:

source s_auditd { file (/var/log/audit/audit.log persist-name (s_auditd_for_siem) flags(no-parse)); };

В разделе Destinations добавить строку:

destination komrad { tcp("IP-адрес хоста с Syslog-коллектором" port(49000) persist-name("RAW_SIEM") template("$MESSAGE\n")); };

Более подробное описание конфигурации syslog-ng см. Настройка передачи событий в Linux с помощью syslog-ng

В разделе Log paths добавить строку:

log { source(s_auditd); destination(komrad); };

Перезагрузить сервис syslog-ng командой в терминале:

sudo systemctl restart syslog-ng

Проверка работоспособности syslog-ng:

sudo systemctl status syslog-ng

Определение страны или города у syslog-коллектора

У syslog-коллектора есть возможность определять страну/город из полученного события. Вы можете использовать свой файл со списком соответствия адресов или использовать предоставленный АО "НПО" Эшелон".

Откройте файл komrad-syslog-collector.yaml командой:

sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml

Отредактируйте путь к файлу:

# Путь к базе данных GeoIP
geo-ip:
  path: /var/lib/echelon/komrad/komrad-syslog-collector/geoip/db.mmdb

Уже заполненные файлы со списком соответствия адресов (для мира и отдельно для России) доступны по ссылке.

После перезапуска коллектора у событий, в которых будут определятся поля IP.Destination и другие, также будут появляться и дополнительные поля ECS.City или ECS.Country.

Для проверки базы maxmind db необходимо установить

sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin

Проверить IP:

mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8

Результат:

{
  "country":
    {
      "geoname_id":
        6252001 <uint32>
      "iso_code":
        "US" <utf8_string>
      "names":
        {
          "de":
            "USA" <utf8_string>
          "en":
            "United States" <utf8_string>
        }
    }
}

Изменение порта syslog-коллектора

Решение состоит в том, чтобы добавить в службу следующее (например, запустив systemctl edit inspircd.service):

[Обслуживание]
AmbientCapabilities=CAP_NET_BIND_SERVICE

Для систем со старой версией systemd возможно лучше пользоваться setcap:
setcap cap_net_bind_service=+ep

Ещё можно посмотреть на:
sudo sysctl -a | grep "net.ipv4.ip_unprivileged_port_start"

По умолчанию там 1024

Можно сделать

sudo sh -c "echo 442 > /proc/sys/net/ipv4/ip_unprivileged_port_start"

Сбор событий BM UserGate

ВМ UserGate поддерживает интеграцию системами информационной безопасности, в том числе и Komrad. Интеграция происходит через syslog-сообщения.

Отправка системных событий в Komrad для анализа:

1) В разделе Журналы и отчёты → Журналы → экспорт журналов нажмите на зеленый значок + Добавить.

2) На вкладке Общие активируйте опцию Включено.

3) Ведите название правила экспорта на латинице и заполните его описание при необходимости.

4) На вкладке Удалённый сервер выберите тип сервера Syslog, введите IP-адрес вашего Комрада и укажите его порт: 49000.

5) Остальные параметры отредактируйте по необходимости.

6) На вкладке Журналы для экспорта отметьте те журналы, информацию из которых нужно передавать в Komrad.

7) Нажмите Проверить соединение для проверки корректность введенных данных и доступности Комрада.

8) Нажмите Сохранить.

Настройка публикации событий Kaspersky Secure Mail Gateway

Для настройки публикации событий в режиме Technical Support Mode требуется предварительно загрузить открытый ключ SSH в веб-интерфейсе программы.

Перед началом настройки убедитесь, что вы включили экспорт событий в формате CEF.

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

Перечень необходимых действий:

1) Подключитесь к консоли управления виртуальной машиной Kaspersky Secure Mail Gateway под учетной записью root, используя закрытый ключ SSH. Вы войдете в режим Technical Support Mode.

2) Укажите адрес и порт подключения к серверу с Komrad. Для этого добавьте в конец файла /etc/rsyslog.conf следующие строки:

Перед внесением изменений в файл /etc/rsyslog.conf рекомендуется сделать его резервную копию. Ошибка при редактировании файла может привести к некорректной работе системы.
$WorkDirectory /var/lib/rsyslog

$ActionQueueFileName ForwardToSIEM

$ActionQueueMaxDiskSpace 1g

$ActionQueueSaveOnShutdown on

$ActionQueueType LinkedList

$ActionResumeRetryCount -1

<категория (facility)>.* @@<IP-адрес Komrad>:<порт, на котором Komrad принимает сообщения от Syslog по протоколу TCP>
Не забудьте сохранить файл, нажав Ctrl + X и y.

3) Перезапустите службу rsyslog. Для этого выполните команду:

sudo systemctl restart rsyslog

4) Проверьте работоспособность rsyslog:

sudo systemctl status rsyslog

Удаление

Удалить Syslog-коллектор можно с помощью команды:

sudo dpkg -P komrad-syslog-collector

Последнее изменение 23.03.2023