Как найти уязвимости и защитить свой сайт на WordPress

Подавляющее большинство проблем безопасности у сайтов на WordPress на самом деле легко контролировать. Ядро этой системы прошло долгий путь развития и является достаточно безопасным. Это может казаться неожиданным для многих, но разработчики серьёзно относятся к безопасности и очень быстро выпускают патчи. Одна из сильных сторон WordPress – это простота обновления и высокая скорость цикла разработки.

Немалая часть проблем обусловлена недальновидностью конечного пользователя, выбором тем и плагинов с небезопасным кодом, а также плохим качеством хостинга. Это руководство поможет обеспечить безопасность для сайтов на WordPress и устранить наиболее распространённые лазейки для взлома.

Держите ваш WordPress в актуальном состоянии

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

Кроме того, нужно регулярно обновлять все установленные плагины и темы, чтобы избежать проблем с безопасностью. Оптимальный подход к этому вопросу следующий: выжидайте не более 2-3 дней с момента, когда обновления стали доступны. Проверьте форумы на наличие отчётов о проблемах, а если их нет, смело обновляйте сайт.

В маловероятном случае, если обновление что-то сломает, сделайте откат на предыдущую версию (через shell или SFTP-доступ), либо восстановите сайт из резервной копии.

Поддерживайте безопасность Интернет-соединения на вашем компьютере

Это кажется очевидным, но при наличии кейлоггеров и вредоносных программ на вашем домашнем компьютере или WiFi-роутере злоумышленникам не составит труда взломать ваш сайт.

Устанавливайте плагины и темы только из официального репозитория

Не секрет, что плагины и темы, загруженные из Google или любого случайного сайта, скорее всего будут заражены вредоносными программами. Недавнее исследование показало, что у 8 из 10 лучших результатов Google по запросу «Бесплатные темы WordPress» в коде встроено вредоносное программное обеспечение. Загружайте темы и плагины из официального репозитория и других авторитетных источников. Пользуясь чем-то, что получено на случайных интернет-сайтах, вы рискуете безопасностью собственного ресурса.

Выберите солидный хостинг

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

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

Регулярно проводите проверку своего хостинг-провайдера, чтобы убедиться в том, что он использует актуальные версии операционной системы и серверного программного обеспечения.

Придумайте действительно хороший пароль

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

1. Случайно сгенерированного набора цифр, букв и спецсимволов.

2. Фразы из несвязанных по смыслу слов (ПравильнаяЛошадинаяБатарея).

3. Первых букв каждого слова из памятного вам предложения с добавлением цифр и знаков пунктуации в некоторых местах.

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

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

Удалите стандартный логин Admin

Стандартный логин администратора по умолчанию и его привилегии – лёгкая мишень для любого эксплойта. Эту учётную запись пользователя стоит удалять сразу после установки WordPress на хостинг. Для этого нужно проделать следующие шаги:

1. Войти в базовый аккаунт Admin.

2. Создать нового пользователя с уникальным именем и дать ему права администратора (последнее очень важно).

3. Войти с данными нового пользователя и удалить аккаунт Admin.

Кроме того, во время новой установки можно изменить имя пользователя по умолчанию с Admin на другое.

Измените свой ник в WordPress

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

Настройте регулярное резервное копирование

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

Сделанные резервные копии стоит проверять хотя бы раз в месяц, чтобы убедиться, что они создаются корректно, и вам не составит труда восстановить сайт в случае необходимости.

Получите ключи безопасности WordPress

В этой системе используются зашифрованные ключи безопасности для информации, которая сохраняется в куки. Эти ключи идут в ваш WP-config.info. Ключевой генератор случайных чисел можно найти на официальном сайте WordPress по ссылке https://api.wordpress.org/secret-key/1.1/salt/. Перейдите по ней и обновите страницу в вашем браузере, чтобы получить новые ключи и скопировать их в ваш WP-config.info.

Измените префикс базы данных (только перед установкой!)

Этот пункт подходит только для создаваемых с нуля сайтов. При неправильном выполнении процедуры на рабочем ресурсе можно полностью убить его. Если вы начинаете новую установку, у вас есть возможность изменить префикс базы данных. По умолчанию WordPress устанавливает префикс «wp_», что делает работу любого взломщика гораздо более простой. Изменив его на что-то уникальное, вы устраните эту брешь в безопасности сайта.

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

Ограничьте количество используемых плагинов и тем

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

Переместите файл WP-config на один каталог вверх и заблокируйте его

Файл WP-config.info содержит все ваши учётные данные для доступа к базе данных сайта. Вы можете переместить его выше, разместив вне директории root, доступной из Интернета. Это поможет защитить файл конфигурации от любых атак на основе браузера. Кроме того, хорошей идеей будет изменить права доступа на него, установив значение 600.

Ограничьте число попыток входа в систему

Использование плагинов для безопасности может быть запоздалым решением. К тому же, опираться в защите на то, что уже небезопасно – это плохая идея. С другой стороны, плагин Limit Login Attempts – это очень полезный выбор, так как он предотвращает взлом при помощи брутфорса, ограничивая количество неудачных попыток входа на сайт. Он также может вести логи ip-адресов, с которых пытались войти.

Проверьте права доступа к файлам и каталогам

Права доступа на файлы и каталоги могут иметь довольно сложные зависимости от настроек хостинга. В большинстве случаев права на файлы должны быть установлены на значения 664 или 640, а для папок – 755 или 750. Никогда не стоит устанавливать значение 777, пока ваш хост не сконфигурирован. Золотое правило настройки прав доступа – устанавливайте как можно более низкие значения, при которых сайт сохраняет работоспособность. Последняя цифра разрешений всегда должна быть 0, 4 или 5, никогда 6 или 7.

Скройте информацию о версии

Скрытие информации об установленной версии WordPress представляет собой довольно простой шаг, который мешает ботам сканировать ваш сайт. В файле function.php вашей темы необходимо разместить следующее:

// remove version info from head and feeds

function complete_version_removal() {

return '';

}

add_filter('the_generator', 'complete_version_removal');

Включите SSL-авторизацию

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

Не позволяйте поисковым роботам просматривать каталоги

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

Отключите регистрацию пользователей

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

Отключите пользователям возможность редактировать и обновлять темы и плагины

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

Установите правила .htaccess

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

//limit indexing of directories

Options All -Indexes

//protect the htaccess file,

//this is done by default with apache config file,

// but you never know.

order allow,deny

deny from all

//disable the server signature

ServerSignature Off

//limit file uploads to 10mb

LimitRequestBody 10240000

// protect wpconfig.php.

//If you followed step 6 this is not necessary.

order allow,deny

deny from all

Удалите Readme и другие ненужные файлы

В корневой директории WordPress расположен файл readme.html, многие плагины и темы также имеют подобные файлы. Хорошим решением будет удалить их, так как они могут быть использованы для фингерпринтинга или снупинга, и часто содержат информацию о версии. Очистите папки вашего сайта от этих и любых других ненужных файлов.

Создайте отдельную версии сайта для разработки

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

Не обрабатывайте конфиденциальную информацию без необходимости

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

Что делать, если ваш сайт на WordPress был взломан?

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

1. Переведите сайт в автономный режим (режим обслуживания). Это лишит взломщика возможности увеличить ущерб сайту или помешать вашим попыткам восстановить контроль над веб-ресурсом.

2. Сообщите о взломе вашему хостинг-провайдеру, чтобы он мог помочь вам.

3. Сделайте резервную копию взломанного сайта, если вы хотите изучить его впоследствии.

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

5. Обновите всё, что можно обновить.

6. Удалите все файлы, страницы, сообщения, Комментарии или процесс, добавленные злоумышленником. Если вы сомневаетесь в том, всё ли вы нашли, создайте новый сайт WordPress с нуля, а затем восстановите на нём последнюю резервную копию, сделанную до взлома.

7. Измените все пароли, используемые на сайте. Также измените пароли БД и хостинга.