Обнаружение изменений в файлах на веб-сервере

в 19:51, , рубрики: php, администрирование веб-серверов, безопасность сайтов, информационная безопасность, метки: ,

Здравствуйте, уважаемые читатели!

Картинка, кратко и аллегорично передающая смысл поста:
Обнаружение изменений в файлах на веб сервере

У меня есть несколько сайтов, на которых в какой-то момент начал появляться вредоносный код, выглядящий как отдельные php-файлы либо дополнительные строки с длинными eval() в существующих файлах.

После смены всех паролей, обновления CMS до последних версий и других мероприятий по повышению устойчивости сайтов от злоумышленников такие случаи стали редкими, но не прекратились.

Тогда я задумался, как бы мне так оперативно узнавать, куда в очередной мне внедрят код, чтобы можно было его тут же прибить?

Я слыхал, что есть готовые серьезные решения для этого, но хотелось:

  1. Простого и быстрого в настройке и работе.
  2. Самописного, чтобы немного прокачать мой программистский скилл.

В результате за несколько часов в течение ~недели я написал проверяльщик, который не долго думая назвал Simple File Integrity Checker (SFIC).

Он:

  • прост до необходимого минимума;
  • работает с файловой системой от указанного пути и глубже;
  • проверяет, не изменились ли файлы с момента предыдущего сканирования. Если изменились — отправляет уведомление по почте;
  • позволяет задавать исключения (изменение которых не считается вторжением на сайт) в виде имен файлов, расширений файлов и имен каталогов;
  • может проверять файлы по размеру и дате изменения либо контенту.

Его можно запускать по CRON (у меня запускается каждые 15 минут на каждом сайте) или открывать в браузере.

Если обнаружены изменения, то отдельно приводятся списки добавленных, удаленных и измененных файлов. У измененных файлов указано, как изменились дата и размер файла.
Этого вполне достаточно, чтобы навскидку понять, что примерно произошло.

Выложил проект на гитхабе.
Код оформлен так себе. Возможно, в будущем оформлю его более дружелюбно или с благодарностью приму чью-нибудь помощь в этом.
Однако поскольку он уже год как стабильно работает, я решил перестать пользоваться им в одно лицо и поделиться с общественностью.

Спасибо за внимание!

Автор: dimonier

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js