Php скрипт отслеживания файлов сайта

Владельцев сайтов справедливо волнует вопрос, что делать, если сайт взломают. Конечно, нужно латать дыры, особенно в стандартных CMS, где каждый недочет в безопасности давно известен хакерскому сообществу. Но можно, как минимум, облегчить себе жизнь в том случае, когда взлом уже состоялся.

В этом случае перед нами стоит две задачи:
1. Своевременно узнать о взломе.
2. Быстро найти, что враг изменил на сайте, и исправить это, пока не пострадали пользователи, а поисковые системы не блокировали выдачу сайта за вредоносный код.

Для реализации этого сделан небольшой php скрипт, который постоянно контролирует все файлы, находящиеся в директории вашего сайта.

Скрипт целесообразно запускать по расписанию (через cron). Он будет просматривать все файлы на вашем хостинге, начиная с заданной директории, кроме специально прописанных в настройках исключений (конкретных файлов или директорий, либо определенных расширений файлов). При этом отслеживаются все изменения:

Результаты своей работы скрипт пишет в файл лога, и, кроме того, если были изменения в каких-либо файлах, то они выдаются на стандартный вывод (при запуске из браузера эти результаты будут на экране, а при запуске из крона обычно настроена автоматическая отправка выдачи скрипта на емейл). Таким образом, если изменений в файлах не было, то вы ничего не будете получать. А если какие-то файлы изменились, то получите на емейл сообщение, какие именно файлы и как изменились (и дубль этого сообщения будет в лог-файле). Соответственно, найти все результаты деятельности хакеров будет очень просто.

Скрипт отслеживания файлов вы можете скачать прямо здесь. Все его настройки описаны в тексте скрипта. Информация обо всех файлах хранится в папке скрипта в файле chfiles.tmk, а лог его работы пишется там же в chfiles.log. В первый раз лучше запустить скрипт контроля файлов из браузера, чтобы он прошел по всем файлам (не обращайте внимания на предупреждения об отсутствии файла данных - он его сделает). И после этого - ставить на крон.

В случае изменения данных о любом файле скрипт сохраняет старые данные (там интересны в основном размер и дата) - до четырех старых наборов сведений о файле. А новые данные считаются дальше актуальными, и больше сообщений о них не будет, пока не изменятся снова. Посмотреть все сведения о файлах можно, например, распечатав весь файл данных такой строчкой:

<? print_r(unserialize(file_get_contents('chfiles.tmk'))); ?>

(эту строчку положить в отдельный файл, например, show.php в той же директории, где и основной скрипт отслеживания файлов, и запустить его в браузере).

Вопросы можно задавать Mike05 в этой теме на Серче. Кому скрипт пригодится - спасибы и плюсы приветствуются. :)

Читать далее: База сайтов Яндекс каталога.