Advanced Security IP Blocker
Advanced Security IP Blocker
Продвинутая система безопасности для WordPress: блокировка IP, защита wp-login.php и xmlrpc.php, блокировка опасных файлов и ботов с поддержкой ASN, автоматическая блокировка при брутфорс атаках.
Описание
Плагин "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перед внесением изменений. - Очистка кэша: Интегрированная функция для очистки различных типов кэша после изменения правил безопасности.
Установка
- Загрузка: Загрузите файлы плагина в директорию
/wp-content/plugins/advanced-security-ip-blocker/. - Активация: Активируйте плагин через меню "Плагины" в админ-панели WordPress.
- Доступ: После активации плагин будет доступен в меню "Настройки" -> "Безопасность".
Требования
- 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:
- Действие: Все указанные 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.)
- Отдельные IP:
- Рекомендация: Если вы не используете мобильные приложения 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 Профиль