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

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

Нам важен твой голос!

Нехороших хакеров можно и нужно банить по IP – т.е. не пускаем пакеты с отдельных IP в обработку.

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

Но есть ряд проблем:

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

 

Про основные виды атак на сайт WordPress можно прочитать в статье

Защита WP

Большая часть плагинов осуществляет блокировку на уровне CMS WordPress. Это работает – но есть или обидчивые хакеры или тупые боты (не умеют читать, что они заблокированы) – они все равно пытаются обращаться к странице проверки пароля (например).

Можно условно разделить плагины на три категории:

  • сложные комбайны WP вида  WP Security или Wordfence Security , они блокируют многие угрозы – на дают сильную нагрузку на сервер (всю эту статистику атак нужно вести), сюда же условно можно отнести и плагин Limit Login Attempts Reloaded – он блокирует вход, но оставляет форму входа (и боты туда радостно пытаются что-то добавить)
  • простой плагин WP-bun – просто блокируется доступ ко всем страницам сайта по IP (и фронт и бэк), сервер PHP мало грузится на обработку запросов от IP
  • плагины, блокирующие сайт на уровне сервера Apach (через настройки .htaccess) – сервер практически не грузится повторными атаками с данного IP

 

Вот так, например, для плагина Limit Login Attempts Reloaded. Вход заблокирован, но боты продолжают вносить данные в форму входа.

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

Интервал менее 1 мин. с одного IP=192.162.101.91

В результате загрузка CPU у хостера под 100%, и если это Ваш выделенный сервер – остальные сайты тоже лягут. Такая мини-DDOS атака.

ВАЖНО: Если все сломалось и/или Вы не можете зайти в административную панель  после использования очередного плагина – заходите на хостинг по FTP, далее в папку www/wp-content/plugins, находите там папку с плагином и удаляете.

Плагины WordPress – блокировка IP на уровне CMS

ВАЖНО: Все это счастье заработает не сразу. Ваш сайт уже растащили себе на CDN поисковые машины, т.е. в части случаем сайт грузится не с Вашего сервера, а с CDN (точнее его текстовая копия html). Т.е. несмотря на блокировку IP – при загрузке с CDN Ваш сервер PHP участвовать не будет. Нужно подождать, пока обновятся кэши.

Или использовать “костыль” – с помощью JS и AJAX сделать вызов со своего сервера скрипта PHP, который и заблокирует IP. Это сработает даже в случае кэширования (как на своем сервере, так и в случае CDN), т.к. вызов JS будет из кода html страницы.

Плагин Limit Login Attempts Reloaded

Настройки очень простые:

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

Галочку “Отправлять имейл (который e-mail конечно) админу после….”  ставим обязательно.

Делает несколько полезных вещей:

  • ограничивает число попыток ввода пароля (настраивается)
  • прячет информацию о правильном логине, теперь страница входа (после ошибки) выглядит так

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

UPD: Обратите внимание на картинку. После исчерпания всех попыток блокируется вход с любым логином/паролем, а не ограничение числа попыток… С точки зрения безопасности это не имеет значения – хакеров всё равно не пустит на сайт.

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

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

Также ведется лог попыток (изоляций), видно, что роботы с мобильных устройств (да, да – через вход xmlrpc.php) более тупые. Бьются до исчерпания всех 4-х попыток, установленных в качестве ограничения.

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

Более умные роботы (ботнеты) видят защиту и пробуют вход с одного IP не более 2-х раз, что бы администратору не отсылалась информация о переборе паролей.

После установки логина/пароля на файл xmlrpc.php для нормального пользователя все логично – сначала мобильное приложение запрашивает логин/пароль от WordPress, потом идет запрос пароля от сервера HTTP.

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

Плагин WP-Ban

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

Позволяет вручную добавлять IP для блокировки. Банит в целом весь сайт (любые страницы домена), а не только страницы входа.

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

Блокировать можно по:

  • конкретным IP адресам
  • по диапазону IP адресов
  • по определенным хостам
  • по переходу с определенных сайтов
  • по USER-agent
  • по запросу некорректных url (однократный бан) – можно добавить список админок чужих CMS
  • Бан хакеров по IP для WordPress

ВАЖНО: осторожнее с частью адреса url!

При использовании конструкции *admin* для адреса URL – Вы себе сразу заблокируете административную панель (которая /wp-admin/) – и блокировку черед админку больше не снять. Удаление плагина через FTP поможет – но список блокировок в базе останется. Если плагин установить заново – блокировка вернется. Удалить блокировку можно только через PhpMyAdmin – найдя в базе MySql таблицу wp_option и строки, которые относятся к этому плагину.

Вот тут есть конвертер всех IP страны в диапазон адресов – получаем в txt и вставляем в поле нашего ллагина :)

Конвертер IP диапазонов стран в CIDR формат для блокировки по IP

Можно подготовить соответствующее сообщение для заблокированного IP

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

Также ведется статистика особо упрямых ботов с постоянным IP

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

Плюсы 

  • для заблокированного IP показывается статичная картинка без полей ввода (сервер php грузится минимально)
  • для данного IP блокируется весь сайт, а не только административная панель и форма входа

 

Минус один – это ручная обработка IP

 

Плагины WordPress – блокировка IP на уровне сервера Apach

 

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

Для версии Apach 2.4 инструкции вида

<RequireAll>
   Require all granted
   Require not ip 213.167.206.7
</RequireAll>

Для старой версии Apach 2.2 инструкции немного другие

Deny from 185.220.101.34
Deny from 213.167.206.7
Deny from 11.22.33.44

В этой статье подробнее

Контроль доступа к сайту (блокировка по IP, User-Agent)

Соответственно, нам нужен плагин WP,  который умеет:

  • дополнять  файл .htaccess (дописывать инструкции)
  • и делать это правильно с определением версии сервера Apach

Устанавливаем пароль сервера Apach на файл проверки пароля wp-login.php

Добавляем в файл .htaccess (в корневой папке)

<Files wp-login.php>
   AuthType Basic
   AuthName “That’s protected Area!”
   AuthUserFile /home/uXXXX/.htpasswd
   require valid-user
</Files>

Тут и плюс и минус сразу:

  • Вы не увидите попыток подбора пароля в WP – запросы не пройдут к сайту, хакеру мешает логин/пароль сервера
  • Вы увидите эти попытки подобрать пароль в логах сервера Apach
  • Резко снизится нагрузка на сайт, таких умников Apach не допустит до CMS

 

 

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

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




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

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

site_post@bk.ru

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



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

Защита WP

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

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

Блокируем ботов-подборщиков через 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 - для разработки сайта может быть...
(Читать полностью...)