Здравствуйте, уважаемые читатели!
Картинка, кратко и аллегорично передающая смысл поста:
У меня есть несколько сайтов, на которых в какой-то момент начал появляться вредоносный код, выглядящий как отдельные php-файлы либо дополнительные строки с длинными eval() в существующих файлах.
После смены всех паролей, обновления CMS до последних версий и других мероприятий по повышению устойчивости сайтов от злоумышленников такие случаи стали редкими, но не прекратились.
Тогда я задумался, как бы мне так оперативно узнавать, куда в очередной мне внедрят код, чтобы можно было его тут же прибить?
Я слыхал, что есть готовые серьезные решения для этого, но хотелось:
- Простого и быстрого в настройке и работе.
- Самописного, чтобы немного прокачать мой программистский скилл.
В результате за несколько часов в течение ~недели я написал проверяльщик, который не долго думая назвал Simple File Integrity Checker (SFIC).
Он:
- прост до необходимого минимума;
- работает с файловой системой от указанного пути и глубже;
- проверяет, не изменились ли файлы с момента предыдущего сканирования. Если изменились — отправляет уведомление по почте;
- позволяет задавать исключения (изменение которых не считается вторжением на сайт) в виде имен файлов, расширений файлов и имен каталогов;
- может проверять файлы по размеру и дате изменения либо контенту.
Его можно запускать по CRON (у меня запускается каждые 15 минут на каждом сайте) или открывать в браузере.
Если обнаружены изменения, то отдельно приводятся списки добавленных, удаленных и измененных файлов. У измененных файлов указано, как изменились дата и размер файла.
Этого вполне достаточно, чтобы навскидку понять, что примерно произошло.
Выложил проект на гитхабе.
Код оформлен так себе. Возможно, в будущем оформлю его более дружелюбно или с благодарностью приму чью-нибудь помощь в этом.
Однако поскольку он уже год как стабильно работает, я решил перестать пользоваться им в одно лицо и поделиться с общественностью.
Спасибо за внимание!
Автор: dimonier