Tripwire пропускает файлы?
TL;DR:
Вопрос: как мне настроить Tripwire, чтобы смотреть ВСЕ, что ниже определенного пути? Моя текущая конфигурация, кажется, смотрит только на определенные файлы / каталоги по заданному пути, а не на все.
Предыстория / Полная история:
Я недавно установил Tripwire на сервер, на котором был какой-то уязвимый код PHP. Я добавил правило под названием "Веб-сайты", которое включает в себя несколько сайтов, которые запускаются с сервера (фрагмент ниже).
# Rulset for websites
(
rulename = "Websites",
severity = $(SIG_HI),
emailto = "webmaster@hackedsite.com"
)
{
/home/foouser1/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser2/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser3/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser4/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser5/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser6/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser7/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser8/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser9/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser10/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser11/www/ -> $(SEC_CRIT) (recurse = 1);
/home/foouser12/www/ -> $(SEC_CRIT) (recurse = 1);
}
Затем я обновил политику, используя:
/usr/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
Я ввел ключ своего сайта, как и ожидалось, и политика была обновлена без ошибок.
Когда я запускаю проверку, нет ошибок и нарушений.
Затем, чтобы проверить это, я добавил дополнительный пробел в один из файлов (/home/foouser1/www/foo/bar/js/script.js
), который ранее (и неоднократно) был скомпрометирован. Это должно вызвать нарушение.
Повторный запуск проверки (tripwire --check -R Websites
-v) показывает несколько проблем:
- Tripwire игнорировал файл, даже думал, что он ниже заявленного пути к файлу
/home/foouser1/www
, - Он сканирует кучу файлов, которые находятся в
/home/foouser1/www
, Но не все из них.
Наконец, когда я сравниваю содержимое каталога /home/foouser1/www
к количеству файлов, отсканированных tripwire, есть огромная разница.
find /home/foouser1/www/ -type f -print | wc -l
показывает, что в этом каталоге находится более 3000 файлов, которые должны просматриваться tripwire.
find /home/foouser1/www/ -type d -print | wc -l
показывает, что в этом каталоге есть 192 подкаталога, которые следует отслеживать с помощью tripwire.
Tripwire сообщает, что смотрел только 192 объекта.
1 ответ
Оказывается, что (recurse=1) не нужно. Рекурсивная проверка файлов и подкаталогов включена по умолчанию. Но, чтобы зафиксировать незначительные изменения (например, однобайтовые изменения), вам необходимо проверить хеш файла (предпочтительнее SHA). Итак, вы можете использовать следующую переменную в качестве маски:
SEC_HACK_DETECT = $(IgnoreNone)-a ; # Files that should not change
Между этими двумя изменениями Tripwire затем работает как положено.