Комплексное решение для защиты веб-сайта от различных типов атак, включая DoS, DDoS, брутфорс и другие виды подозрительной активности. Система разработана с учетом производительности и отказоустойчивости, обеспечивая многоуровневую защиту с возможностью гибкой настройки.
Ядро системы, которое анализирует все входящие запросы и принимает решения о блокировке на основе различных критериев.
LightSecurityMonitor, который определяет IP-адрес клиента, проверяет настройки и устанавливает соединения с хранилищами данных (Redis и/или MariaDB).Этот компонент предоставляет интерфейс для разблокировки IP-адресов с помощью reCAPTCHA:
Панель управления для администраторов с функциями:
Отвечает за повышение уровня блокировки при повторных запросах от заблокированных IP-адресов:
Выполняет периодическое обслуживание системы:
Этот режим минимально влияет на пользователей, используя преимущественно временные блокировки на уровне приложения и троттлинг. Жесткие блокировки отключены, а пороги обнаружения атак установлены достаточно высоко.
// Настройки механизмов блокировки
define('ENABLE_HTACCESS_BLOCKING', false); // Отключаем блокировку через .htaccess
define('ENABLE_NGINX_BLOCKING', false); // Отключаем блокировку через Nginx
define('ENABLE_FIREWALL_BLOCKING', false); // Отключаем блокировку через брандмауэр
define('ENABLE_API_BLOCKING', false); // Отключаем блокировку через API
// Настройка принудительной жесткой блокировки
define('HARD_BLOCK_ON_FIRST_VIOLATION', false); // Не применяем жесткую блокировку при первом нарушении
// Настройки прогрессивной блокировки
define('BLOCK_TIME_FIRST', 900); // Первая блокировка (15 минут)
define('BLOCK_TIME_SECOND', 1800); // Вторая блокировка (30 минут)
define('BLOCK_TIME_THIRD', 3600); // Третья блокировка (1 час)
define('BLOCK_TIME_FOURTH', 7200); // Четвертая блокировка (2 часа)
define('BLOCK_TIME_FIFTH', 14400); // Пятая блокировка (4 часа)
define('BLOCK_TIME_SIXTH', 28800); // Шестая блокировка (8 часов)
define('BLOCK_TIME_SEVENTH_PLUS', 86400); // Седьмая и последующие блокировки (1 день)
// Лимиты для обнаружения атак (увеличенные пороги)
define('MAX_REQUESTS_PER_SECOND', 8); // Максимальное количество запросов в секунду
define('MAX_REQUESTS_PER_MINUTE', 60); // Максимальное количество запросов в минуту
define('MAX_REQUESTS_PER_IP', 150); // Максимум запросов с одного IP
define('RATE_CHECK_WINDOW', 10); // Окно проверки частоты запросов (секунды)
define('RATE_THRESHOLD', 60); // Порог запросов в окне для блокировки
// Настройки для автоматической жесткой блокировки
define('AUTO_HARD_BLOCK_ENABLED', false); // Отключаем автоматическую жесткую блокировку
// Настройки троттлинга
define('THROTTLING_ENABLED', true); // Включаем троттлинг вместо блокировки
define('THROTTLING_APPLY_DELAY', true); // Применять задержку при превышении лимитов
define('THROTTLING_BLOCK_ON_HARD_LIMIT', false); // Не блокировать при жестком превышении лимита
// Настройки проверки Cookie
define('DISABLE_COOKIE_SECURITY_CHECK', true); // Отключаем проверку Cookie
Этот режим обеспечивает сбалансированную защиту, используя комбинацию механизмов блокировки. Жесткая блокировка активируется автоматически при массовых атаках, а пороги обнаружения установлены на среднем уровне.
// Настройки механизмов блокировки
define('ENABLE_HTACCESS_BLOCKING', true); // Включаем блокировку через .htaccess
define('ENABLE_NGINX_BLOCKING', false); // Отключаем блокировку через Nginx
define('ENABLE_FIREWALL_BLOCKING', true); // Включаем блокировку через брандмауэр
define('ENABLE_API_BLOCKING', false); // Отключаем блокировку через API
// Настройка принудительной жесткой блокировки
define('HARD_BLOCK_ON_FIRST_VIOLATION', false); // Не применяем жесткую блокировку при первом нарушении
// Настройки прогрессивной блокировки
define('BLOCK_TIME_FIRST', 3600); // Первая блокировка (1 час)
define('BLOCK_TIME_SECOND', 10800); // Вторая блокировка (3 часа)
define('BLOCK_TIME_THIRD', 21600); // Третья блокировка (6 часов)
define('BLOCK_TIME_FOURTH', 43200); // Четвертая блокировка (12 часов)
define('BLOCK_TIME_FIFTH', 86400); // Пятая блокировка (24 часа)
define('BLOCK_TIME_SIXTH', 259200); // Шестая блокировка (3 дня)
define('BLOCK_TIME_SEVENTH_PLUS', 604800); // Седьмая и последующие блокировки (7 дней)
// Лимиты для обнаружения атак (сбалансированные пороги)
define('MAX_REQUESTS_PER_SECOND', 5); // Максимальное количество запросов в секунду
define('MAX_REQUESTS_PER_MINUTE', 40); // Максимальное количество запросов в минуту
define('MAX_REQUESTS_PER_IP', 100); // Максимум запросов с одного IP
define('RATE_CHECK_WINDOW', 10); // Окно проверки частоты запросов (секунды)
define('RATE_THRESHOLD', 40); // Порог запросов в окне для блокировки
// Настройки для автоматической жесткой блокировки
define('AUTO_HARD_BLOCK_ENABLED', true); // Включаем автоматическую жесткую блокировку
define('AUTO_HARD_BLOCK_THRESHOLD', 100); // Порог блокировки - 100 IP
define('AUTO_HARD_BLOCK_ACTION', 'iptables'); // Метод жесткой блокировки через iptables
// Настройки троттлинга
define('THROTTLING_ENABLED', true); // Включаем троттлинг
define('THROTTLING_APPLY_DELAY', true); // Применять задержку при превышении лимитов
define('THROTTLING_BLOCK_ON_HARD_LIMIT', true); // Блокировать при жестком превышении лимита
// Настройки проверки Cookie
define('DISABLE_COOKIE_SECURITY_CHECK', false); // Включаем проверку Cookie
define('DISABLE_COOKIE_SECURITY_BLOCKING', false); // Включаем блокировку при проблемах с Cookie
Этот режим обеспечивает максимальную защиту от атак, используя все доступные механизмы блокировки с низкими порогами обнаружения атак. Жесткая блокировка применяется с первого нарушения, а времена блокировки значительно увеличены.
// Настройки механизмов блокировки
define('ENABLE_HTACCESS_BLOCKING', true); // Включаем блокировку через .htaccess
define('ENABLE_NGINX_BLOCKING', true); // Включаем блокировку через Nginx
define('ENABLE_FIREWALL_BLOCKING', true); // Включаем блокировку через брандмауэр
define('ENABLE_API_BLOCKING', true); // Включаем блокировку через API
// Настройка принудительной жесткой блокировки
define('HARD_BLOCK_ON_FIRST_VIOLATION', true); // Применяем жесткую блокировку при первом нарушении
// Настройки прогрессивной блокировки (увеличенное время блокировки)
define('BLOCK_TIME_FIRST', 10800); // Первая блокировка (3 часа)
define('BLOCK_TIME_SECOND', 21600); // Вторая блокировка (6 часов)
define('BLOCK_TIME_THIRD', 43200); // Третья блокировка (12 часов)
define('BLOCK_TIME_FOURTH', 86400); // Четвертая блокировка (24 часа)
define('BLOCK_TIME_FIFTH', 259200); // Пятая блокировка (3 дня)
define('BLOCK_TIME_SIXTH', 604800); // Шестая блокировка (7 дней)
define('BLOCK_TIME_SEVENTH_PLUS', 2592000); // Седьмая и последующие блокировки (30 дней)
// Лимиты для обнаружения атак (низкие пороги)
define('MAX_REQUESTS_PER_SECOND', 3); // Максимальное количество запросов в секунду
define('MAX_REQUESTS_PER_MINUTE', 20); // Максимальное количество запросов в минуту
define('MAX_REQUESTS_PER_IP', 60); // Максимум запросов с одного IP
define('RATE_CHECK_WINDOW', 10); // Окно проверки частоты запросов (секунды)
define('RATE_THRESHOLD', 20); // Порог запросов в окне для блокировки
// Настройки для автоматической жесткой блокировки
define('AUTO_HARD_BLOCK_ENABLED', true); // Включаем автоматическую жесткую блокировку
define('AUTO_HARD_BLOCK_THRESHOLD', 50); // Порог блокировки - 50 IP
define('AUTO_HARD_BLOCK_ACTION', 'all'); // Метод жесткой блокировки - все доступные средства
// Настройки уведомлений о жесткой блокировке
define('AUTO_HARD_BLOCK_NOTIFY_ADMIN', true); // Включаем уведомления администратору
define('AUTO_HARD_BLOCK_NOTIFY_INTERVAL', 1); // Интервал уведомлений - 1 час
// Настройки троттлинга
define('THROTTLING_ENABLED', true); // Включаем троттлинг
define('THROTTLING_APPLY_DELAY', true); // Применять задержку при превышении лимитов
define('THROTTLING_BLOCK_ON_HARD_LIMIT', true); // Блокировать при жестком превышении лимита
// Настройки проверки Cookie
define('DISABLE_COOKIE_SECURITY_CHECK', false); // Включаем проверку Cookie
define('DISABLE_COOKIE_SECURITY_BLOCKING', false); // Включаем блокировку при проблемах с Cookie
// Дополнительные настройки
define('FORCE_BLOCKING_ON_FAILURE', true); // Принудительная блокировка при отказе систем
define('ESCALATE_BLOCK_ON_REPEAT_ATTEMPTS', true); // Повышать уровень блокировки при повторных попытках
define('ATTEMPTS_BEFORE_ESCALATION', 1); // Количество попыток до повышения уровня - 1
| Метод | Описание |
|---|---|
| Конструктор (__construct) |
|
| monitorRequest |
|
| checkIPRateLimitRedis / checkIPRateLimitInDatabase |
|
| checkPageRateLimitRedis / checkPageRateLimit |
|
| isRequestSuspicious |
|
| blockIPRedis / blockIP |
|
| applyExternalBlockings |
|
| applyThrottling |
|
| checkAndApplyAutoHardBlock |
|
Защита от атак, направленных на перегрузку сервера большим количеством запросов:
Защита от попыток подбора паролей и других данных:
Защита от автоматического сбора данных с сайта:
Защита от попыток эксплуатации уязвимостей через множественные запросы:
/dos/ на вашем веб-сервереsettings.phpphp /path/to/dos/cleanup.phprequire_once '/path/to/dos/security_monitor.php';
$monitor = new LightSecurityMonitor();
$monitor->monitorRequest();0 * * * * php /path/to/dos/cleanup.php > /dev/null 2>&1/dos/recaptcha_unlock.php/dos/admin.php| Тип сайта | Рекомендуемый режим | Комментарии |
|---|---|---|
| Личный блог или небольшой сайт | Слабый | Минимальное воздействие на пользователей при базовой защите |
| Корпоративный сайт или интернет-магазин | Средний | Сбалансированная защита с автоматической активацией жесткого режима при атаках |
| Высоконагруженный проект или сайт с повышенными требованиями к безопасности | Жесткий | Максимальная защита с повышенным риском ложных срабатываний |
/dos/Данная система защиты представляет собой многоуровневое решение с гибкими настройками и высокой отказоустойчивостью. Она эффективно противодействует различным типам атак, минимизируя воздействие на легитимных пользователей.
Ключевыми особенностями системы являются:
В зависимости от требований к безопасности и доступности, можно выбрать один из трех предложенных режимов настройки: слабый, средний или жесткий. Эти режимы обеспечивают баланс между защитой от атак и удобством использования сайта для легитимных пользователей.