Rsyslog + Graylog: централизованный сбор логов для корпоративной сети
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. 15+ лет я расследую инциденты в клиентских инфраструктурах — взломы, утечки, сбои, внутренний саботаж. И знаете, что объединяет 90% случаев? Логи либо не велись, либо велись локально на взломанном сервере, либо хранились по два дня. Когда к вам приходит оперативник с запросом за прошлый квартал — ответить нечем. Централизованный лог-сервер закрывает эту проблему на порядок. Расскажу, как мы строим такую систему на rsyslog и Graylog.
Что даёт централизованный сбор логов
У нас на практике Graylog-сервер решает пять задач одновременно:
- Расследование инцидентов — кто удалил файл, откуда подключился, что запустил.
- Соответствие ФЗ-152 и приказам ФСТЭК 21/17 — есть журнал действий с пользовательскими данными.
- Алерты в реальном времени — 5 неудачных логинов за минуту, новый admin в группу, подозрительный процесс.
- Долгосрочное хранение — логи уехали в отдельное хранилище, сервер взломали — логи целы.
- Поиск по всем узлам сразу — не бегаете по SSH на каждую машину.
Архитектура: Graylog + OpenSearch + MongoDB
Стандартная связка состоит из трёх компонентов:
- Graylog — веб-интерфейс, стримы, алерты, дешборды.
- OpenSearch (форк Elasticsearch) — индексация и поиск.
- MongoDB — конфигурация и метаданные Graylog.
Для небольшой компании всё ставится на одну виртуалку 8 vCPU / 32 ГБ RAM / 1 ТБ SSD. Для 500+ источников событий разносим: 1 нода Graylog, 3 ноды OpenSearch с шардированием, 1 нода MongoDB ReplicaSet.
Установка Graylog 5.2 на Ubuntu 24.04
apt update && apt install -y openjdk-17-jre-headless apt-transport-https gnupg curl
# MongoDB 6
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | gpg --dearmor -o /usr/share/keyrings/mongo.gpg
echo "deb [signed-by=/usr/share/keyrings/mongo.gpg] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" > /etc/apt/sources.list.d/mongodb.list
# OpenSearch 2
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | gpg --dearmor -o /usr/share/keyrings/opensearch.gpg
echo "deb [signed-by=/usr/share/keyrings/opensearch.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" > /etc/apt/sources.list.d/opensearch.list
# Graylog 5.2
wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb
dpkg -i graylog-5.2-repository_latest.deb
apt update && apt install -y mongodb-org opensearch graylog-server
Настройка OpenSearch
# /etc/opensearch/opensearch.yml
cluster.name: graylog
node.name: graylog-node1
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: 127.0.0.1
discovery.type: single-node
plugins.security.disabled: true
action.auto_create_index: false
# /etc/opensearch/jvm.options — для 32 ГБ RAM
-Xms8g
-Xmx8g
systemctl enable --now opensearch
Настройка Graylog-сервера
# /etc/graylog/server/server.conf
password_secret = $(pwgen -N 1 -s 96)
root_password_sha2 = $(echo -n "AdminPassword" | sha256sum | awk '{print $1}')
http_bind_address = 0.0.0.0:9000
http_publish_uri = https://logs.corp.example.ru/
elasticsearch_hosts = http://127.0.0.1:9200
mongodb_uri = mongodb://localhost/graylog
elasticsearch_version = 7
allow_leading_wildcard_searches = true
systemctl enable --now graylog-server
Открываем http://server:9000, логинимся admin/AdminPassword и начинаем настройку входящих данных — Inputs.
Настройка rsyslog-клиентов на Linux
На Graylog создаём Input типа Syslog UDP 514 или TCP 1514. На каждом Linux-сервере в /etc/rsyslog.d/99-graylog.conf:
# Отправка всех логов в Graylog
*.* @@logs.corp.example.ru:1514;RSYSLOG_SyslogProtocol23Format
# Альтернатива — через GELF для структурированных полей
module(load="omgelf")
action(
type="omgelf"
target="logs.corp.example.ru"
port="12201"
protocol="tcp"
)
systemctl restart rsyslog
Сбор логов Windows
Для Windows ставим NXLog Community Edition или Winlogbeat. Я обычно беру NXLog — он умеет и Syslog, и GELF, и работает стабильно на Windows Server 2016-2025.
# C:\Program Files\nxlog\conf\nxlog.conf
Module im_msvistalog
Query \
\
\
\
\
\
Path eventlog => graylog
Стримы, алерты и доступы
В Graylog я всегда настраиваю минимум четыре стрима:
| Стрим | Фильтр | Алерты |
|---|---|---|
| Windows Security Events | source_type:eventlog AND channel:Security | EventID 4625 > 5 за минуту |
| SSH Logins | program:sshd | Failed password > 3 с одного IP |
| Firewall Drops | facility:local4 | Новый blocked_ip из whitelist |
| App Errors | level:ERROR OR CRITICAL | Рост в 3 раза за 10 минут |
Доступы — по ролям: админы видят всё, HR-отдел только свой журнал, ИБ — отдельный стрим с аудитом admin-действий.
Retention: как и сколько хранить
В Graylog индексы режутся по времени или размеру. Типовая конфигурация у нас — Index Set с ротацией каждые 24 часа и хранением 90 индексов. После этого индексы закрываются, через 180 дней физически удаляются. Для compliance ФЗ-152 храним минимум 12 месяцев.
Реальный кейс: инцидент с шифровальщиком
В декабре 2025 к нам обратилась строительная компания. Ночью в воскресенье Ransomware зашифровала файловый сервер. Ни один локальный лог не остался — шифровальщик стёр event log. Но мы за год до этого поставили у них Graylog, и все события Windows летели туда. За 40 минут мы восстановили картину:
- В 22:14 пятницы сотрудник открыл фишинговое вложение из почты.
- В 23:02 тот же хост инициировал SMB-сессии к трём серверам подбором паролей.
- В 03:11 воскресенья зашёл через VPN с литовского IP под учёткой того же сотрудника.
- В 03:44 началось шифрование — массовые события 4663 и 4660 на файловом сервере.
Благодаря точной хронологии заказчик смог сдать материалы в полицию, восстановиться из offsite-бэкапов и закрыть уязвимость. Graylog-сервер у них стоит на Dell R640 с Xeon Platinum 8280, 128 ГБ RAM, 4 ТБ NVMe в дата-центре МТС. Стоимость развёртывания и года обслуживания составила 410 000 ₽.
Типовые ошибки
- Open 514/UDP наружу. Кто угодно может залить мусор, заполнив диск.
- Пустой http_publish_uri. Web UI показывает ссылки вида localhost.
- Retention по умолчанию. 20 индексов × 20 млн сообщений — через неделю диск кончается.
- Без TLS между rsyslog и сервером. Логи идут открытым текстом по сети.
- Без бэкапа MongoDB. Упала база — конфиги, стримы, дешборды пропадут.
Централизованные логи для вашей сети
Развернём Graylog-сервер, подключим Linux и Windows источники, настроим стримы, алерты, retention и долгосрочное хранение под требования ФЗ-152. Срок — 5-10 рабочих дней.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы по Rsyslog и Graylog
- Зачем компании централизованный сбор логов?
- Расследование инцидентов, аудит, compliance. Без логов — нельзя понять, что произошло.
- Graylog или ELK — что выбрать?
- Для безопасности и аудита — Graylog. Для анализа приложений — ELK.
- Сколько места занимают логи?
- 50 ПК + 5 серверов — 3-8 ГБ/сутки. 90 дней — 600-1500 ГБ.
- Как собирать логи с Windows?
- NXLog или Winlogbeat — отправка по GELF/Syslog.
- Нужен ли SIEM, если есть Graylog?
- Graylog — лог-менеджмент. SIEM: Wazuh, TheHive, Graylog Enterprise.