Защита WordPress: бэкдоры, фарма-хаки и редиректы

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

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

Краткий обзор

Очень часто система WordPress подвергается критике из-за недостаточной защищенности. По данному вопросу можно дискутировать бесконечно. Стоит признать лишь один факт: защита зависит не только от программного обеспечения, но и от действий самого пользователя. Конечный пользователь должен вовремя обновлять систему, использовать только проверенные плагины и темы, загруженные либо из официального хранилища WordPress, либо с сайтов компаний-разработчиков. Только в таком случае можно гарантировать высокую защиту.

Почему же именно WordPress выступает целью большинства атак?

Для начала, как уже было отмечено, многие пользователи просто не обновляют вовремя систему. Что уж тут говорить про случайных пользователей, когда многие крупные компании и лидеры рынка не всегда это делают! Нужен живой пример? Хорошо. В прошлом году было взломано агентство Reuters. Когда они задумались, почему их сайт был взломан, то обнаружили, что виной всему послужила используемая версия системы — WordPress 3.1.1 (актуальной на тот момент была версия 3.4.1).

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

Защита WordPress - важная задача
Защита WordPress — важная задача

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

Наконец, третья, и самая главная причина атак – высокая популярность WordPress. WP – одна из самых используемых в мире систем управления контентом, что, естественно, привлекает внимание хакеров. Логика проста: если вы являетесь злоумышленником, вам очень удобно взломать программное обеспечение, на котором работает значительное число сайтов. Ведь если вы сможете найти «дыру» в нем, перед вами откроется масштабное поле для дальнейших действий! Именно по этой причине хакеры чаще всего ломают Windows и Mac, нежели UNIX и Linux.

Защита WordPress: введение

Разговаривать о различных проблемах безопасности не так просто, как может показаться на первый взгляд. Развитие различных атак идет вместе с развитием веб-технологий. Взлом может иметь под собой различные причины: политические мотивы, ради простого удовольствия, возможно, ради определенной финансовой выгоды (к примеру, вредоносная программа DNS Changer принесла своим тайным создателям более 14 миллионов долларов).

К тому же, как только появляется новая проблема, связанная с безопасностью, она тут же затрагивает миллионы пользователей, распространяясь практически мгновенно. К примеру, на долю Blackhole Exploit Kit приходится 28% всех веб-угроз, выявленных Sophos, и 91% всех угроз, выявленных AVG.

Защита кода - важная деталь в безопасности данных
Защита кода — важная деталь в безопасности данных

Термины «эволюция» и «популярность» могут применяться и к потенциальным угрозам для WordPress. Мы посмотрим на три самых популярных проблем с безопасностью: бэкдоры, фарма-хаки и вредоносные редиректы.

Бэкдоры

Бэкдоры – это то, что использует взломщик для получения доступа к вашему веб-сайту (через FTP, SFTP или даже через wp-admin).

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

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

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

wp-security-camera-logo-448x597 Самый простой способ определить расположение бэкдора – посмотреть на файлы, содержащиеся в папке с WordPress. Естественно, среди них не должно быть файлов, которые точно не принадлежат к сборке. Всякие php3.php или crucial-wp.php – явный признак взлома.

Вы должны знать, что если вы нашли .php-файл в папке с вашими загрузками (/uploads), это, по всей вероятности, говорит о бэкдор-атаке.

Однако бывает и так, что бэкдоры скрываются в легитимных файлах. Выявить это очень тяжело. Чтобы бороться с ними, был придуман инструмент Sucuri SiteCheck, который позволяет детектировать большую часть бэкдор-угроз.

Удалить или обезвредить бэкдор значительно проще, нежели его выявить. Минимизировать риск бэкдор-атак можно путем ограничения доступа к основным файлам вашей сборки. Хороший вариант – использование двухфакторной идентификации или ограничение доступа к панели администратора на основе IP.

Плюс ко всему, вы можете запретить неавторизированную запись или выполнение PHP, добавив в свой .htaccess следующий код:

<Files *.php>

Deny from All

</Files>

Кроме того, если у вас есть доступ к терминалу на вашем сервере, вы можете поискать, к примеру, команды “eval” – если такие команды скрыты в “base64_decode”, это говорит о присутствии бэкдора.

Фарма-хаки

Фарма-хак – это понятие относится скорее к спаму, нежели к вредоносным программам. Вам приходит постоянный спам про Виагру, Левитру и другие «фармацевтические препараты». Распространение любого спама – это плохо. Поисковые системы могут наложить санкции на ваш сайт.

Фарма хак опасен тем, что виден он только поисковым системам. После такого взлома ваш веб-сайт помечается в Google как «несущий потенциальную угрозу». CrackUnit.com, некогда популярный сайт, был взломан именно с помощью фарма-хака (взгляните на предложение препарата Zopiclone).

Пример фарма-хака
Пример фарма-хака

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

Как определить, что ваш сайт был взломан с помощью фарма-хака?

Чаще всего фарма-хак состоит из двух частей: вредоносный код в каком-либо из ваших плагинов и хак в базе данных. Как и бэкдоры, фарма-хаки используют функции eval() и base64_decode(), хотя в случае с фарма-хаками эти функции хранятся в базе данных WP в виде закодированных строк.

Таким образом, фарма-хак использует два бэкдора: один из них хранится в каком-либо из ваших плагинов, другой – в базе данных. В базе данных спам прячется в таблице wp_options.

Так как сам взлом происходит в двух местах вашего сайта, то и очистка от него также будет двухступенчатой.

Для начала вам стоит убедиться в том, что ваши плагины являются чистыми. Зачастую фарма-хак поражает Akismet (только потому, что практически каждая сборка имеет этот плагин, активный или неактивный). Начать поиск бэкдора лучше именно с этого плагина. Ищите файлы с подозрительными именами, в частности, с псевдо-расширениями, такими как .akismet.cache.php или akismet.old.php. Псевдо-имена файлов могут содержать в себе также class-akismet.php или что-то похожее. Удалите любые подозрительные файлы, и повторите этот шаг для всех остальных плагинов.

Можете удалить вообще все плагины (и переустановить их позже, после очистки базы данных). Чистые плагины – гарантия того, что непосредственная опасность устранена. Теперь осталось перейти ко второму этапу очистки.

Шаг второй – очистка базы данных (лучше создать резервную копию БД на всякий случай). Самый простой способ очистки состоит в следующем.

Переходим к phpMyAdmin и выбираем зараженную базу данных.

Ищем в ней таблицу wp_options.

wp-options

Выбираем поле option_name.

option-name-search

Теперь используем поиск для выявления вредоносных строк, таких как:

  • wp_check_hash
  • class_generic_support
  • widget_generic_support
  • ftp_credentials
  • fwp
  • rss_[string]

Правда, учтите, что rss_use_language, rss_excerpt_length и rss_use_excerpt – это вполне легитимные записи WP.

Если вышеупомянутые классы были найдены, и они содержат в себе всякий мусор, просто удалите их.

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

Вредоносные редиректы

Как и следует из названия, вредоносные редиректы перенаправляют пользователей к некоторым веб-сайтам. Стоит отметить, что такие редиректы могут влиять как на ваш основной домен, так и на поддомены. Перенаправление не всегда может вести к вредоносному сайту. Зачастую редирект просто переносит людей на сайт, заполненный рекламными объявлениями; такой сайт может не содержать в себе никакого вредоносного кода. Правда, терять трафик тоже не хочется, верно?

Кроме того, перенаправление может осуществляться и в пределах вашего сайта. Скажем, посетители, заглянув на wordpressblog.com, могут быть перенаправлены к wordpressblog.com/new.php. Контент файла new.php может состоять из различных рекламных объявлений или из вредоносного кода.

Чаще всего причиной редиректов является устаревшая версия WP с угрозами безопасности, которые позволяют хакерам получить доступ к файлам системы с помощью бэкдоров. Как и во всех остальных случаях, бэкдоры могут быть внедрены через FTP, SFTP или панель администратора WordPress. Как только доступ будет получен, можно легко разместить код редиректа на сайте.

Обнаружить редирект не так трудно. Чаще всего редиректы скрываются в файле .htaccess. Найдите что-то похожее в нем:

RewriteRule (.*)$ http://site-url.com/something

Также редиректы могут содержаться в основных файлах WP: index.php, header.php, footer.php и т.д. Правда, чаще всего они закодированы, потому их сложно найти.

Самое простое решение, позволяющее установить, является ли ваш сайт жертвой вредоносного редиректа, заключается в использовании Sucuri SiteCheck. Фактически SiteCheck не только проверяет URL-редиректы, но и сканирует ваш веб-сайт на наличие других хаков и вредоносных программ: бэкдоров, троянов, фарма-хаков и т.д. С помощью SiteCheck можно узнать, находится ли ваш сайт в черном списке разнообразных программ и сервисов: Google Safe Browsing, Sophos, Norton Safe Web, McAfee Site Advisor, Phish Tank и нескольких других.

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

Полезные инструменты и ресурсы

Теперь, когда мы рассмотрели основные проблемы безопасности, давайте перейдем к полезным инструментам и плагинов.

Помимо Sucuri SiteCheck есть очень полезный онлайн-инструмент, позволяющий определять «здоровье» вашего сайта — Unmask Parasites.

unmask-parasites

Unmask Parasites предоставит вам всю необходимую информацию о потенциальных угрозах, которые могут быть скрыты в вашей сборке WP. Также данный инструмент позволяет проверить, присутствует ли ваш сайт в черном списке различных сервисов, таких как Google Safe Browsing.

Плагины для WordPress

Sucuri Security: SiteCheck Malware Scanner

Sucuri Security: SiteCheck Malware Scanner – плагин для WordPress, позволяющий просканировать ваш веб-сайт с помощью онлайн-сканера Sucuri прямо из панели администратора. Помимо стандартной онлайн-проверки, плагин также помогает выявить определенные проблемы, связанные с конкретным сайтом, пометить потенциальные угрозы (маскировка IP, отправка писем через PHP, вредоносные загрузки и т.д.).

sucuri-plugin

Если касаться конкретно WP, то плагин позволяет провести верификацию версии WordPress, защитить каталог /uploads, ограничить доступ к /wp-content и /wp-include, провести проверку последних версий PHP.

Duo Two-Factor Authentication

Плагин Duo Two-Factor Authentication добавляет двухуровневую аутентификацию при входе в систему. На первом шаге может запрашиваться пароль, а на втором пользователям необходимо будет войти в Duo Security (вы можете определять, какие пользователи смогут сделать это: администраторы, редакторы, авторы и т.д.).

duo-security

Как только плагин будет установлен и настроен, ваши пользователи смогут генерировать одноразовый пасс-код, чтобы войти в систему. Пасс-код может быть отправлен разными путями – это напоминает двухуровневый процесс верификации Google.

WebsiteDefender WordPress Security

Плагин WebsiteDefender WordPress Security помогает вам управлять настройками безопасности для своего сайта WP. С его помощью можно убирать версию WP с любых публичных страниц, добавлять или скрывать мета-теги, отключать сообщения об ошибках в PHP или базе данных. Также плагин позволяет переименовывать табличный префикс для базы данных, генерировать пароли и т.д. Расширенные функции доступны при получении платного аккаунта с WebsiteDefender.

website-defender-plugin

Другие плагины от того же самого разработчика — WP Security Scan и Secure WordPress.

Theme Check

Theme Check поможет вам проверить, отвечает ли ваша тема последним стандартам кодирования WordPress.

Plugin Check

По аналогии с темами, Plugin Check позволяет проверить аутентичность кода ваших плагинов.

Что вы думаете по поводу вышеупомянутых проблем, связанных с безопасностью? Можете что-то посоветовать? Тогда просьба поделиться вашим мнением в комментариях!

Блог про WordPress
Комментарии: 6
  1. Волшебник

    Полезная статья. Есть отличный плагин для проверки тем TAC, а вот для проверки плагинов что-то мало инструментов. Plugin Check на локальном сервере не работает опять же. А все плагины, темы и так далее, перед тем как ставить на сайты, обкатываю и проверяю на локальном сервере.

  2. Gotvald

    Возросшая нагрузка на хостинг заставила заинтересоваться этой стороной вопроса. Пытаюсь найти плагин или набор плагинов, которые позволят отследить атаку на сервер. Пока удалось отслеживать только попытки подбора паролей, их оказалось довольно много в последнее время. Плагин All In One WordPress Security and Firewall Plugin пока справляется с этой угрозой.

  3. Dental

    Ну с доступом к ftp можно себе новога админа сделать, недавно находил сайты в топе все с пары ip ссылки были ломаные. Вот думаю кто то постарался и хостинг ломанул — вот успех.

  4. Николай

    Доброго времени суток. Ваша статья оказалась для меня весьма полезной. Предполагаю, что мой сайт подвергся фарм-хаку. У меня к Вам вопрос — Если я восстановлю файлы и базы данных из резервной копии (не зараженные), то получится ли избавиться от данной проблемы? Спасибо!

    1. Дмитрий (автор)

      Да, если вы уверены, что в резервной копии файлы и базы данных не зараженные.

      1. Николай

        Восстановил сайт из резервной копии, ничего не изменилось. Сделал вывод, что это просто нашествие спам-ботов, поставил captcha, спам — комментариев не наблюдаю.

Добавить комментарий

Получать новые комментарии по электронной почте.