Tripwire – это весьма полезная софтина для тех, кто хочет знать что у него делается на файловой системе. Особенно ценным это знание может быть на серверах хостинга, которые постоянно пробуют на прочность всякие кулхацкеры в надежде найти старое непатченное программное обеспечение и залить туда какой-нибудь шелл. Tripwire создает у себя списочек всех файлов, рассчитывает их контрольные суммы, а затем докладывает если произошли какие-то изменения (появились новые, удалены старые, изменены существующие и т.п.).
Запустить всё это хозяйство можно с помощью следующих простых шагов.
-
Создаём ключи. Каждый из них будет защищен своим паролем:
twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
-
Создаем зашифрованный конфигурационный файл /etc/tripwire/tw.cfg на основе plaintext файла /etc/tripwire/twcfg.txt, для этого потребуется ввести пароль от site-ключа.
twadmin --create-cfgfile --cfgfile /etc/tripwire/tw.cfg --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
-
Правим под свои потребности файл /etc/tripwire/twpol.txt, в котором указано какие файлы и как мониторить, и конвертируем его в зашифрованный файл /etc/tripwire/tw.pol:
twadmin --create-polfile --polfile /etc/tripwire/tw.pol --site-keyfile /etc/tripwire/site.key /etc/tripwire/twpol.txt
Здесь опять потребуется ввести пароль от site-ключа.
- Инициализируем базу данных, чтобы tripwire просканировал файловую систему и сохранил исходную информацию об упомянутых в policy-файле объектах:
tripwire --init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/srv.host.name.twd
The database was successfully generated.
Потребуется ввести пароль от local-ключа.
Затем через cron будет вызываться проверялка (по умолчанию раз в сутки) и присылать на email список изменений. Отчеты об изменениях записываются в директорию /var/lib/tripwire/report (для CentOS, в других дистрибутивах может быть иначе). Если после просмотра отчета мы не обнаружили ничего подозрительного и хотим "согласиться" с изменениями, то запускаем такой скриптик:
#!/bin/bash
WD=/var/lib/tripwire/report
tripwire --update --accept-all -r `echo $WD/$(ls -tr $WD | tail -n 1)` -P xxxXXXxxx
где xxxXXXxxx – пароль от local-ключа.
Если потребовалось внести изменения в policy-файл, то после этого нужно сделать
tripwire --update-policy /etc/tripwire/twpol.txt
и далее ввести пароли от site и local ключей.
Если после этого ругается вот так:
### Error: Policy Update Changed Object.
### An object has been changed since the database was last updated.
то последнюю команду можно заменить на
tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt