Материал просмотрен 1,549 раз(а)

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

Одним из способом защиты системы от вторжения может являться постоянный мониторинг файлов и конфигураций демонов. Среди некоторых предложенных вариантов я выбрал инструмент Tripwire.

Что делает tripware? Формируется первоначальная база данных каждой программы, делает контрольные суммы программ на этапе их установки (make install) и записывает их (изменения) в особый файл. Файл тоже не простой, подписывается локальной идентификационной фразой, а так же ключом сайта. Далее, периодически проверяются контрольные суммы файлов и если критические файлы были изменены (конфиг файрволла, демон sshd и т.д.), то программа немедленно оповестит администратора.

Программа доступна из портов:

# cd /usr/ports/security/tripwire
# make install clean

Установка программы

Установка программы

Во время установки предложит согласиться с лицензионным соглашением (отказ от ответственности), набираем accept и продолжаем дальше.

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

Что мониторить – описывается в файле /usr/local/etc/tripwire/twpol.txt (файл политик). Фрагменты политик выглядят подобным образом:

Конфигурация

Конфигурация

Формат файла политик:

( rulename = "имя правила", severity = уровень серьезности правила)
{ перечисляется список объектов и уровень генерирования предупреждения, т.е. есть критические, есть конфиги и т.д.}

Проверить, было ли какое-нибудь нарушение целостности файлов можно командой:

# tripwire --check

Программа начнет проверять файлы и создаст отчёт в папке /var/db/tripwire/report/

Просмотрим отчёт:

# twprint --print-report --twrfile gw2.mydomain-20140212-121332.twr

Отчёт по измененным файлам

Отчёт по измененным файлам

А ниже в отчете будет подробно расписано – какие файлы и по каким критериям были модицифированы. Рекомендую создание отчёта помещать в периодичность, например в cron, еженощно. Это позволит точнее локализовать день, когда система подверглась нападению.

Обновить базу данных можно через:

# tripwire --update

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

В этом случае нам будет выведет последний лог в текстовом редакторе, с символами [x] перед каждой записью. Если запись является нарушением безопасности, то эти символы надо стереть. Если записи легитимные, то оставляйте как есть. И сохраняйте файл. База будет обновлена.


Продолжаю статью через несколько лет. Я уже достаточно долго пользуюсь этим инструментом, вот что хотелось бы добавить.

  • Храните парольные фразы в надёжном месте
  • Настройки политики так, чтобы было как можно меньше “мусора” в отчётах, потому что пролистывать шестимегабайтный текстовик в поисках чего-то действительно важного – муторное занятие.
  • Обновляя базу (если в отчёте все изменения легитимные) лучше так:

tripwire --update --twrfile /var/lib/tripwire/report/reportname.twr

  • Конфигурационный файл и файл политик лучше зашифровать и удалить текстовый незашифрованный вариант

Итак, резюмирую.

Команды для работы с TripWire

  1. tripwire --update --twrfile /var/lib/tripwire/report/reportname.twr (обновление контрольного снимка с результатами отчёта);
  2. twprint --print-dbfile (просмотр текущего состояния базы данных, либо можно указать конкретный объект)
  3. tripwire --check [--twrfile имя-файла-с-отчетом] [--email-report [--email-report-level уровень]] {объект } (проверка системы или конкретного объекта на соответствие эталону в базе и создание отчёта)
  4. tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt (обновить файл политики)
  5. twprint --print-report --twrfile имя-файла-с-отчетом [--report-level уровень] (вывод отчёта)
  6. tripwire --init [--no-encription] (инициализировать базу данных)
  7. twadmin --print-polfile > /etc/tripwire/twpol.txt (раскодировать файл политик в текстовый файл)
  8. twadmin --create-polfile [--no-encription] /etc/tripwire/twpol.txt (закодировать текстовый вариант политик обратно, при этом текстовый можно удалить)