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) показывает несколько проблем:
/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 объекта.
Оказывается, что (recurse = 1) не нужен. Рекурсивная проверка файлов и подкаталогов включена по умолчанию. Но для того, чтобы зафиксировать незначительные изменения (например, однобайтовые изменения), вам необходимо проверить хеш файла (предпочтительнее SHA). Итак, вы можете использовать в качестве маски следующую переменную:
SEC_HACK_DETECT = $(IgnoreNone)-a ; # Files that should not change
Между этими двумя изменениями Tripwire работает должным образом.