Pull to refresh

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

Reading time 2 min
Views 38K
Здравствуйте, уважаемые читатели!

Картинка, кратко и аллегорично передающая смысл описанного в посте скрипта:


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

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

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

Я слыхал, что есть готовые серьезные решения для этого, но хотелось:
  1. Простого и быстрого в настройке и работе.
  2. Самописного, чтобы немного прокачать мой программистский скилл.


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

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


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

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

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

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


Дополнение: тема актуальна не только для меня, т.к. в комментах нашлось более проработанное решение того же вопроса (но пока недоступное общественности).
Дополнение 2: в комментах навели на веб-антивирус САНТИ, который помимо проверки целостности файлов делает еще много всего.
Tags:
Hubs:
+8
Comments 72
Comments Comments 72

Articles