В жизни иногда случаются нехорошие события и некие персонажи стараются насолить владельцу системы по самым разным причинам. Недавний пример показал, что даже взаимнодоброе расставание с разработчиком может повлечь за собой неприятные последсвия в виде деструктивных действий со стороны этого самого разрабочика. К сожалению, до сих пор далеко не все используют scm, поэтому приходится как-то следить за изменениями в коде проекта и системе. В простом случае можно использовать команду вроде:
/usr/bin/find /var/www/ ! -path "*/tmp/*" ! -path "*/templates_c/*" ! -path "*/cache/data_*" -type f -name '*.php' -mtime -7 | mail -e -s "change files" mail@domain.ltd
или
/usr/bin/find /var/www -mindepth 1 -newermt '2017-10-20 15:00' ! -newermt '2017-10-23 15:00' -ls | mail -e -s "change files" mail@domain.ltd
Но существует более надёжный и луший способ для наблюдения за измененными файлами - это старинная утилита AIDE - Advanced Intrusion Detection Enviornment.
Утилита работает по принципу создания базы данных о файлах системы c помощью stat, что более надёжно, чем использование find. Способ с использованием find можно обмануть подменой дат изменения и он работает, только потому что даты изменения как правило оставляют без изменения. Смотрите как просто:
touch -d "2 hours ago" filename
или
touch -a -m -t 201710180130.09 filename
и способ с find уже не работает.
Итак установим утилиту. У меня gentoo, поэтому:
emerge app-forensics/aide
Теперь предстоит самое сложное - сконфигурировать.
Шаг 1 - сконфигурируем за областями слежения.
Для этого создадим конфигурациооный файл. Приведу пример:
database=file:/root/aide.db database_out=file:/root/aide.new.db database_new=file:/root/aide.new.db /etc R
Шаг 2 - сгенерируем срез системы
# aide -c aide.conf --init
Эта команда просканирует все файлы, указанные в конфигурационном файле, и создаст базу файлов aide.new.db, которую необходимо переименовать в aide.db. AIDE для сканирования использует stats, поэтому база данных содержит права, иноды, время доступа, модификации и прочие данные о файле. Вот чем хорошо использование этой утилиты.
Теперь, когда у нас есть срез данных о файлах системы, мы можем вычислять изменения в системе с момента создания последнего среза:
# aide -c aide.conf --check
При вызове этой команды, мы получим список изменений, произошедших в системе. Теперь обновим нашу базу:
# aide -c aide.conf --update
В результате сгенерируется aide.new.db, который можно сравнить с предыдущим aide.db.
Приведу примеры конгураций для AIDE:
# Такие записи скажут aide, что необходимо рекурсивно просканировать директории /bin, /etc, /usr
/bin R /etc R /usr R
Эти две аналогичные записи скажет aide, что необходимо просканировать директорию _без поддиректорий_:
=/sbin/ /sbin$ R
Эта запись скажет aide, что необходимо исключить директорию /var. Удобно, если вы рекурсивно сканируете "/"
!/var
Когда вы сгенерируете срез вашей системы, позаботьтесь о том, чтобы надёжно сохранить его. Например, передайте его на другую систему, чтобы злодей не обновил срез системы. Далее обновляйте срез системы время от времени и в нужный момент сраните их.
Комментарии (0)