ситуация следующая: сайт на друпал-7 и некоторое время назад его основная страница (только она одна!) стала отображаться в гугле иероглифами. простым поиском grep по слову "googlebot" был найден вредоносный пхп-код типа japanese keyword, который сидел в файле bootstrap.inc (папка /www/includes в корне сайта, код был добавлен прямо в начало файла), он был удален, все нормально заработало, но через несколько дней опять выехало то же самое и теперь тот же самый код был добавлен в файл default.settings.php в пути /www/sites/default. он был удален и опять через день появился тот же код только уже в файле template.php стандартной темы оформления. никаких новых файлов, папок и прочего не появляется, изменения касаются только какого-то одного файла, куда просто "самодобавляется" этот пхп-код. пароли учёток админов сменены, пароль фтп тоже. если используется дыра в каком-то стороннем модуле, то как его вычислить, кто подскажет? заранее спасибо.
Ответ
Если он "самодобавляется" - значит вирус имеет право записи в файлы. Значит он уже в системе. Вычистите код и скопируйте локально, дампаните БД, и снесите ОС. Обновите cms. Затем всем PHP-исполняемым файлам отберите права записи файлов(на случай дыр в коде) - у пользователя, под которым выполняется PHP (например):
find . -iname "*.php" | xargs chown deployuser
find . -iname "*.php" | xargs chmod 644
find . -iname "*.inc" | xargs chown deployuser
find . -iname "*.inc" | xargs chmod 644
Затем запретите в настройках PHP небезопасные функции, с помощью которых можно SSH тунель прокинуть. Проанализируйте открытые порты:
netstat -lntu
Например порт mysql (3306) стоит закрывать с помощью штатного фаервола ОС, подробнее про анализ портов выходит за рамки вопроса.
И если известен конкретный вирус - о его природе проникновения тоже известно в интернете. Тем не менее общие рекомендации по безопасности (читай выше) - выполнять стоит, иначе голова будет постоянно болеть. Может помочь антивирус, но не 100%.
P.S. Если бы ваш проект был добавлен в репозиторий - git: то такие проблемы было бы гораздо проще решать, по команде git status - вы бы видели все изменённые не вами файлы, а git checkout * возвращал бы все правки файлов до вашей версии кода.
UPD
Если же доступ к серверу не полный тогда всё весьма ограничено в плане безопасности: нужно найти по access логам странные запросы - и выявить место, через которое к вам встраивается код, закрыть его.
Как это сделать: первым делом перенести весь код в git-репу, и склониться в свой каталог проекта(гит то там должен быть на сервере! Не забудьте при этом правильно сделать .gitignore файл) - потом когда бот опять придёт, одной командой вы увидите файлы, которые он поменял. У этих файлов будет дата модификации. Теперь вы сможете увидеть по access логу - каким точно запросом к вам проникли (просмотрев запросы по логу секундой раньше даты модификации). Ну и в коде закрыть этот дырявый запрос! А так-же увидите IP-адрес бота - мало ли найдётся и сам злоумышленник.
Если нравится тот-же хостер: так сделайте у него ещё аккаунт, и на него всё перенесите. Но думаю дело не в хостере, а в том что бот запомнил что у вас дыра - и периодически посещает вас. Тем не менее - если хотите годную web-безопасность, нужен минимум VDS.
Комментариев нет:
Отправить комментарий