Всем спасибо, решение, как я считаю, найдено! Хоть и сырое, но действенное.
Есть русская пословица – «пока гром не грянет, мужик не перекрестится». Аналогично было и со мной. Когда сайтов было мало, и когда взламывали лишь изредка, я не ставил себе задачу кардинальной защиты. Но когда начались взломы пачками — схватился за голову.
Итак, хочу поблагодарить всех тех, кто принимал участие в дискуссии и давал ценные советы, как в этой теме, так и в личке (особенно winstrool).
Ранее я не использовал средства слежения за целостностью сайта – не было в том необходимости. Когда же эта необходимость возникла, я начал исследовать возможность их применения. Мои изыскания, если так можно выразиться, привели к неутешительным выводам – ни одно из средств, используемых в настоящее время, не годится для серьезной работы. Все компоненты и сервисы обеспечения защиты уязвимы. Почти все они, в том числе и обсуждаемый здесь САНТИ, хранят обычные хеши в файлах на сайте, которые легко подменить. Защитить такой компонент может лишь от «кулхацкера», новичка, который использует чужие эксплойты и не имеющий навыков самостоятельного исследования возможности проникновения.
Спасибо flyingspook и voland за мысль о паранойе. Это позволило не только понять отношение сообщества к данной проблеме, но и натолкнуло на мысль о деньгах, сейфе и квартире, где я провел аналогию с хостингом. Вспомнилась известная фраза – храните деньги в банке, а не дома. Действительно, даже сейфы – не панацея, а вот банк куда надежнее. Это навело на мысль о создании некой централизованной системы контроля сайтов. Спасибо voland за рассуждения о неэффективности решения писать программу, так как действительно, это нужно делать под разные операционные системы, что крайне затруднительно.
А вот локальный сервер есть у всех. В результате я принял решение начать разработку такой системы на PHP. Это будет аналог гипервизора для контроля состояния сайтов. Таким образом взломать меня становится почти невозможно.
Я решил назвать эту систему SCMS (System Control and Monitoring Sites). И, помимо основной задачи по защите сайта может выполнять ряд других полезных задач, например, сбор статистики, контроль прав доступа, проверка скорости загрузки с разных прокси и т.д.
Идея этой системы заключается в том, что основной сайт находится не на хостинге, а на локальном сервере, куда доступа извне нет. На хостинге же располагается его копия. Механизмы синхронизации данных поддерживают обе копии в актуальном состоянии (допустим, синхронизируются раз в сутки). CRC каждого файла хранится в базе данных SCMS, которая, по запросу администратора или в автоматическом режиме инициирует сканирование сайта на хостинге. Инициализация сканирования производится через файл, лежащий в корневой папке сайта, который по запросу извне запускает демона и выдает отчет о его работе. Подделать этот файл невозможно, т.к. сам код сканера подгружается им от SCMS.
У сканера два механизма, не зависящие от каких либо данных на хостинге. Первый механизм – онлайн-сканирование. Используется при ручном сканировании. При поступлении команды SCMS генерирует рандомный список файлов, CRC которых требуется проверить, и отдает этот список сканеру на хостинге, который должен проверить файлы (в том числе и себя) и вернуть список полученных хешей. Вместе с этим туда же загружается и скрипт проверки. Если хоть один хеш неправильный, производится удаление всех файлов с хостинга и заливка оригинала. Второй механизм – автоматическая проверка. То же самое, только сканеру передается список файлов и их общий хеш. Запускается демон, который получает массив файлов, проводит сканирование и сбор CRC, вычисляет общий хеш и сравнивает с полученным от SCMS. Если они различаются – «звоночек».
При такой схеме мы получаем: возможность контроля неограниченного количества сайтов без привязки к движку и практически 100% гарантию безопасности. Хакер все равно доступ к файлам получит (не у каждого хостера грамотные админы), все равно он внедрит свой код, получит доступ к базе, что то намутит и т.д. Но теперь для меня это не критично – как только обнаруживаются расхождения в хешах, сайт перезаливается. Сами хеши и код сканера так же не хранятся на хостинге, их подделать невозможно. А получить доступ к локальному серверу – это не каждый грамотный специалист сможет. Да и вычленить шелл из взломанного сайта не каждый может, а тут даже не нужно этим забивать голову. Для профилактики можно перезаливать файлы раз в неделю. И пусть ломают…