Skip to content

Advanced Security IP Blocker

Choose a tag to compare

@RobertoBennett RobertoBennett released this 04 Sep 12:24
· 7 commits to main since this release
ec71b08

Advanced Security IP Blocker

Продвинутая система безопасности для WordPress: блокировка IP, защита wp-login.php и xmlrpc.php, блокировка опасных файлов и ботов с поддержкой ASN, автоматическая блокировка при брутфорс атаках.

Version
License
Author

Описание

Плагин "Advanced Security IP Blocker" предоставляет комплексное решение для защиты вашего сайта WordPress от различных угроз, включая брутфорс атаки, нежелательный трафик, доступ к конфиденциальным файлам и активность вредоносных ботов. Плагин работает на уровне .htaccess и WordPress, обеспечивая мощную и гибкую защиту.

Ключевые особенности:

  • Блокировка IP-адресов: Ручная и автоматическая блокировка IP-адресов и CIDR-диапазонов.
  • Поддержка ASN: Блокировка целых автономных систем (ASN) для эффективной борьбы с крупными источниками спама и атак.
  • Защита wp-login.php и xmlrpc.php: Ограничение доступа к критически важным файлам WordPress, позволяя доступ только с разрешенных IP-адресов или ASN.
  • Блокировка опасных файлов: Защита от прямого доступа к конфиденциальным файлам, таким как .htaccess, wp-config.php, логи и резервные копии. Поддержка масок файлов.
  • Защита от ботов: Блокировка нежелательных User-Agent, включая спам-ботов, сканеры уязвимостей и парсеры.
  • Автоматическая защита от брутфорс атак: Интеллектуальная система, которая автоматически блокирует IP-адреса после заданного количества неудачных попыток входа.
  • Управление блокировками: Удобный интерфейс для просмотра, разблокировки и ручного добавления IP-адресов в черный и белый списки.
  • Логирование и статистика: Подробная статистика попыток входа и история блокировок для анализа угроз.
  • Email-уведомления: Оповещения администратора о заблокированных IP-адресах.
  • Резервное копирование .htaccess: Автоматическое создание резервных копий файла .htaccess перед внесением изменений.
  • Очистка кэша: Интегрированная функция для очистки различных типов кэша после изменения правил безопасности.

Установка

  1. Загрузка: Загрузите файлы плагина в директорию /wp-content/plugins/advanced-security-ip-blocker/.
  2. Активация: Активируйте плагин через меню "Плагины" в админ-панели WordPress.
  3. Доступ: После активации плагин будет доступен в меню "Настройки" -> "Безопасность".

Требования

  • WordPress 4.0+
  • PHP 7.0+
  • Права на запись в файл .htaccess (обычно /var/www/html/.htaccess или в корневой директории WordPress).
  • Расширения PHP curl или allow_url_fopen для получения информации по ASN.

Использование

После установки и активации плагина перейдите в Настройки -> Безопасность в вашей админ-панели WordPress.

Интерфейс плагина разделен на несколько вкладок для удобного управления:

1. Блокировка IP

  • Назначение: Ручная блокировка IP-адресов, CIDR-диапазонов и целых автономных систем (ASN).
  • Форматы:
    • Отдельные IP: 192.168.1.100
    • CIDR диапазоны: 192.168.1.0/24
    • ASN (автономные системы): AS15169 или 15169 (плагин автоматически преобразует ASN в IP-диапазоны).
  • Действие: Все указанные IP-адреса будут заблокированы на уровне .htaccess.

2. Защита wp-login.php и xmlrpc.php

  • Назначение: Ограничение доступа к страницам входа (wp-login.php) и XML-RPC интерфейсу (xmlrpc.php) только для разрешенных IP-адресов.
  • Важно: Обязательно добавьте свой текущий IP-адрес в белый список, чтобы не потерять доступ к админ-панели. Ваш текущий IP отображается на этой вкладке.
  • Разрешенные IP: Укажите IP-адреса, CIDR-диапазоны или ASN, которым разрешен доступ.
  • Форматы разрешенных IP:
    • Отдельные IP: 192.168.1.100
    • CIDR диапазоны: 192.168.1.0/24
    • ASN: AS15169 или 15169
    • Маска подсети: 192.168.1.0 255.255.255.0
    • Частичные IP: 192.168.1 (блокирует все IP, начинающиеся с 192.168.1.)
  • Рекомендация: Если вы не используете мобильные приложения WordPress или внешние сервисы, рекомендуется заблокировать xmlrpc.php, так как он часто используется для брутфорс атак.

3. Блокировка опасных файлов

  • Назначение: Запрет прямого доступа к файлам, которые могут содержать конфиденциальную информацию или использоваться для атак.
  • Примеры файлов: .htaccess, .htpasswd, wp-config.php, readme.html, license.txt, *.sql, *.log, *.bak, error_log и т.д.
  • Поддержка масок: Вы можете использовать маски файлов (например, *.log для блокировки всех файлов с расширением .log).

4. Защита от ботов

  • Назначение: Блокировка доступа к сайту для нежелательных User-Agent (идентификаторов ботов).
  • Формат: Список User-Agent, разделенных символом | (вертикальная черта).
  • Пример: BadBot|SpamBot|Crawler
  • Действие: Плагин использует правила SetEnvIfNoCase в .htaccess для блокировки запросов от указанных User-Agent.

5. Защита от брутфорс атак

  • Назначение: Автоматическая блокировка IP-адресов, которые совершают слишком много неудачных попыток входа в админ-панель.
  • Настройки:
    • Включить защиту: Активирует/деактивирует автоматическую блокировку.
    • Максимум попыток: Количество неудачных попыток входа, после которых IP будет заблокирован.
    • Временное окно (минуты): Период времени, в течение которого подсчитываются попытки.
    • Длительность блокировки (минуты): Как долго IP будет заблокирован. Установка 0 означает постоянную блокировку (требует ручной разблокировки).
    • Добавлять в .htaccess: Если включено, заблокированные IP будут добавлены в .htaccess для более быстрой блокировки. Если отключено, блокировка будет работать только на уровне WordPress.
    • Email уведомления: Отправлять ли администратору уведомления о блокировках.
  • Статистика: Отображает общее количество попыток входа, заблокированных IP-адресов, топ IP по попыткам и последние попытки входа. Статистика обновляется в реальном времени.
  • Очистить старые записи: Кнопка для удаления старых записей попыток входа из базы данных.

6. Управление блокировками

  • Назначение: Просмотр и управление всеми заблокированными IP-адресами (временными, постоянными, через .htaccess).
  • Поиск и пагинация: Удобный поиск по IP-адресам и пагинация для больших списков.
  • Разблокировка: Возможность разблокировать IP-ададреса вручную.
  • История: Просмотр подробной истории попыток входа для конкретного IP-адреса.
  • История разблокировок: Журнал всех ручных разблокировок.
  • Добавить IP в черный список: Ручное добавление IP-адресов или CIDR-диапазонов в постоянный черный список.

7. Белый список

  • Назначение: IP-адреса, добавленные в этот список, никогда не будут заблокированы системой, даже при множественных неудачных попытках входа или других нарушениях.
  • Форматы: Поддерживаются те же форматы, что и для блокировки IP (отдельные IP, CIDR, ASN).
  • Управление: Добавление и удаление IP-адресов из белого списка.

8. Статус системы

  • Назначение: Обзор состояния компонентов плагина и активных защит.
  • Информация: Проверяет доступность .htaccess для записи, состояние директорий резервных копий и кэша ASN, наличие таблиц базы данных плагина, а также отображает ваш текущий IP.
  • Активные защиты: Показывает, какие модули защиты активны и сколько записей они содержат.
  • Действия: Кнопки для создания резервной копии .htaccess и очистки всего кэша плагина.

Разработка

Плагин использует стандартные хуки WordPress (admin_menu, admin_init, wp_login_failed и т.д.) для интеграции своих функций. Для взаимодействия с пользователем используется AJAX.

Структура данных

  • Таблица {$wpdb->prefix}security_login_attempts: Хранит записи о попытках входа (IP-адрес, имя пользователя, время, User-Agent, статус блокировки).
  • Таблица {$wpdb->prefix}security_unblock_history: Хранит историю разблокировок IP-адресов.
  • Опции WordPress: Плагин использует опции WordPress для хранения настроек (например, asb_dangerous_files, asb_blocked_bots, asb_brute_force_enabled, asb_whitelist_ips, asb_wp_blocked_ips).

Взаимодействие с .htaccess

Плагин вставляет свои правила в файл .htaccess с использованием специальных маркеров (# IP_BLOCKER_SAFE_MARKER, # LOGIN_PROTECTION_MARKER, # DANGEROUS_FILES_MARKER, # BOT_PROTECTION_MARKER). Это позволяет плагину управлять только своими секциями, не затрагивая другие правила в файле.

Кэширование ASN

Для повышения производительности и снижения нагрузки на внешние API, плагин кэширует IP-диапазоны, полученные по ASN, в директории wp-content/security-blocker-cache/. Кэш обновляется каждые 24 часа.

Очистка кэша

Класс ASB_Cache_Handler предоставляет методы для очистки различных типов кэша, включая браузерный, OPcache, Redis, Memcached и кэш популярных плагинов WordPress (W3 Total Cache, WP Super Cache, WP Rocket).

Часто задаваемые вопросы

В: Мой сайт перестал работать после активации плагина или изменения настроек. Что делать?
О: Скорее всего, вы заблокировали свой собственный IP-адрес.
1. Через FTP/SSH: Подключитесь к вашему серверу по FTP или SSH.
2. Найдите .htaccess: Перейдите в корневую директорию вашего WordPress и найдите файл .htaccess.
3. Удалите правила плагина: Откройте .htaccess и удалите все секции, заключенные между маркерами плагина (например, # IP_BLOCKER_SAFE_MARKER ... # IP_BLOCKER_SAFE_MARKER).
4. Восстановите из резервной копии: Если вы делали резервную копию, вы можете восстановить её из директории wp-content/security-blocker-backups/.
5. Деактивируйте плагин: Если проблема сохраняется, временно деактивируйте плагин, переименовав его директорию (wp-content/plugins/advanced-security-ip-blocker/).
6. Добавьте свой IP в белый список: После восстановления доступа, обязательно добавьте свой IP-адрес в белый список на вкладке "Защита wp-login.php и xmlrpc.php" или "Белый список".

В: Почему мой IP-адрес автоматически блокируется?
О: Это происходит, если вы превышаете лимит неудачных попыток входа, установленный на вкладке "Защита от брутфорс атак". Проверьте настройки и при необходимости увеличьте лимит или добавьте свой IP в белый список.

В: Поддерживает ли плагин IPv6?
О: Да, плагин поддерживает блокировку и разрешение IP-адресов IPv4 и IPv6, а также CIDR-диапазонов для обоих протоколов.

В: Как часто обновляется статистика на вкладке "Защита от брутфорс атак"?
О: Статистика обновляется автоматически каждые 30 секунд. Вы также можете обновить её вручную, нажав кнопку "Обновить сейчас".

В: Что происходит при деактивации плагина?
О: При деактивации плагин пытается удалить все свои правила из файла .htaccess, чтобы избежать конфликтов. Однако, настройки плагина в базе данных сохраняются.

В: Что происходит при удалении плагина?
О: При удалении плагина (через меню "Плагины" -> "Удалить") происходит полная очистка: удаляются все правила из .htaccess, все опции плагина из базы данных, а также таблицы с попытками входа и историей разблокировок. Директории резервных копий и кэша также удаляются.

Лицензия

Этот плагин распространяется под лицензией GPL-2.0. Подробности смотрите в файле LICENSE.

Автор

Robert Bennett
GitHub Профиль