G|Translate: English EN Deutsch DE Italiano IT Русский RU Español ES Українська UK

Защита WP

4.4/5 - (18 голосов)

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

  • перехват и перепродажа трафика (т.е. пользователь пришел на Ваш сайт и редиректом ушел на целевой сайт хакера)
  • размещение рекламных ссылок
  • создание бота на Вашем сервере/сайте (будет использоваться как минимум для подбора паролей на чужих сайтах)
  • отправка спама (да, у WordPress есть свой почтовый сервер)
  • добавление к Вашему сайту рекламных страниц (достаточно дописать в базу MySql)

Защита WP

Самое обидное – что сайт живет после взлома не более 6 мес. Поисковые роботы находят всё это безобразие и блокируют сайт к выдаче в поиске.  

Т.е. сайт конечно есть – но Вас и Вашего сайта больше никто не видит в интернете. Если там был бизнес – то он погиб.

Читаем статью:

Варианты основных атак на Ваш сайт

А восстановить показ сайт в поиске – это непростая задача,  на 1 год как минимум. Необходима длительная переписка и с Яндекс и с Google (на тему, что мы хорошие и всё исправили).

Схематично Ваш сайт работает так

Защита WP

С внешним интернетом общается веб-сервер 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

Защита WP

Почти хорошо, теперь старые адреса вида:

  • 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

Защита WP

6. Защитим базу данных MySql

База данных MySql – это то место, где хранится вся текстовая часть Вашего сайта, комментарии, меню, настройки плагинов и  пр.  Пароли и данные о пользователях там же хранятся.

Всё это хранится в отдельных таблицах, у каждой таблицы есть название, которое начинается с префикса wp_

Хакеры это знают, что сильно облегчает подбор вариантов для взлома. Можно при определенных усилиях добавить 1000 рекламных страниц, даже не имея доступа в административную панель.

Поэтому префикс лучше поменять – читаем статью

Защита базы данных сайта MySql

Основные плагины-комбайны для защиты WordPress

 

Плагин All In One WP Security & Firewall

Защита WP

Сразу минус – плагин не контролирует вход для мобильных устройств через файл xmlrpc.php

Устанавливайте плагин Disable XML-RPC и отключайте совсем эту возможность.

Основные функции:

  • иконографика с информацией по защите Вашего сайта (достаточно условно – но красиво)
  • Защита WP
  • информация о системе (сервер, PHP, плагины – версию Apach не показывает)
  • лог заблокированных IP адресов
  • создание постоянного списка заблокированных IP адресов (по IP или по User-agent)
  • создание резервных копий системных файлов
  • блокировка информации о версии WP в коде сайта
  • запрет (настраивается) использовать базовые логины для входа (Admin, Administrator и пр.)
  • проверка надежности пароля (оценка времени на брутфорс для среднего домашнего ПК)
  • ограничение попыток авторизации (неправильная пара логин/пароль)
  • при блокировке форма проверки пароля временно удаляется
  • Защита WP
  • блокировка сразу по списку запрещенных логинов (очень хорошо!), если идет подбор по одному логину с разных IP в течении короткого времени – это ботнет (сеть зараженных компьютеров)
  • Защита WP
  • ведение лога ошибочных авторизаций
  • автоматическое разлогинивание пользователя через период (не учитывается неактивность пользователя – очень неудобно)
  • уведомление на почту о блокировке по IP – в данном случае не очень полезная функция, письмо отправляется на каждую блокировку, при работе хакерского ботнета по определенному логину – письма будут приходить каждые 5 минут…
  • ведения лога ошибок 404 (ручное внесение IP в список – очень жаль, что нет автоматического режима)
  • Защита WP
  • перенаправление заблокированных IP на указанную страницу 
  • ручное одобрение авторизации пользователей
  • защита базы данных (смена префикса и создание резервной копии)
  • проверка разрешений на файлы (на сервере хостинга)
  • fairwall (настройка правил)
  • блокирование интернет-ботов, которые маскируются под User-agent “Googlebot”
  • защита от копирования (выделение текста и блокирование правой клавиши мышки) –  не настраивается, лучше использовать отдельный плагин wp-copyprotect
  • черный список IP для блокировки на уровне сервера Апач (не поддерживается диапазон через тире такого вида 1.0.1.0 – 1.0.3.255), можно купить дополнительный модуль для блокирования по странам Country Blocking Addon
  • Защита WP
  • защита от хотлинков – использование Ваших картинок на чужих сайтах (через внесение директив в файл .htaccess)
  • добавление пользовательских правил в .htaccess
  • возможность переименовать скрипт проверки пароля wp-login.php в любое другое название (90% брутфорса подбора пароля идут напрямую на этот файл)
  • белый список IP адресов для входа в административную панель сайта
  • добавление honeypot к форме проверки пароля (дополнительное невидимое поле для ботов – при заполнении  = сразу бан)
  • защита комментариев от спама
  • сканер системных файлов (контроль изменений)
  • включение режима обслуживания сайта

 

Плагин Wordfence Security

Защита WP

При активации запрашивает Ваш e-mail

Обеспечивает защиту от основных атак

Защита WP

 

Как правильно устанавливать обновления WordPress и плагинов?

Обновления нужно устанавливать обязательно, т.к. 90% в этих обновлениях – это исправление проблем безопасности. Например, в версии 5.2.4 исправлено 6 ошибок, связанных с безопасностью. 

Защита WP

Но устанавливаем аккуратно.

  • основной сайт живет на основном домене domen.ru
  • копия сайта живет на техническом домене test.domen.ru
  • все обновления устанавливаем на test.domen.ru
  • неделю как минимум тестируем, как оно работает после всех обновлений
  • и только после этого переливаем на domen.ru (предварительно сохранив текущую работающую версию сайта – будет потом откуда восстановиться)

 

Про копирование, перенос и архивирования сайта на WordPress можно прочитать здесь

Плагины для архивирования и переноса сайта

 

Подпишитесь в VKontakte - нажмите кнопку
Подпишитесь в Telegram - нажмите кнопку
Наша группа ODNOKLASSNIKI

Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла




Пишите на электронную почту (тема и email будут добавлены автоматически в письмо)

В Вашем браузере должна быть настроена обработка ссылок mailto

site_post@bk.ru

или просто скопируйте адрес e-mail



Почитать в разделе

Защита WP

CMS WordPress является достаточно популярной платформой для ведения блогов и создания сайтов. Это же автоматически подразумевает большое количество желающих использовать Ваш сайт для своих целей: перехват и перепродажа трафика (т.е. пользователь пришел на Ваш сайт и редиректом ушел на целевой сайт хакера) размещение рекламных ссылок создание бота на Вашем сервере/сайте (будет использоваться как минимум для подбора паролей на чужих сайтах) отправка спама (да, у WordPress есть свой почтовый сервер) добавление к Вашему сайту рекламных страниц (достаточно дописать в базу MySql) Самое обидное - что сайт живет после взлома не более 6 мес. Поисковые роботы находят всё это...
(Читать полностью...)

  • Всего статей в разделе: 12
  • Показано статей в списке: 12
  • Сортировка: название по алфавиту

Бан хакеров по IP для WordPress

Нехороших хакеров можно и нужно банить по IP - т.е. не пускаем пакеты с отдельных IP в обработку. Но есть ряд проблем: часть IP (с которых идет атака) принадлежат не хакерам, а вполне обычным пользователям, которые наловили вирусов на свой ПК (и теперь он работает на другого хозяина) с учетом ежедневной смены IP провайдером у большей части обычных пользователей - через сутки конкретный IP станет не опасным есть упрямые хакеры, которые работают с постоянного IP еще есть "умники", которые пытаются запустить разные php-скрипты в адресной строке браузера (в основном получают, конечно, код 404) есть принципиально разные блокировки IP на уровне CMS WordPress на уровне...
(Читать полностью...)

Блокируем ботов-подборщиков через fail2ban

80% всех атак ботов на WordPress идут на вход в административную панель. Наша задача - такие IP отправить в бан. Используем плагин WP fail2ban. Плагин делает важную  вещь — он выводит в лог /var/log/auth.log (это один из системных логов Linux) каждую попытку авторизации на сайте (настройками можно изменить). Т.е. не создается дополнительный лог-файл - а идет запись в один общий системный лог Linux. Это удобно, если у Вас несколько сайтов на VPS, всё ошибки входа по всем сайтам будут записываться в один общий файл. И не нужно дополнительно под каждый сайт настраивать WP fail2ban:) ВАЖНО: можно вообще "спрятать" админку от злых ботов Меняем адрес административной панели...
(Читать полностью...)

Варианты основных хакерских атак на Ваш сайт

Зачем защищать небольшой сайт? "У меня маленький сайт-блог, зачем мне его защищать и от кого?" Немного печальной статистики. Скажем так, сейчас в 50% на Вашем сайте пасутся боты, а не живые люди.  Вот классический пример работы ботнета - с разных IP (зараженные ПК пользователей) идет подбор пароля к логину Administrator - аккуратно, с интервалом в 5-10 минут. Успехов тебе,  железяка :) Всё, что видит ботнет со своей стороны - после однократного ввода логина/пароля форма входа исчезает...  Как видно на картинке выше - атака перебором идет с разных IP (разные заражённые ПК), которые через небольшой интервал времени меняются. Т.е. необходимо запоминать (с помощью плагина) IP,...
(Читать полностью...)

Двухфакторная аутентификация WordPress

Включаем двухфакторную аутентификацию WordPress - т.е. логин + пароль для входа + еще дополнительный код/пароль. Защита паролем сервера Апач Общая структура папки Вашего сайта на WordPress (на сервере хостинга) следующая Сайт сайт запускается файлом index.php в корневой папке. Административная панель запускается файлом index.php в папке wp-admin Существует два варианта входа в систему управления сайтом: через браузер в административную панель вход или site.ru/wp-admin (тут расположена сама панель управления) или site.ru/wp-login.php (проверка логина/пароля) через мобильное приложение (Android / iOS), см. ниже - указываем логин/пароль и сайт (уже без "хвостика"...
(Читать полностью...)

Закрываем папки и файлы WordPress с помощью Apache

Используем web-сервер Apache для блокировки доступа извне ВАЖНО: всё нижеперечисленное будет работать, если Вы конечно, используете сервер Apache. Если Вы используете связку NginX и  PHP-FPM (сервера Apache тут нет!) все эти инструкции работать не будут! Сервер Apache не участвует в обработке запросов! Закроем файл wp-login.php Мы можем спрятать вход в административную панель. И ввод логина/пароля не будет уже использовать напрямую файл wp-login.php. Но сам файл wp-login.php конечно продолжает существовать и работать, просто теперь WordPress при его запросе показывает ошибку 404. Но как мы помним, ботнетов много - и они по прежнему будут загружать Ваш сервер PHP на обработку...
(Читать полностью...)

Защита базы данных сайта MySql

База данных на сервере хостинга - основное место, где хранятся "детальки" (текстовые данные в основном) от Вашего сайта. Если туда что-либо записать лишнего - то движок WordPress это и покажет = и это уже будет не Ваш сайт :( Зачем нужна вообще какая-то база для сайта? Читаем статью База MySql Прямая атака на базу MySql По умолчанию, при установке WordPress создает в базе таблицы с префиксом wp_. Злоумышленники об этом знают. Необходимо либо при установке выбрать другой префикс вида mysite_ (WordPress спросит при установке, не более 6-ти латинских букв), либо поменять его у готового сайта. Зачем это нужно? Ну вот пример - мы при установке указали другой префикс вида xxx_...
(Читать полностью...)

Защита текста и картинок от копирования

Как защитить свой блог (картинки и текст) от копирования? В общем случае - никак :(  Всё, что Вы видите в своем браузере - оно уже есть на Вашем компьютере. Но можно сильно усложнить сам процесс копирования для любителей copy-paste. Итак, основные направления: запрет выделения текста мышью и дальнейшее copy-paste запрет хотлингов (т.е. показывать картинки с Вашего сайта на другом домене) защита картинок через "водяной знак" (он же Watermark) запрет парсинга страницы сайта с другого домена   Запрет выделения текста мышью (запрет копирования) Казалось бы самый простой вариант - заблокировать правую кнопку мыши. Но это не есть хорошо. Часть посетителей...
(Читать полностью...)

Как сбросить пароль администратора WordPress

Потеряли пароль от админики WordPress? Что делать? Не всё так плохо :) Используем средство восстановления пароля WordPress При входе Вводим свой email Получаем на свою почту служебную ссылку, заходим, меняем пароль. Всё стандартно. Используем нашу базу MySql для смены пароля Да, в ней хранится информация о пользователях, их паролях и прочая полезная информация. Для прямого подключения к базе используем phpMyAdmin (параметры входа у Вас должны быть от Вашего хостера). Вот база данных и таблица wp_users Хакеры, не мучайтесь, все критичные данные замазаны, Administrator - это ник, а не логин :) Пароль пользователя в базе хранится в зашифрованном виде. Делаем Sql-запрос...
(Читать полностью...)

Как скрыть логин автора поста

При отображении записи WordPress выводит автора поста. Как отключить вывод автора поста/записи? Если ничего не  делать - то любой желающий сможет увидеть логин входа в систему и ему останется только подбирать пароль. И да -  WordPress в стандартной установке еще и подтверждает правильность логина. И вот тут нас поджидает проблема. Вывод автора поста делает не сам движок WP - это зависит от применяемой темы. В каких-то темах автор выводится, в каких-то темах автор не выводится, в каких-то настраивается. Есть специальный плагин - но он работает не на всех темах (именно по этой причине, что в разных темах сделано иногда по разному). Итак, что мы можем сделать. Плагин Show/Hide...
(Читать полностью...)

Как скрыть логин пользователя WordPress

Посмотрим статистику. Для начала устанавливаем плагин Activity Log (логгирование действий пользователей), активируем И видим следующие картину Кто все эти люди и откуда они знают мой логин? Это не люди мучают клавиатуру с ручным подбором паролей, это боты (зараженные компьютеры). Точнее даже не компьютеры, а устройства типа микроволновки и холодильника. Сейчас везде производители ставят процессоры и выход в интернет, на таких устройствах практически нет никакой защиты, их взламывают и они вливаются в ряды ботов. Еще есть «банды умных лампочек» – smart-лампы с управлением со смартафона через Wi-Fi. Тоже хорошо взламываются и начинают работать на чужих дядей. WordPress достаточно...
(Читать полностью...)

Переводим сайт WordPress на https

Будем переводить сайт на защищенный протокол HTTPS ВАЖНО: Это именно зашифрованная передача данных от сервера до конечного посетителя, а не показатель безопасности сайта! Сайт может быть взломан, сайт сам по себе может быть сделан мошенниками и прочее - и при этом сайт будет работать по защищенному протоколу https и иметь "зеленый замочек". Поэтому сейчас зеленый цвет замочка остался только в Opera, остальные браузеры показывают его серым цветом. Переводим на HTTPS Читаем основную статью Как включить HTTPS на сайте? Для работы HTTPS нам нужно несколько базовых вещей: нужно получить сертификат SSL (браузер как-то должен проверить валидность ключа для...
(Читать полностью...)

Плагины для архивирования и переноса сайта

Лучшая безопасность для сайта - это делать backup сайта. И регулярно. Даже если враги всё сломали (а там почти 3000 файлов PHP в движке) - всё удаляем из папки WWW на сервере (именно ВСЁ - включая файлы движка WordPress) и восстанавливаем из бэкапа как было. Что такое архивация сайтов? Backup сайта это копирование баз данных, файлов сайта, почты, FTP-аккаунтов и множества других "деталек" на Вашем хостинге. Сайт у нас состоит собственно из нескольких частей: набор файлов (файлы PHP движка и картинки) база данных MySQL, в которой хранится текстовая часть сайта, меню и все взаимосвязи между модулями Не обязательно, кстати,  именно PHP - для разработки сайта может быть...
(Читать полностью...)