@ Карта сайта News Автора!

Bog BOS: Tripwire: принципы работы, установка и настройка

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.04.26

Bog BOS: Tripwire: принципы работы, установка и настройка

Отслеживает изменения файлов, позволяя обнаруживать порчу данных и взломы. База данных шифруется (El Gamal, 1024 бита), что предотвращает ее подделку хакерами. Не мешает держать suid-программы в /tmp или временно возвращать систему в нормальное состояние ровно к моменту ежедневной поверки ;), так что расслабляться не надо. С помощью редактируемого набора правил проверки пытается решить проблему с выдачей слишком большого числа предупреждений. Разработана в Purdue University в 1992, все права переданы Tripwire, Inc. Лицензия для специальной Linux-версии: GNU. Если фирма вдруг пойдет по пути SSH Inc., то есть аналоги - AIDE, TAMU, ATP, Hobgoblin, sXid, L5, Gog&Magog.

Непосредственно после установки ОС tripwire, используя правила, определенные политикой безопасности (policy file), создает базу данных, содержащую информацию о всех "существенных" файлах в системе - размер, контрольная сумма и т.д. Затем эта база данных ежедневно сравнивается с текущим состоянием файловой системы, позволяя обнаружить добавленные, измененные и удаленные файлы. Получаемые при этом отчеты могут быть просмотрены с различной степенью детализации.

Файлы конфигурации и полиси защищаются от записи общим ключом, а БД и отчеты - локальным ключом. Для чтения достаточно доступного публичного ключа, для записи требуется частный ключ, защищаемый парольной фразой. Обольщаться не надо - если уж взломщик получил права суперпользователя, необходимые для модификации БД, то он также может переустановить все файлы tripwire заново и вы будете получать по почте сообщения, что все в порядке, пока не обнаружите, что ваша парольная фраза не позволяет изменить БД или полиси!

Для измененных файлов создаются резервные копии с суффиксом .bak.

Установка и настройка

В состав Red Hat 7.2 входит пакет tripwire-2.3.1-5, включающий программы в /usr/sbin: siggen, tripwire, twadmin, twprint (собранных безо всяких глупостей типа разделяемых библиотек и имеющих размер более 2 МБ каждая); файлы конфигурации: twcfg.txt, twpol.txt, twinstall.sh (в /etc/tripwire); файл конфигурации для cron: /etc/cron.daily/tripwire-check; документация: /usr/share/doc/tripwire-2.3.0/, twconfig.4.gz, twpolicy.4.gz, twfiles.5.gz, siggen.8.gz, tripwire.8.gz, twadmin.8.gz, twintro.8.gz, twprint.8.gz; БД и отчеты: /var/lib/tripwire. Почему-то не включено руководство пользователя.

Первым делом надо отредактировать стандартные (из комплекта поставки) файлы конфигурации (/etc/tripwire/twcfg.txt) и полиси (/etc/tripwire/twpol.txt). Полиси из поставки можно рассматривать только как пример! Каждая конкретная система требует своего полиси, иначе не все важные именно для данной системы файлы будут проверяться, а также будут выдаваться излишние предупреждения.

Запустить /etc/tripwire/twinstall.sh, который запрашивает парольную фразу и создает файлы ключей (/etc/tripwire/site.key и /etc/tripwire/host-local.key), создает из текстовых файлов и подписывает файл конфигурации и полиси.

Инициализировать БД (спрашивает локальную парольную фразу, могут быть сообщения об ошибках т.к. полиси рассчитан на полную установку):
   tripwire --init [--no-encription]

Выполнить пробную проверку (эта же команда выполняется из /etc/cron.daily/tripwire-check; все сообщения об ошибках повторяются; д.б. по крайней мере одно изменение - добавился файл с БД):
   tripwire --check

Налюбовавшись на сообщения об отсутствующих файлах (twpol.txt из комплекта поставки рассчитан на полную установку), поменяйте /etc/tripwire/twpol.txt и запустите
   tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt

Может быть придется повторить процедуру несколько раз, пока не сойдется, после чего надо зафиксировать состояние системы:
   tripwire --check --interactive

Проверка работоспособности почтовой системы:
   tripwire --test --email адрес

Дальнейшие проверки будут происходить ежедневно в автоматическом режиме. А если вы указали GLOBALEMAIL в конфигурационном файле и добавили ключ --email-report к команде запуска tripwire в /etc/cron.daily/tripwire-check, то отчеты будут посылаться по почте.

Общие ключи к программам

При вызове программ можно использовать дополнительные ключи:

Мониторинг и разборка отчетов

Проверка целостности системы (текстовый отчет выводится на stdout, если не задан ключ --no-tty-output; создается файл с отчетом, который шифруется, если задан ключ --signed-report; БД не изменяется):
   tripwire --check [--twrfile имя-файла-с-отчетом] [--email-report [--email-report-level уровень]] {объект }

Ограничить список проверок можно следующими ключами:

Коды возврата (могут комбинироваться):

Ключ --interactive позволяет изменить БД в диалоговом режиме. Запускается текстовый редактор (ключ --visual имя-редактора, переменная EDITOR в конфигурационном файле или переменные окружения VISUAL или EDITOR) и предоставляется возможность отредактировать форму изменения БД, в которой каждый "подтвержденный" файл надо отметить крестиком в секции Object Summary. Запрашивается парольная фраза.

Просмотр файла с отчетом:
   twprint --print-report --twrfile имя-файла-с-отчетом [--report-level уровень]

Просмотр БД или отдельных объектов:
   twprint --print-dbfile {объект}

Изменение БД с целью отразить существующее состояние вещей в интерактивном режиме (то же самое, что и tripwire --check --interactive):
   tripwire ---update --twrfile имя-файла-с-отчетом

Изменение БД с целью отразить существующее состояние вещей в автоматическом режиме:
   tripwire ---update -a --twrfile имя-файла-с-отчетом

Конфигурационный файл

Конфигурационный файл: /etc/tripwire/tw.cfg, хранится в кодированной и подписанной форме. Преобразовать его в текстовый формат можно командой:

   twadmin --print-cfgfile > /etc/tripwire/twcfg.txt

после чего отредактировать любым текстовым редактором, закодировать и подписать командой

   twadmin --create-cfgfile [--no-encription] /etc/tripwire/twcfg.txt

а текстовый файл немедленно удалить.

Формат файла:

Обязательные переменные:

Необязательные переменные:

Полиси

Полиси: /etc/tripwire/tw.pol, хранится в кодированной и подписанной форме. Преобразовать его в текстовый формат можно командой:

   twadmin --print-polfile > /etc/tripwire/twpol.txt

после чего отредактировать любым текстовым редактором, закодировать и подписать командой

   twadmin --create-polfile [--no-encription] /etc/tripwire/twpol.txt

а текстовый файл немедленно удалить. После этого требуется создать БД заново.

Если полиси изменяется для уже существующей БД, то чтобы преобразовать базу данных и полиси за один шаг необходимо вместо twadmin запустить

   tripware --update-policy [--secure-mode {high | low}] /etc/tripwire/twpol.txt

При этом собирается информация о текущем состоянии файловой системы и в режиме безопасности high при наличии нарушений старых правил, которые одновременно являются нарушениями новых правил выводится их список (на stderr), а БД не изменяется.

Текст за символом # до конца строки является комментарием.

Базовым элементом полиси являются правила (rule), которые задают для системных объектов (файлов или директорий, файлы внутри директории наследуют указанное правило, однако, рекурсия не пересекает границу файловой системы) наборы отслеживаемых свойств (не более одного правила для объекта):

   полное-имя-объекта -> маска-свойств [(атрибуты)];
   !полное-имя-игнорируемого-объекта;

Именем объекта является полное имя файла (директории). Пробелы игнорируются, если не заключить имя в кавычки. Кавычка игнорируется, если не заключена в кавычки и ей не предшествует обратная косая черта. Всякие специальные символы (!{}>(),;=$#|\+' и \n, \t) также надо заключать в кавычки.

Маска свойств задает, какие свойства объекта будут проверяться. Каждому свойству соответствует буква. Маска не может быть пустой. Знак плюс перед буквой включает проверку, знак минус - выключает. Если знака перед буквой нет, то подразумевается предыдущий в данном правиле знак или знак плюс, если знаков не было совсем. Если буква свойства отсутствует, то проверка свойства выключена. Если буква свойства встречается несколько раз, то используется последнее вхождение. Обрабатываются следующие свойства:

Атрибуты модифицируют действие правила, записываются в виде списка имя = значение через запятую и могут применяться к отдельному правилу или группе правил. Группа правил заключается в фигурные скобки. Список атрибутов для группы правил записывается в скобках перед ней. Индивидуальные атрибуты имеют больший приоритет, чем групповые, за исключением атрибута emailto - в этом случае атрибут добавляется. Обрабатываются следуюшие атрибуты:

Директивы группируют правила и обеспечивают условное выполнение. Имя директивы не может быть получено подстановкой значения переменной. Список директив:

Переменные делятся на глобальные и локальные для данной секции. Локальные имеют больший приоритет. Значение переменной присваивается командой
   имя_переменной = значение;
Имя переменной может включать буквы (регистр имеет значение), цифры и знаки: "_+-@:&%^.". Если значение содержит пробел или управляющие сиволы, то оно должно быть заключено в кавычки. Подстановка переменных допускается в любом месте, где по синтаксису полагается строка (в т.ч. как часть левой части правила) и выражается так:
   $(имя_переменной)
Предопределенные переменные (не могут быть переопределены):

Уровни подробности распечатки отчета

Уровень 0: отчет одной строкой. Появляется также в syslog и в заголовке Subject: каждого отчета, посылаемого по почте.
   TWReport имя-хоста дата-и-время V:число-нарушений S:макс-уровень A:добавлено R:удалено C:изменено

Уровень 1: список имен поврежденных файлов в виде, легко разбираемом программой восстановления и т.п. Каждая строка состоит из ключевого слова (Added, Modified), двоеточия и имени файла.

Уровень 2: суммарный отчет, список нарушений с указанием имен правил, список добавленных, измененных и удаленных файлов.

Уровень 3: суммарный отчет, список нарушений с указанием имен правил, список добавленных и удаленных файлов, ожидаемые и реальные свойства измененных файлов.

Уровень 4: суммарный отчет, список нарушений с указанием имен правил, список добавленных, измененных и удаленных файлов, детальный отчет по каждому добавленному файлу (все свойства), каждому измененному файлу (все проверяемые ожидаемые и реальные свойства), каждому удаленному файлу (все проверяемые ожидаемые свойства).

Шифровка и парольная фраза

Парольная фраза меняется только одновременно со сменой ключей, поэтому чтобы сменить парольную фразу, надо дешифровать все файлы, сгенерировать новые ключи, затем зашифровать файлы. Если вы забудете парольную фразу или удалите/повредите/измените файлы с ключами, то зашифрованные файлы (конфигурация, полиси, БД (и может быть отчеты) станут недоступны). Кстати, шифровка не помешает хакеру удалить любой файл, включая БД tripwire, так что использование tripwire не отменяет обязательности резервного копирования.

Узнать какой ключ использован для шифровки файла (и использован ли вообще):

   twadmin --examine имя-файла

Убрать шифровку (запрашивается парольная фраза, файл остается в двоичном формате):

   twadmin --remove-encryption имя-файла

Создание нового ключа:

   twadmin --generate-keys --local-keyfile имя-файла-ключей

   или

   twadmin --generate-keys --site-keyfile имя-файла-ключей

Шифрование файла:

   twadmin --encrypt --local-keyfile имя-файла-ключей имя-файла

   или

   twadmin --encrypt --site-keyfile имя-файла-ключей имя-файла

siggen

Вспомогательная программа, вычисляющая контрольную сумму методами CRC-32, MD5, HAVAL и SHA в реализации tripwire, что позволяет сравнить производительность различных методов. Самый быстрый (но нестойкий к подделке) - CRC32. Из устойчивых алгоритмов у меня (Pentium !!!) самым быстрым оказался HAVAL, затем SHA и самый медленный - MD5.

Ссылки

@ Карта сайта News Автора!

Bog BOS: Tripwire: принципы работы, установка и настройка

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru