Сайты в кладовке Фленов Михаил aka Horrific Спецвыпуск: Хакер, номер #062, стр. 062-070-3 Случай второй. Недавно мне пришлось восстанавливать сайт друзей после взлома и искать обидчиков. В первую очередь (до начала восстановления) я, конечно же, начал сканировать сервер на наличие подкинутых файлов. Ничего лишнего на сервере не было, но через день взлом повторился. Я снова проверил, но результат — нулевой. На сервере не было шелла. Точнее, не было отдельного файла, который работал бы как шелл. Хакер поступил интереснее: в один из сценариев добавил JavaScript-код, который по щелчку в определенном месте отображал форму для ввода команд. Команды передавались функции system. Нетрудно догадаться, чем это грозит. Лишних файлов не было, поэтому я и не смог найти гадину с первого раза. Проблема может решиться достаточно легко: синхронизировать сервер с локальной копией сайта и удалить на сервере все лишние файлы, заменить все измененные. Идеального решения я не нашел, но есть приближенные к идеалу. Синхронизация файлов Ближе всего к идеалу — использовать легендарный FTP-клиент CuteFTP (www.globalscape.com). Запускаем программу, соединяемся с сервером и выбираем пункт меню Tools/Folder tools/Synchronize Folders. Перед тобой появляется окно, в нем указываешь локальную папку, где находится копия сайта, и удаленную папку сервера. Чтобы синхронизировать не только одну удаленную папку, а все сразу, выбираем корневую директорию сайта и ставим галочку в Include subfolders. Кстати, не забываем в выпадающем списке Please select the direction of synchronization («Пожалуйста, выберите направление синхронизации») выбрать пункт Mirror local (Make the remote side just like the local — «Локальное зеркало» («Сделать удаленную сторону точно такой же, как и локальная). Если нажать на кнопку Advanced, то появляются дополнительные настройки. Здесь обязательно должна быть галочка напротив When one way mirroring, delete destination file if in does not exists in source folder («При односторонней синхронизации удалять файлы на приемнике, если они не существуют на источнике»). Это означает, что, если какой-то файл не существует локально, он будет удален на сервере, потому что создан не нами и, скорее всего, содержит заразу. Единственный недостаток такого решения в том, что директория на локальном компьютере должна содержать точную копию сайта, — не всегда удобно. Иногда попадаются папки, которые занимают много места, держать их локально просто лень. Например, у меня такие папки — Download и Files, в них полно мусора. Если нет полной копии на локальном компьютере, во время синхронизации всплывет серьезная проблема: удалится нужное, а хакер и посетители только посмеются ей. Шелл вряд ли будет жить в zip-архивах, да и лишний php-файл среди архивов с отличающимся расширением сразу станет заметным, как обезьяна среди людей. Еще одна неприятность в том, что CuteFTP иногда ошибается. Если сервер находится в Москве, а мы — на Чукотке, то часы показывают разное время и при закачке фалов на сервер дата отличается от даты локального файла. CuteFTP следит за этим делом, но не всегда, поэтому и возникают проблемы в синхронизации. |