Web мастеру и программисту — лечим сайты от вирусов

Web мастеру и программисту — лечим сайты от вирусов изображение поста

Вы когда-нибудь сталкивались с вирусами на Вашем сайте? Вам попадался код очередного шелла? Или писала разгневанная тех. поддержка о том, что Ваш сайт стал дорвем (с него ведется рассылка спам почты, или он содержит сотни тысяч ссылок на другие проекты)?

Хостер грозится прикрыть Ваш сайт за большой исходящий трафик? Или за аномальную нагрузку без увеличения аудитории? Или еще хуже, однажды, проверяя поисковую выдачу сайта, Вы обнаружили, что Яндекс или Google занесли Ваш сайт в «потенциально опасные»? Возможно, при посещении одной из страниц сайта браузер был заблокирован антивирусом.

Итак, это случилось. И Вы стали перед фактом, что Ваш сайт заражен вирусом. Или даже полностью вышел из строя. Наличие вируса на Вашем сайте существенно подпортит репутацию проекту и требует немедленного вмешательства.

Откуда на сайтах берутся вирусы?

Постараемся вкратце выделить несколько причин «внедрения» вирусов в код сайтов.

  1. Уязвимости программного обеспечения (например: старое П.О.);
  2. Уязвимости кода сайта/ошибки программирования, связанные с безопасностью (xss уязвимости, sql уязвимости, уязвимости выполнения удаленного кода и т.п.);
  3. Ошибки системного администрирования, которые позволяют при помощи так называемых шелл скриптов поражать сразу несколько сайтов – соседей в составе одного web-сервера (уязвимости предоставления широких прав и полномочий для группы пользователей сразу на несколько каталогов, предоставление слишком широких прав для текущего пользователя, доступ к системным функциям из языка программирования, чтение содержимого каталогов, получение несанкционированного доступа и информации об установленной операционной системе и среде разработки и т.п. и т.д.);
  4. Вирусы на компьютере обслуживающего персонала сайта который используется для осуществления доступа по протоколу ftp://, которые «крадут» логины и пароли. Вирусы, которые крадут логины и пароли к закрытым разделам сайта (например, логины и пароли на панель администрирования);
  5. Brootforce взлом – «грубая сила». Подбор паролей на фтп, и к логинам системных администраторов.

Какие вирусы для сайтов бывают?

  • Iframe внедрения, когда в код Вашего сайта внедряется невидимый iframe, который пытается загрузить вредоносный код на компьютер посетителя, например, через загрузку вирусов при помощи выполнения кода в adobe flash player, abode acrobat reader и т.п. Кроме этого, iframe внедрения могут перенаправлять на другие страницы сайта, заниматься «сбором» конфиденциальной информации о посетителях Вашего сайта (от логинов и паролей, до номеров кредитных карт в интернет-магазинах), заниматься вымогательством и многим, многим другим. При помощи iframe легко организовать внедрение практически любого вредоносного кода. Сюда же можно отнести и iframe трояны и прочее «счастье».
  • Вирусы прокси-серверы, ботнеты. И вот Ваш сайт превращается в огромный прокси-сервер, при помощи которого могут производиться распределенные ddos атаки на другие проекты, производится спам рассылка почты и многое другое.
  • Вирусы – дорвеи (фармы). Такой вирус на поддомене или в «подпапке» создает «полноценный» сайт для раскрутки товаров и услуг злоумышленника. Сайт, кроме информационного наполнения, может содержать в себе десятки любых других вирусов и угроз, а также тысячи и тысячи ссылок, и может служить причиной «снижения» рейтинга Вашего сайта в поисковых системах, вплоть до полного «бана» и попадания проекта «под фильтр».
  • Shell – вирусы, предназначенные для внедрения вредоносного кода на страницы сайта, для записи информации злоумышленника, для полного несанкционированного копирования проектов и т.п. и т.д.

Причины для проверки сайта на вирусы?

Итак, Вы еще не знаете – заражен ли вирусами сайт. Сигналом для этого может быть:

  1. Предупреждение о заражении со стороны технической поддержки хостинга;
  2. Аномально высокая нагрузка (особенно превосходящий исходящий трафик над входящим) при сохранении постоянного количества аудитории. Здесь может быть и спам, и огромное количество исходящих соединений и т.п. и т.д.
  3. Если в выдаче поисковой системы при переходе по ссылкам Вашего сайта появилась надпись: «этот сайт может угрожать Вашему компьютеру»;
  4. Если Ваш антивирус предупредил Вас о вирусной активности при администрировании Вашего сайта;
  5. Возникли «подозрительные» перенаправления на страницы других ресурсов, «тормоза» при загрузке с указанием неизвестного адреса в строке состояния обозревателя и т.п.
  6. Спонтанно меняется дата изменения файлов сайта, появляются новые странные файлы или папки.

Лечим сайт от вирусов

Сперва – наперво поставьте к себе на компьютер анитивирус (желательно, посильнее) с последними базами и запустите полную проверку. По окончании проверки на вирусы смените последовательно пароль на ftp, для Вашего пользователя с доступом к панели администрирования и для пользователя базы данных.

После чего сверните и скопируйте к себе на компьютер текущую версию Вашего сайта. Скопируйте полностью, вместе с базой данных. Затребуйте у хостера логи нагрузки (подробные логи обращения к тем или иным скриптам за определенный промежуток времени с точным указанием путей, где лежат выполняемые скрипты).

Интервал: минимум, сутки. Трафик: превышение входящего над исходящим. Это будет нелишним. Также это касается обращений не только по протоколу ftp://, но и к smtp, pop3, ftp (также это поможет определить наличие brootforce – подбора паролей).

Попросите хостера о проверке обращения из исходного кода «соседних сайтов» к Вашему проекту. Вспомните, когда Вы крайний раз обращались к программисту за доработкой сайта, или же обновляли программную часть сайта? После чего запустите поиск и при помощи поиска найдите все файлы, которые изменились со времени последней модификации и по сегодня.

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

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

Обратите внимание: жирным текстом далее выделены фразы для поиска в файлах:

  • http:// – просмотрите все найденные результаты на наличие «подозрительных» ссылок;
  • iframe – используйте именно так, без указания тега, так как iframe включение может происходить не только тегом, но и через javascript окружение;
  • shell – многие «создатели» тех или иных «шеллов» подписывают и комментируют этой строкой свои «творения»;
  • sql дамп базы данных – откройте в текстовом редакторе дамп Вашей базы в соответствующей кодировке, и проверьте содержимое базы данных на указанные выше включения, если встретите странные iframe или ссылки, странный javascript код, аккуратно удалите его.

Обычно таких действий хватит для очистки web-сайта от вирусов. Но, Вы спросите, почему так скрупулезно и долго нужно проверять файлы? Просто вирус не приходит один, и исключив вирус по единожды найденному коду (например, массовой заменой в файлах) Вы, во-первых, можете попросту угробить проект (лучше просмотреть и исключить аккуратно все вручную, меняя очищенный файл за файлом и проверяя сайт на работоспособность).

Во-вторых, если есть один вирус, то может быть и другой, и третий, может присутствовать шелл, и находиться хитрый дорвей на поддомене или в подпапке с тысячами «чужих» рекламных ссылок. И даже код одного и того же вируса может «мутировать», специально осложняя поиск и удаление, и отличаясь всего в несколько символов.

Советуем Вам также после найденного вредоносного кода по указанным примерам сходить в Yandex и Google. Ввести найденные строки вирусов, содержащихся в коде Вашего сайта, и почитать, какие еще сюрпризы могут таить эти вирусы, как они попадают на сервер и как полностью от них избавиться.

Чем больше информации, тем меньше вероятность заражения сайта в будущем. Если все же «не получилось». Вроде бы все вычистили, но вирус не ушел. Или после очистки сайт вовсе перестал работать. Или заражение происходит с завидной периодичностью. Советую Вам в этом случае обратиться к профессионалам за решением проблемы (это может быть и хостер, если он предоставляет такую услугу, или же частная фирма, занимающаяся защитой информации с ограниченным доступом).

Предоставив им backup зараженного сайта (или более «свежий») до внесения изменений. Ведь вирусы бывают «закодированные», один и тот же вирус может «прятаться» в разных файлах, и «изменяться», включая свой код как в sql базу данных, так и в исходный код. А среди файлов Вашего сайта, или среди сайтов – соседей (из-за неправильно установленных привилегий), могут затеряться шеллы, раз за разом «внедряющие» вирусы к Вам на сайт.

Нелишним будет и пригласить системного администратора к себе на дом или в офис, чтобы он провел детальное сканирование и анализ вирусной активности на компьютерах, с помощью которых Вы занимаетесь обслуживанием/заполнением Вашего сайта.

Профилактика сайта после заражения вирусами

Итак, вирус обнаружен и уничтожен, но сайт попал «под подозрение» и под фильтры поисковых систем, которые предупреждают, что посещение страниц Вашего сайта небезопасно. Методы профилактики вирусной активности на сайтах:

  1. Начнем с создания периодических актуальных бекапов, заражения вирусами сайтов случаются, так бывает, и отнюдь порою не web-мастер тому виною, или программист. Так что актуальная резервная копия сайта (желательно, с интервалом в сутки) спасает в самом худшем случае. И не забывайте, что backup сайта должен быть распределенным, чем больше источников: (например, домашний компьютер, ноут и ftp хостинг провайдера), тем лучше. Также изучите возможности Вашего хостинга, например, многие хостеры предлагают авто бекап за определенный интервал (от суток до месяца). Но и «ручной» бекап с копированием файлов на Ваш компьютер окажется абсолютно не лишним.
  2. После сохранения очередного архива сайта к себе на компьютер проверьте backup антивирусом, всякое бывает, например Kasperky, Dr. Web, Eset или Symantec отлично подойдут для этих целей.
  3. Можно указать свой телефон, на который в случае «полегания» сайта (от вирусной активности или по вине хостера или перегрузки хостинга) придет уведомление в виде смс о проблемах на сайте.
  4. Или можете заказать техническую поддержку и услугу обслуживания сайта у нас.
  5. А также старайтесь использовать самое последнее программное обеспечение (особенно актуально для владельцев VDS/VPS), и выбирайте хостинг с наименьшим количеством «сайтов» по соседству.
  6. Время от времени меняйте ftp пароли, делайте их сложными для автоподбора brootforce. То же самое касается email адресов администраторов и модераторов Вашего сайта, и паролей и доступов на сайт тех людей, у которых есть привилегии на добавление/модификацию файлов. Задавайте разные пароли для входа на сайт с правами администратора Вашей учетной записи, для ftp сайта и для баз данных. Они, как минимум, не должны повторяться. И не должны быть до банальности простыми: например, везде admin/admin. Старайтесь подключать captcha для панели входа посетителей и администрирования сайта. Это усложнит взлом и добавление вредоносного кода, и заметно потреплет нервы атакующему.
  7. Предоставляете меньше прав для «пользователя», из-под которого выполняется код Вашего сайта. Для папок достаточно дать права на чтение и выполнение (там где не требуется запись) для самого пользователя, для его группы и для остальных (ugw(o): 0755, 0775). Для файлов достаточно предоставить (если не планируется их изменение самим сайтом) доступ на чтение файлов для пользователя, его группы и остальных (ugw(o): 0644). То же касается и пользователя баз данных (чем меньше: минимально прав на вставку insertудаление deleteобновление update таблиц данных), тем лучше. Задумайтесь, например, нужны ли текущему пользователю, права на удаление таблиц drop tableдобавление таблиц create table? (если Ваш сайт не создает для своей работы временные – динамические таблицы после установки). Обдумайте этот вопрос и примите необходимые меры.
  8. Не выводите ошибки базы данных/скриптов в браузер посетителя. Чем меньше ошибок и подсказок предоставляется посетителям без надобности, тем лучше. Храните логи ошибок в отдельной папке, недоступной для доступа извне (желательно, на одну директорию и ниже от корневой папки сайта). Это Вам поможет и в улучшении проекта (профилировании кода, выявлении неявных ошибок, а также целенаправленных атак). А также ограничьте возможность выгрузки тех или иных данных из базы данных в обыкновенные файлы (например: mysql: привилегия FILE) (иначе возможно создание файлов с вредоностным кодом через намеренные ошибки запросов к Б.Д. – sql data load injection, и утечка конфиденциальной информации).
  9. Следите за входящим/исходящим трафиком к Вам на сайт. Резкие скачки должны предупредить о «неладном». Как и резкие «скачки» нагрузки на сервер.
  10. Периодически сканируйте компьютеры на вирусы, с помощью которых осуществляется администрирование сайта (вход с правами администратора, посещение панели управления, ftp доступ), и стимулируйте к этому других администраторов/модераторов проекта.
  11. Предпочитайте «безопасное кодируемое соединение» sftp обыкновенному доступу по ftp.
  12. Отдавайте предпочтение операционной системе unix/linux над windows при работе с задачами, связанными с администрированием Вашего проекта.
  13. Время от времени заказывайте аудит безопасности сайта. Или производите его сами.
Комментарии