Tripwire

Tripwire — свободное программное обеспечение для обеспечения безопасности и контроля целостности данных, предназначенное для мониторинга и оповещения об изменениях файлов на различных системах[2][3]. Первоначально разработан Юджином Х. Спэффордом и Джином Кимом. Проект основан на коде, предоставленном компанией Tripwire, Inc. в 2000 году[4][5]. Программа распространяется на условиях GNU General Public License[1][6], однако в настоящее время не поддерживается. Последнее обновление выпущено в 2018 году[7].

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

Общие сведения
Tripwire
Тип безопасность, мониторинг, HIDS
Разработчики Tripwire, Inc.
Написана на C++, Perl
Операционные системы Linux, все системы POSIX/UNIX
Последняя версия 2.4.3.7 (31 марта 2018)
Репозиторий github.com/Tripwire/trip…
Лицензия GPLv2[1]
Сайт github.com/Tripwire/trip…

История

Tripwire был создан доктором Юджином Спэффордом и Джином Кимом в 1992 году в ответ на серию скрытых взломов, произошедших в начале 1991 года. Эти атаки обходили тогдашние системы безопасности, заражая разделяемые библиотеки таким образом, что их контрольные суммы CRC оставались без изменений. Tripwire предназначался для использования криптографических хеш-функций из разных семейств (например, MD5 и Snefru), чтобы оставаться надежным даже при скомпрометированном одном из алгоритмов.

Название Tripwire («растяжка») происходит от файлов-ловушек (trap или tripwire files), которые сигнализируют администраторам при попытке доступа злоумышленников[8]. Спэффорд вспоминает:

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

Tripwire был написан на C, а его архитектура ориентировалась на переносимость как программы, так и базы данных. 2 ноября 1992 года состоялся бета-выпуск, а в декабре 1993 года был осуществлен официальный выпуск после устранения обнаруженных ошибок. Ранние версии создавались с применением чистой разработки: разработку выполнял Джин Ким, тестирование — Юджин Спэффорд.

Изначально Tripwire распространялся свободно и с открытым исходным кодом, но в 1997 году стал коммерческим продуктом. Открытая версия Tripwire была выпущена в октябре 2000 года[5], под лицензией GNU General Public License[6].

4 мая 2015 года исходный код проекта был перенесён с SourceForge на GitHub.

Обзор

undefined

Во время установки Tripwire предлагает пользователю задать пароли (passphrase) для site‑key и local‑key. Passphrase для site‑key используется для шифрования файла политики и конфигурационных файлов, разделяемых между разными системами. Local‑passphrase защищает данные на конкретной машине. В файле политики определяется перечень файлов и каталогов для проверки, а также правила (например, по каким атрибутам дерева каталогов искать изменения)[2].

При создании начальной базы данных с подписями файлов Open Source Tripwire вновь запрашивает локальный passphrase. Затем программа выполняет первое сканирование системы и сохраняет результат в базу. После этого выполняется проверка целостности с сопоставлением с данными базы. К примеру, при создании нового файла он будет отображён в следующем отчёте проверки[3]. Tripwire можно сконфигурировать для регулярных проверок целостности и автоматической отправки отчётов по электронной почте администраторам системы[9]. Инициализация базы должна выполняться до того, как система подверглась взлому.

Пользователь может создать файлы‑ловушки, внешне представляющие ценные данные (например, файл master-password.txt), и настроить Tripwire на отслеживание изменений в этих файлах для поимки злоумышленников. При обращении к таким файлам злоумышленников обновляются их временные метки доступа, а администраторы получают уведомление об инциденте.

В отличие от Tripwire Enterprise, Open Source Tripwire не выпускается для Windows и включает только базовые политики[10]. Пользователи Windows могут запускать Tripwire под Cygwin, однако в этом режиме не проверяются специфические атрибуты Windows, такие как реестр Windows[11].

Технические особенности

Файл политики

Файл политики называется twpol.txt (или tw.config в более ранних версиях), и определяет перечень контролируемых файлов и каталогов. Поддерживается механизм препроцессинга, позволяющий использовать один файл политики для разных машин. Для каждого файла или каталога в политике указывается маска выбора атрибутов — какие игнорировать, а о каких сообщать. Например, маска может быть настроена на отслеживание изменений отметки времени модификации, количества ссылок, размера, прав доступа и специальных режимов, но игнорировать изменения отметки времени доступа. Также есть возможность указать, требуется ли рекурсивный обход каталогов[12].

Пример файла политики:[12]

# системные бинарники
SYSBIN =  +pngu+sm;

/usr/local/bin/pwgen  -> $(SYSBIN);
/usr/bin -> $(SYSBIN);
/usr/sbin -> $(SYSBIN);

/etc/security   -> +pug  (recurse=-1);

# игнорировать last log
!/etc/security/lastlog;

# логи
SYSLOGS = +p-lum;

/var/adm/messages -> $(SYSLOGS);
/opt -> $(SYSBIN);
# игнорировать — не сканировать
!/opt/dump;
!/opt/freeware;

Следующий пример взят из работы «The Design and Implementation of Tripwire: A File System Integrity Checker» Спэффорда и Кима; здесь показано использование встроенного препроцессора. Игнорируется каталог принтерных логов для определённого хоста, в то время как для остальных система его сканирует. Таким образом, препроцессор позволяет использовать один файл политики в неоднородной инфраструктуре.

# file/dir selection-mask
/etc R # все файлы под /etc
@@ifhost solaria.cs.purdue.edu
!/etc/lp # не включать логи принтера SVR4
@@endif
/etc/passwd R+12 # максимальное внимание к этому файлу
/etc/mtab L # динамические файлы
/etc/motd L
/etc/utmp L
=/var/tmp R # только сам каталог, не содержимое

Файл конфигурации

Файл конфигурации называется twcfg.txt и содержит информацию о путях к файлу политики, базе данных, отчётам и др. Также присутствуют настройки почты (например, какая программа используется для отправки отчётов по электронной почте)[12][13]. Пример файла конфигурации:[12]

ROOT                   =/opt/freeware/sbin
POLFILE                =/etc/tripwire/tw.pol
DBFILE                 =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE             =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE            =/etc/tripwire/site.key
LOCALKEYFILE           =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR                 =/usr/bin/vi
LATEPROMPTING          =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS       =true
EMAILREPORTLEVEL       =3
REPORTLEVEL            =3
MAILMETHOD             =SENDMAIL
SYSLOGREPORTING        =false
MAILPROGRAM            =/usr/sbin/sendmail -oi -t

Файл базы данных

Файл базы данных индивидуален для каждой машины (файлы политики и конфигурации могут быть общими). Здесь фиксируются права доступа к файлам, даты изменения и сигнатуры файлов. Для каждой записи хранится до 10 различных сигнатур. Содержимое самих файлов не сохраняется, так как это заняло бы слишком много места на диске. Файл базы читаем человеком, что позволяет вручную проверять отдельные атрибуты файлов и выявлять возможные попытки подделки.

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

Подписи файлов

Чтобы минимизировать риск коллизий хеш-функций (то есть ситуация, когда подпись не меняется при изменении файла), Tripwire использует несколько разных алгоритмов хеширования для вычисления нескольких сигнатур одного файла. Поскольку производительность алгоритмов может различаться, пользователь может настраивать, какие сигнатуры использовать и как часто их пересчитывать. Например, система может сравнивать CRC32 каждую час, а MD5 — раз в сутки: так частые проверки будут быстрыми, а модификации, не изменяющие CRC32, будут всё равно обнаружены суточной проверкой MD5. Также существует универсальный интерфейс для подпроцессов подписи: пользователь может добавить собственные методы вычисления контрольной суммы.

Примечания

  1. 1 2 LICENSE. Github. Дата обращения: 5 сентября 2019. Архивировано 19 августа 2025 года.
  2. 1 2 3 Michael Kwaku Aboagye. Securing the Linux filesystem with Tripwire (англ.). opensource.com (18 января 2018). Дата обращения: 14 января 2024. Архивировано 6 мая 2023 года.
  3. 1 2 Li, Hui; McGinty, Michael; Fu, Xinwen Monitor and Secure Linux System with Open Source Tripwire (англ.). University of Massachusetts Lowell (2012). Дата обращения: 14 января 2024. Архивировано 14 января 2024 года.
  4. Open Source Tripwire on SourceForge (21 октября 2018). Дата обращения: 14 января 2024. Архивировано 18 октября 2000 года.
  5. 1 2 Bauer, Mick (1 июля 2001). “Paranoid penguin: intrusion detection for the masses”. Linux Journal [англ.]. 2001 (87). Архивировано из оригинала 14 января 2024. Дата обращения 14 января 2024.
  6. 1 2 Mellem, Erik; Olsen, Frode Real time Integrity Control of Operating systems. Agder University College (июнь 2004). Дата обращения: 17 января 2024. Архивировано 8 марта 2024 года.
  7. Tripwire Open Source. Архивировано 19 августа 2025 года.
  8. DeMara, Ronald F; Rocke, Adam J (февраль 2004). “Mitigation of network tampering using dynamic dispatch of mobile agents”. Computers & Security [англ.]. 23 (1): 31—42. DOI:10.1016/S0167-4048(04)00068-9. Проверьте дату в |date= (справка на английском)
  9. Lynch, William Getting Started with Tripwire (Open Source Linux Edition) (англ.). LinuxSecurity (21 марта 2001). Дата обращения: 17 января 2024. Архивировано 7 декабря 2024 года.
  10. Sen, Kaushik Tripwire Enterprise vs Free Tripwire Open Source (англ.). UpGuard (17 октября 2021). Дата обращения: 14 января 2024. Архивировано 19 января 2022 года.
  11. Jauhiainen, Juho Ensuring system integrity and security on limited environment systems (англ.) 18. University of Turku (декабрь 2021). Дата обращения: 17 января 2024. Архивировано 9 февраля 2024 года.
  12. 1 2 3 4 Tansley, David Running with Tripwire: Using Tripwire to monitor file changes. IBM developerWorks (13 декабря 2011). Архивировано 3 мая 2012 года.
  13. Natarajan, Ramesh Tripwire Tutorial: Linux Host Based Intrusion Detection System (англ.). The Geek Stuff (8 декабря 2008). Дата обращения: 17 января 2024. Архивировано 11 июля 2025 года.

Ссылки