CMS WordPress является достаточно популярной платформой для ведения блогов и создания сайтов. Это же автоматически подразумевает большое количество желающих использовать Ваш сайт для своих целей:
- перехват и перепродажа трафика (т.е. пользователь пришел на Ваш сайт и редиректом ушел на целевой сайт хакера)
- размещение рекламных ссылок
- создание бота на Вашем сервере/сайте (будет использоваться как минимум для подбора паролей на чужих сайтах)
- отправка спама (да, у WordPress есть свой почтовый сервер)
- добавление к Вашему сайту рекламных страниц (достаточно дописать в базу MySql)
Самое обидное – что сайт живет после взлома не более 6 мес. Поисковые роботы находят всё это безобразие и блокируют сайт к выдаче в поиске.
Т.е. сайт конечно есть – но Вас и Вашего сайта больше никто не видит в интернете. Если там был бизнес – то он погиб.
Читаем статью:
Варианты основных атак на Ваш сайт
А восстановить показ сайт в поиске – это непростая задача, на 1 год как минимум. Необходима длительная переписка и с Яндекс и с Google (на тему, что мы хорошие и всё исправили).
Схематично Ваш сайт работает так
С внешним интернетом общается веб-сервер Apache (как правило именно он), запросы он передает в обработку серверу PHP, которые обрабатывает команды от WordPress (внутри которого живет наш сайт). И то, что получилось (набор тэгов HTML для браузера) – отдается обратно пользователю, запросившему страницу сайта.
Вот такая “матрешка”. В реальности она еще более сложная.
Главное для нас:
- Сервер Apache – это скомпилированное программное приложение, т.е. уже готовый код для процессора
- Сервер PHP – это интерпретатор, он каждую инструкцию по очереди переводит каждый раз в машинный код и соответственно работает в десятки раз медленнее
Нам нужно одновременно и хакерам не дать возможности сломать блог и минимизировать нагрузку на сервер в целом. Т.е. какие-то операции по возможности отдать в обработку Apache – например, выдавать ошибки 404/403, он это будет делать намного быстрее и намного меньше будет общая нагрузка на процессор.
Без комплексной защиты более 50% ресурсов сервера занимает обработка атак хакеров.
1. Прячем логин и ник автора
Движок WP в базовой настройке легко отдает информацию об авторе сайта.
domen.ru/?author=1 (и дальше перебираем ID пользователей) domen.ru/wp-json/wp/v2/users/ (получаем список авторов с их ID) |
Читаем статьи
Как скрыть логин пользователя WordPress
Принимаем меры, указанные в статьях. Теперь посетителям сайта не узнать логин автора и пользователя – переходим на следующий уровень
Для закрытия маршрутов через запросы JSON читаем статью
Плагин закрытия путей JSON для неавторизированных пользователей
2. Защищаем или скрываем админку WordPress
Хакерам придется теперь подбирать не только пароль, но и логин. Сложно, долго – но возможно. И тут основная проблема – для подбора используются ботнеты (сеть зараженных компьютеров) – при подборе Ваш сервер начинает не на Вас работать, а на проверки пар логин/пароль от хакеров.
Такая мини DDoS атака. Если у Вас сервер большой (например интернет-магазин, где разрешена регистрация пользователей) – то большому серверу и много работы будет. Если сервер маленький и у Вас только личный блог – имеет смысл вообще не давать возможность подбора логина и пароля.
Устанавливаем плагин All In One WP Security & Firewall (информация ниже)
Вариант 1. Мягкий вариант
- настраиваем блокировку по количеству подборов с одного IP
- добавляем в список логины (которые не используются – типа Admin, Administrator) для немедленной блокировки
Вроде всё хорошо – вот только ботнетов много и интервал подбора может быть порядка нескольких секунд с разных IP. Загрузка сервере на эту чепуху под 100%, печать и беда.
Вариант 2. Дополнительно.
Прячем совсем админку (точнее файл wp-login.php) в разделе “Защита от брутфорс атак”, выбираем себе url, по которому будет открываться форма входа, что-нибудь типа
domen.ru/mylogin123
Почти хорошо, теперь старые адреса вида:
- domen.ru/wp-login.php
- domen.ru/wp-admin
больше не доступны.
3. Максимально защищаем с помощью Apache
Нам необходимо закрыть от внешнего интернета следующие ресурсы:
- файл wp-login.php (после того, как мы поменяли вход в админку)
- файл xmlrpc.php (вторая админка WP)
- файл wp-config.php (и все возможные его варианты для подбора)
- и закрыть доступ к папке /wp-content/plugins/ (что бы не подбирали варианты запуска плагинов по прямому пути)
Читаем статью
Закрываем папки и файлы WordPress с помощью Apache
4. Минимизируем работу сервера PHP по обработке ошибки 404
Да, разработки WordPress решили красиво обрабатывать ошибки 404 и передали управление от Apache к движку WP.
В результате большое количество желающих поломать сайт пытаются подобрать разные комбинации вида в адресной строке браузера
domen.ru/system.php
Необходимо WordPress оставить обработку только отсутствующих страниц, а ошибки по всем отсутствующим файлам вернуть Apache.
Читаем статью
Обработка Error 404 в WordPress
5. Скрываем информацию о текущей версии
В свежеустановленной системе информация о версии показывается:
– в коде любой страницы
ищем <meta name=”generator” content=”WordPress 4.4.2″ />
– в коде ленты RSS по адресу http://site.ru/feed/
ищем <generator>https://wordpress.org/?v=4.6.4</generator>
– в файле site.ru/readme.html
Важно: если Вы уже установили защиту папки /wp-admin, то файл просто так у злоумышленника не откроется, будет запрошен логин/пароль сервера, т.к. в этом файле есть отсылки к данным внутри административной панели.
– в коде страницы входа
site.ru/wp-login.php
– в файле русификации движка по адресу
site.ru/wp-content/languages/ru_RU.po
Смотрим исходный код страницы, ищем “ver” в подключениях таблиц стилей
1 | < link rel = 'stylesheet' id = 'buttons-css' href ='https://www.site.com/wp-includes/css/buttons.min.css?ver=4.4.2' type = 'text/css' media = 'all' /> |
2 | < link rel = 'stylesheet' id = 'dashicons-css' href=’https://www.site.com/wp-includes/css/dashicons.min.css?ver=4.4.2′ type = 'text/css' media = 'all' /> |
3 | < link rel = 'stylesheet' id = 'login-css' href=’https://www.site.com/wp-admin/css/login.min.css?ver=4.4.2′ type = 'text/css' media = 'all' /> |
Используем плагин Webcraftic Clearfy
6. Защитим базу данных MySql
База данных MySql – это то место, где хранится вся текстовая часть Вашего сайта, комментарии, меню, настройки плагинов и пр. Пароли и данные о пользователях там же хранятся.
Всё это хранится в отдельных таблицах, у каждой таблицы есть название, которое начинается с префикса wp_
Хакеры это знают, что сильно облегчает подбор вариантов для взлома. Можно при определенных усилиях добавить 1000 рекламных страниц, даже не имея доступа в административную панель.
Поэтому префикс лучше поменять – читаем статью
Защита базы данных сайта MySql
Основные плагины-комбайны для защиты WordPress
Плагин All In One WP Security & Firewall
Сразу минус – плагин не контролирует вход для мобильных устройств через файл xmlrpc.php
Устанавливайте плагин Disable XML-RPC и отключайте совсем эту возможность.
Основные функции:
- иконографика с информацией по защите Вашего сайта (достаточно условно – но красиво)
- информация о системе (сервер, PHP, плагины – версию Apach не показывает)
- лог заблокированных IP адресов
- создание постоянного списка заблокированных IP адресов (по IP или по User-agent)
- создание резервных копий системных файлов
- блокировка информации о версии WP в коде сайта
- запрет (настраивается) использовать базовые логины для входа (Admin, Administrator и пр.)
- проверка надежности пароля (оценка времени на брутфорс для среднего домашнего ПК)
- ограничение попыток авторизации (неправильная пара логин/пароль)
- при блокировке форма проверки пароля временно удаляется
- блокировка сразу по списку запрещенных логинов (очень хорошо!), если идет подбор по одному логину с разных IP в течении короткого времени – это ботнет (сеть зараженных компьютеров)
- ведение лога ошибочных авторизаций
- автоматическое разлогинивание пользователя через период (не учитывается неактивность пользователя – очень неудобно)
- уведомление на почту о блокировке по IP – в данном случае не очень полезная функция, письмо отправляется на каждую блокировку, при работе хакерского ботнета по определенному логину – письма будут приходить каждые 5 минут…
- ведения лога ошибок 404 (ручное внесение IP в список – очень жаль, что нет автоматического режима)
- перенаправление заблокированных IP на указанную страницу
- ручное одобрение авторизации пользователей
- защита базы данных (смена префикса и создание резервной копии)
- проверка разрешений на файлы (на сервере хостинга)
- fairwall (настройка правил)
- блокирование интернет-ботов, которые маскируются под User-agent “Googlebot”
- защита от копирования (выделение текста и блокирование правой клавиши мышки) – не настраивается, лучше использовать отдельный плагин wp-copyprotect
- черный список IP для блокировки на уровне сервера Апач (не поддерживается диапазон через тире такого вида 1.0.1.0 – 1.0.3.255), можно купить дополнительный модуль для блокирования по странам Country Blocking Addon
- защита от хотлинков – использование Ваших картинок на чужих сайтах (через внесение директив в файл .htaccess)
- добавление пользовательских правил в .htaccess
- возможность переименовать скрипт проверки пароля wp-login.php в любое другое название (90% брутфорса подбора пароля идут напрямую на этот файл)
- белый список IP адресов для входа в административную панель сайта
- добавление honeypot к форме проверки пароля (дополнительное невидимое поле для ботов – при заполнении = сразу бан)
- защита комментариев от спама
- сканер системных файлов (контроль изменений)
- включение режима обслуживания сайта
Плагин Wordfence Security
При активации запрашивает Ваш e-mail
Обеспечивает защиту от основных атак
Как правильно устанавливать обновления WordPress и плагинов?
Обновления нужно устанавливать обязательно, т.к. 90% в этих обновлениях – это исправление проблем безопасности. Например, в версии 5.2.4 исправлено 6 ошибок, связанных с безопасностью.
Но устанавливаем аккуратно.
- основной сайт живет на основном домене domen.ru
- копия сайта живет на техническом домене test.domen.ru
- все обновления устанавливаем на test.domen.ru
- неделю как минимум тестируем, как оно работает после всех обновлений
- и только после этого переливаем на domen.ru (предварительно сохранив текущую работающую версию сайта – будет потом откуда восстановиться)
Про копирование, перенос и архивирования сайта на WordPress можно прочитать здесь
Плагины для архивирования и переноса сайта
Подпишитесь в VKontakte - нажмите кнопку | ||
Подпишитесь в Telegram - нажмите кнопку | ||
Наша группа ODNOKLASSNIKI |
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла
Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)
В Вашем браузере должна быть настроена обработка ссылок mailto
site_post@bk.ru
или просто скопируйте адрес e-mail
Почитать в разделе
Защита WP

(Читать полностью...)
- Всего статей в разделе: 12
- Показано статей в списке: 12
- Сортировка: название по алфавиту
Бан хакеров по IP для WordPress

(Читать полностью...)
Блокируем ботов-подборщиков через fail2ban

(Читать полностью...)
Варианты основных хакерских атак на Ваш сайт

(Читать полностью...)
Двухфакторная аутентификация WordPress

(Читать полностью...)
Закрываем папки и файлы WordPress с помощью Apache

(Читать полностью...)
Защита базы данных сайта MySql

(Читать полностью...)
Защита текста и картинок от копирования

(Читать полностью...)
Как сбросить пароль администратора WordPress

(Читать полностью...)
Как скрыть логин автора поста

(Читать полностью...)
Как скрыть логин пользователя WordPress

(Читать полностью...)
Переводим сайт WordPress на https

(Читать полностью...)
Плагины для архивирования и переноса сайта

(Читать полностью...)