WordPress — самая популярная в мире система управления контентом. Больше сайтов — больше вебмастеров и администраторов, которые не уделяют внимания безопасностью — больше жалоб на взломы.
Популярность движка привлекает хакеров, ведь если найти уязвимость — можно взломать сразу много сайтов. При этом нужно отметить, что если оценивать соотношение количества взломов к общему количеству сайтов, то оно будет примерно таким же, как и у других открытых CMS.
В стандартном, только что установленном движке уже встроены некоторые механизмы защиты: обновление движка до последней версии или генерация пароля для администратора, что позволяет избежать небезопасных паролей вида «12345». Плохая новость — этого недостаточно. Хорошая — укрепить защиту достаточно просто.
А вот и сама инструкция. Все способы актуальны и проверены на дату публикации статьи. Если у вас есть своя методика — поделитесь в комментариях. Обсудим, протестируем, разберемся.
Как взламывают сайты на WordPress
- Подбор или брутфорс (brute force) паролей. Хакеры сканируют интернет, ищут админки и пытаются перебирать пароли по словарю. Это срабатывает чаще, чем хотелось бы, потому что удивительно много пользователей до сих пор используют пароли вида «12345» или «qwerty».
- Использование нелегальных «тем». Темы — шаблоны дизайна, позволяющие изменить внешний вид сайта. На рынке существует огромное количество профессиональных тем, которые продаются за деньги. Но любители халявы идут на пиратские сайты и скачивают бесплатные темы. В русскоязычном интернете 95% таких тем заражены троянами: вредоносными программами, которые дают возможность злоумышленнику получить управление над сайтом, не выдавая себя.
Обратите внимание: в первых двух случаях виноват не движок или сайт, а пользователи, которые сами открывают двери злоумышленникам.
- Использование известных уязвимостей. Какой-то специалист по безопасности обнаруживает, что при определенной комбинации скрипт может выполнить незапланированную команду или записать файл на сайт. Это можно использовать для взлома — информация распространяется по интернету и хакеры начинают искать сайты, где уязвимостью можно воспользоваться.
Это основные и самые распространенные способы взлома сайтов на WordPress. Давайте разберемся, как заделать эти дыры и сделать ваш сайт безопасным.
Защита от брутфорса
Отказ от пользователя admin
Это самый популярный логин для пользователя, имеющего полные права на управление сайтом. И это хорошо известно хакерам. Поэтому никогда не используйте логин admin.
Что делать:
- Создайте нового пользователя с другим именем.
- Передайте ему все права, которыми обладает admin.
- Удалите пользователя admin и впредь логиньтесь в панель под новым именем.
- С помощью плагина iThemes Security автоматически блокируем любого пользователя, который пытается войти в систему под логином admin. Так как мы знаем, что мы его переименовали, то это точно хакер.
- Наслаждаемся спокойствием.
Ограничение доступа к странице входа
iThemes Security успешно справляется с подбором паролей. Но брутфорс все равно создает большую нагрузку на сайт. Чтобы ее снизить, мы можем ограничить доступ к странице входа в панель управления.
Важно! Этот способ подходит только для сайтов с ограниченным количеством пользователей, которые не могут регистрироваться и добавляться самостоятельно. Для UGC-проектов, увы, методика не подойдет.
Что делать:
- В основной директории сайта создайте два файла: «.htaccess» и «.htpasswd» (названия файлов указываются без кавычек-елочек). В «.htaccess» мы пропишем инструкции, а в «.htpasswd» — данные для доступа к странице.
- В файл .htaccess добавляем строки:
<Files wp-login.php> AuthName "Access Denied" AuthType Basic AuthUserFile /var/www/digital.tools/data/www/digital.tools/.htpasswd require valid-user </Files>
Где /var/www/digital.tools/data/www/digital.tools/.htpasswd — полный путь до директории с файлами. Узнать его можно у хостера.
- В .htpasswd прописываем логин и пароль для доступа к странице входа в систему управления контентом. Для генерации .htpasswd удобно использовать следующий инструмент: http://www.htaccesstools.com/htpasswd-generator/.
- Теперь при попытке зайти на страницу логина в панели управления, пользователь увидит дополнительное окно, в которое нужно ввести правильный логин и пароль — и только потом он сможет перейти на страницу входа и залогиниться уже непосредственно в панели управления.
Большинство автоматических переборщиков паролей не работают при отсутствии прямого доступа к странице входа в панель управления
Защита от взлома с использованием уязвимостей
Защита от взлома с использованием существующих уязвимостей
Используем возможности все того же iThemes Security.
Что делать:
- В основных настройках отметьте «Отправлять дайджест по электронной почте» и укажите email. Небольшой хак для тех, кто администрирует много сайтов одновременно: используйте для всех проектов общий email. У нас он, к примеру, вида wp@, и его читают все ответственные за поддержку сайтов специалисты. Все сообщения со всех проектов будут приходить в одно место. И это лучше, чем постоянно менять email на куче разных сайтов.
- Ниже включаем режим совместимости с InfiniteWP. Зачем это нужно — немного позже.
Включаем мониторинг изменения файлов. Проверяем чтобы была включена отправка логов изменения файлов.
Теперь вы будете получать отчет, как только какой-то из файлов сайта изменится
2. Защита от взлома с использованием будущих уязвимостей
Большинство дырок, с помощью которых можно взломать сайт, разработчики закрывают раньше, чем хакеры смогут нанести существенный ущерб. Доработанная версия движка с закрытыми дырами и другими улучшениями предлагается в обновлении.
Чтобы злоумышленники не смогли воспользоваться незакрытыми уязвимостями, нужно обеспечить постоянное обновление движка WordPress, тем и плагинов. Встроенный механизм фонового обновления не решает этот вопрос на 100%.
InfiniteWP — бесплатный скрипт, который дает возможность управлять неограниченным количеством сайтов из одной админки. Позволяет обновлять, включать и выключать движки, плагины, темы, заходить в админку, обновлять по расписанию.
Что сделать:
- Поставьте плагин InfiniteWP — Client на каждый сайт, который вы обслуживаете.
- Подключите сайт к центру IWP.
- В нем уже настройте принудительное обновление каждое воскресенье.
- Время от времени и при необходимости заходите в IWP и проверяйте, все ли в порядке.
3. Резервное копирование
Лучше всего настроить создание резервных копий на уровне администрирования сервера, а бэкапы хранить в другом дата центре. Если такой возможности нет, используйте плагин BackUpWordPress для создания бэкапов и настройки расписания резервного копирования.
Советы по настройке:
- Ежедневный бэкап, ночью в 2-4 часа утра. Хранить 5-10 копий.
- Еженедельный бэкап, ночью в воскресенье в 2-4 часа утра. Хранить 4-8 копий.
4. Проверка на вирусы
Если вы изначально не уверены в чистоте сайта, проверить его на наличие вредоносного кода можно с помощью AI-Bolit.
Проверка на вирусы обязательна, если на сайте стоит пиратская, а не оригинальная тема, используются пиратские плагины.
Проверка очень желательна — если сайт пришел к вам на поддержку и обслуживание от другого человека или компании.
Подводя итоги
Все, о чем мы рассказали, можно свести к достаточно короткому чек-листу.
- Замените пользователя admin.
- Ограничьте доступ к странице авторизации.
- Следите за изменениями файлов на сервере.
- Регулярно обновляйтесь.
- Делайте резервные копии.
- Проверьте сайт на вирусы.
Все просто и не требует каких-то сакральных знаний и специальных умений. В завершение — еще один совет, который поможет избежать очень многих проблем.