Samhain — HIDS с контролем целостности файлов, проверкой скрытых процессов, SUID-бинарников и портов. Он работает автономно на одном хосте или в связке с сервером yule, который собирает события со всей сети. Разберём установку 4.5.x, конфигурацию, инициализацию базы и реакцию на срабатывания.

Что проверяет Samhain

Samhain сравнивает файлы с базой подписей и сообщает об отклонениях. Помимо контрольных сумм, проверяются права, владелец, тип файла, размер, время изменения и inode. Дополнительные модули ищут SUID/SGID-бинарники, скрытые процессы, открытые порты и следы руткитов.

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

  • политики ReadOnly, Growing, GrowingLogfile, Attributes, IgnoreAll, IgnoreNone;
  • подпись базы и журнала, защита от подмены отчётов;
  • отправка в syslog, файл, почту и на сервер;
  • режим stealth для обфускации имён и логов;
  • проверка целостности собственного журнала по ключу.

Сборка и установка

Готовых пакетов в большинстве дистрибутивов нет, поэтому собираем из исходников. Нужны компилятор C, make и стандартные заголовки разработчика. Актуальная версия — 4.5.x; скачайте архив с официального сайта и проверьте подпись.

wget https://www.la-samhna.de/samhain/samhain-current.tar.gz
tar xzf samhain-current.tar.gz
tar xzf samhain-4.5.4.tar.gz
cd samhain-4.5.4
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-network=client
make && sudo make install

Ключ --enable-network=client включает клиентский режим; для сервера собирают отдельно с --enable-network=server, а для одиночного хоста сеть не нужна. Дополнительно можно включить --enable-xml-log, --enable-suidcheck и --enable-logfile-monitor.

После установки добавьте автозапуск и проверьте службу:

sudo make install-boot
systemctl status samhain

Настройка /etc/samhainrc

Файл должен быть доступен только root: chmod 600 /etc/samhainrc. Политики задаются секциями, а серьёзность событий — в [EventSeverity]. Рабочий минимум выглядит так:

[ReadOnly]
dir = 99/etc
dir = 99/bin
dir = 99/sbin

[GrowingLogFiles]
dir = /var/log

[EventSeverity]
SeverityReadOnly = crit
SeverityGrowingLogs = warn
SeverityFiles = err

[Log]
LogSeverity = info
SyslogSeverity = warn
MailSeverity = crit

[Misc]
SetMailAddress = root@example.org
SetFileCheckTime = 3600
ReportOnlyOnce = True

Каталоги, которые постоянно меняются, не стоит включать в ReadOnly: /proc, /sys, /run, /tmp и логи. Для журналов есть отдельная политика GrowingLogFiles, которая допускает рост и поворот файла.

Инициализация базы

Первый запуск создаёт эталон, второй — проверяет систему:

sudo samhain -t init
sudo samhain -t check

Повторный init не перезаписывает базу, а дополняет её, поэтому после легальных изменений используйте update, а не init. Проверка вручную показывает отчёт в консоли; для постоянной работы включают демон:

sudo samhain -t check -D
pgrep -a samhain

В демоне Samhain помнит уже отправленные события и не повторяет их при каждом цикле, если включён ReportOnlyOnce. Это сильно снижает шум.

Реакция на срабатывание

Сообщение содержит путь, тип изменения и серьёзность. Не обновляйте базу сразу: сначала выясните, кто и зачем изменил файл. Для пакетов помогает проверка штатными средствами дистрибутива.

sudo tail -f /var/log/samhain_log
sudo dpkg -V coreutils
sudo rpm -Va  # на RPM-системах

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

Клиент и сервер yule

В клиентском конфиге укажите адрес сервера, например SetLogServer = 10.0.0.10 в секции [Misc], и включите экспорт событий через ExportSeverity = warn в [Log]. Сервер запускается отдельно:

sudo yule -p info --foreground
sudo tail -f /var/log/yule/yule_log

Каталог /var/log/yule должен быть доступен пользователю, под которым работает yule. Если клиент не подключается, проверьте порт, DNS и время: расхождение часов ломает проверку подписи.

Защита самого агента

Контроль целостности бессмысленен, если злоумышленник может переписать бинарник и базу. Держите /usr/sbin/samhain с правами 700, конфиг — 600, подписывайте базу GPG и храните ключ вне проверяемого хоста. Включайте stealth-режим, если это оправдано, и следите за «тишиной»: отсутствие событий с сервера — тоже тревога.

Шум и исключения

Главная проблема любого HIDS — ложные срабатывания. Почтовый ящик, который ежедневно получает сотни писем о ротации логов, быстро перестают читать. Поэтому политики подбирают итеративно: запустите проверку, посмотрите отчёт за сутки, добавьте в исключения то, что меняется по расписанию, и только потом включайте почту. Практика показывает, что настройка занимает несколько дней, и это нормально.

Для временных каталогов и кэшей используйте IgnoreAll, для журналов — GrowingLogFiles, для конфигураций — ReadOnly. Не добавляйте в исключения весь /var: вместе с мусором там живут базы и данные приложений, подмена которых важна. Начинайте с минимума: /etc, /bin, /sbin и ключевые конфиги.

Проверка перед запуском

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

sudo samhain -t check 2>&1 | head -40
sudo ls -l /var/lib/samhain/samhain_file
sudo grep -E 'MODIFIED|POLICY|ADDED' /var/log/samhain_log | tail -20

Чек-лист

  • Проверена подпись архива и версия 4.5.x.
  • Права на бинарник, конфиг и базу ограничены.
  • В политики не попали постоянно меняющиеся каталоги.
  • База инициализирована один раз, дальше используется update.
  • Настроены почта или syslog и проверена доставка.
  • Есть процедура разбора срабатываний и восстановления.

Итог

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

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте