Подключение с помощью Syslog-коллектора
Подключение нового Syslog-коллектора
Предварительные условия:
-
Источник событий ИБ поддерживает передачу событий по протоколу Syslog
-
Наличие лицензии (разрешения) на использование Syslog-коллектора (см. Обзор графического интерфейса → О программе → Информация о программе)
-
Отсутствуют какие-либо ограничения на передачу трафика по выбранному порту между источником событий ИБ и сервером ПК «КОМРАД»
Для установки Syslog-коллектора на определенный узел, необходимо:
-
На узле создать директорию, в которую необходимо переместить deb-пакет
komrad-syslog-collector*.deb
из дистрибутива ПК «КОМРАД»; -
Установить из папки syslog-collector командой:
sudo apt install ./komrad-syslog-collector*.deb
-
Открыть файл
komrad-syslog-collector.yaml
командой:sudo nano /etc/echelon/komrad/komrad-syslog-collector.yaml
-
Отредактировать параметр bus-url, задав IP-адрес сервера ПК «КОМРАД»:
bus: servers: - nats://IP_ ПК «КОМРАД»:3490
-
Сохранить файл и перезагрузить syslog-collector командой:
sudo systemctl restart komrad-syslog-collector.service
-
Новый Syslog-коллектор отобразится в списке коллекторов в веб-интерфейсе
Подключение новых источников событий
Предварительные условия:
-
убедиться, что существует возможность сетевого взаимодействия между KOMRAD SIEM и источником событий
Настройка Syslog-коллектора
-
Администрирование → Настройка коллекторов → Коллекторы → Syslog → Выбрать нужный Syslog-коллектор
-
Нажать иконку «Редактировать» → Настраиваем коллектор :
-
При необходимости можно изменить имя коллектора
-
Выбрать активные парсеры (также необходимо проверить совместимость)
-
Указать необходимые порты
-
Указать диапазоны сбора с указанием действия, применяемого к событиям с данных адресов
-
При необходимости указать ограничение числа одновременных соединений (0 — не ограничено) и размера входящих сообщений (0 — не ограничено), а также выбрать временную зону и ввести разделитель строки.
-
Настройка передачи событий в Linux с помощью rsyslog
-
Проверить наличие в системе
rsyslog
:sudo systemctl status rsyslog
-
Если результат выполнения команды -
Unit rsyslog.service could not be found
, то выполнить:sudo apt install rsyslog
-
С правами суперпользователя изменить файл
rsyslog.conf
, для этого:-
Ввести в терминале:
sudo nano /etc/rsyslog.conf
-
Перейти в конец файла и добавить строку:
*.* 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
-
-
Сохранить изменения в файле
-
-
Перезагрузить сервис rsyslog командой в терминале:
sudo systemctl restart rsyslog
-
Проверить работоспособность rsyslog:
sudo systemctl status rsyslog
Подробнее про rsyslog вы можете узнать здесь. |
Настройка передачи событий в Linux с помощью syslog-ng
-
Проверить наличие в системе
syslog-ng
:sudo systemctl status syslog-ng
-
Если результат выполнения команды -
Unit syslog-ng.service could not be found
, то выполнить:sudo apt install syslog-ng
-
С правами суперпользователя изменить файл
syslog-ng.conf
, для этого:-
Ввести в терминале:
sudo nano /etc/syslog-ng/syslog-ng.conf
-
В разделе
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> - шаблон отправки
-
-
В разделе
Log paths
добавить строку:log { source(s_src); destination(<1>); };
-
<1> - условное имя места назначения для отправки логов, взятое из
Destinations
-
-
Сохранить изменения в файле
-
-
Перезагрузить сервис syslog-ng командой в терминале:
sudo systemctl restart syslog-ng
-
Проверить работоспособность 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); };
Пример события по данному шаблону отправки:

Настройка передачи событий с помощью службы 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