Ansible-роль для настройки Linux-хостов под сбор и пересылку событий в SIEM:
- установка и настройка
auditd; - настройка
audispd-pluginsдля вывода событий вlocal6; - настройка
rsyslogилиsyslog-ngдля пересылки в SIEM-агенты; - поддержка установки пакетов из репозиториев и офлайн-режима (локальные
.deb/.rpm).
Документация проекта:
- Архитектура
- Конфигурация
- Runbook (запуск и проверка)
- Анализ проекта
- Code review
- Рабочий трекер задач
- Рабочий журнал изменений документации
- История релизов
- Ansible 2.12+.
- Python на целевых хостах.
- Права
become(роль меняет системные конфиги и сервисы). - Для AltLinux при установке
rsyslog-classicнужна коллекцияcommunity.general.
ansible-playbook playbook.ymlЛокальный запуск на текущем хосте:
ansible-playbook playbook_local.ymlinstall- установка пакетов;configure- настройка конфигурации;auditd,syslog,system,pt- функциональные срезы.
Пример:
ansible-playbook playbook.yml --tags "install,auditd"- Проверяет, что ОС и версия поддерживаются (
vars/main.yml -> linux_supported). - Настраивает системные параметры (опционально корректирует
/etc/hosts). - Устанавливает
tar,auditd,audispd-plugins. - Настраивает правила
auditd(шаблонtemplates/auditd_00-siem.rules.j2). - Настраивает плагин
audispdдля отправки вlocal6. - Определяет активный syslog-демон:
- если найден
rsyslogd-> настраиваетrsyslog; - если найден
syslog-ng-> настраиваетsyslog-ng; - если не найден -> устанавливает и настраивает
rsyslog.
- если найден
- Перезапускает сервисы (
auditd,rsyslog,syslog-ng,systemd-journaldпо условиям).
Определены в vars/main.yml и defaults/main.yml:
facility(default:default) - группа SIEM-агентов;upload_local_packages(default:true) - разрешить fallback на локальные пакеты;auditd_write_logs(default:false) - писать ли audit-события локально;modify_etc_hosts(default:false) - модификация/etc/hosts(режим только для осознанного использования).
Группы SIEM-агентов задаются в vars/siem_agents.yml, а выбор группы можно задавать host/group-переменной facility в inventory.
Роль ориентирована на:
- RedHat 7-9;
- CentOS 7-10;
- OracleLinux 7-9;
- Debian 6-13;
- Ubuntu 16-24;
- Astra Linux 1.x-2.x;
- REDOS 7-9;
- RED 7-9;
- Altlinux 10.
Точный список и диапазоны версий: vars/main.yml.
.
├── ansible.cfg
├── playbook.yml
├── playbook_local.yml
├── defaults/
├── vars/
├── tasks/
│ ├── configure/
│ └── install/
│ ├── with_repos/
│ └── without_repos/
├── templates/
├── files/packages/ # офлайн-пакеты
├── inventory/
└── docs/
- inventory/hosts в репозитории является sanitized-шаблоном. Для реального контура используйте отдельный приватный inventory-файл.
- В vars/siem_agents.yml по умолчанию указан placeholder (
mpxagent01.example.com), задайте реальные адреса SIEM-агентов перед production-запуском. - Офлайн-пакеты (
files/packages) подготовлены для:- Debian
6..13(native.debbundles), - CentOS
7..10(native.rpmbundles), - REDOS/RED
7..9(совместимые RPM-наборы, собранные из CentOS-бандлов).
- Debian
- Для актуализации оффлайн-бандлов используйте:
python3 scripts/fetch_debian_legacy_offline.py --releases allpython3 -u scripts/fetch_rpm_offline.py --releases centos7,centos8,centos9,centos10,redos7,redos8,redos9
ansible.cfgзадаетroles_path = ../; для запуска убедитесь, что имя роли и путь в окружении соответствуют этому layout.- Перед запуском в production проверьте раздел "Риски и техдолг" в docs/PROJECT_ANALYSIS.md.