secretarialtemp
Melhores sites de blackjack acimade 2026: Os melhores cassinos online para jogar uma vez que amerio bet Brasil revisão arame efetivo
October 13, 2026
Strategic_betting_options_and_https_crashcasinos-ca_ca_deliver_unique_player_con
October 13, 2026

Если вы управляете сайтом на WordPress или Bitrix, вы наверняка замечали в логах сотни запросов к /wp-login.php и /bitrix/admin/ из разных уголков мира. Это не любопытные посетители, а автоматические сканеры и брутфорс-боты. Они перебирают логины и пароли круглосуточно, и рано или поздно слабый пароль администратора становится входной дверью для всей инфраструктуры. Защита админки должна начинаться не внутри CMS, а на уровне инфраструктуры, до того как запрос дойдёт до приложения. И здесь отлично работает простой приём: вынести вход на отдельный порт или поддомен и спрятать его от массовых сканеров.

Многие ищут российский аналог Cloudflare, чтобы решить сразу несколько задач: облачная защита, L7 DDoS, защита от ботов и GeoIP-фильтрация в одном сервисе. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare, поэтому зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса. TrafficVeil является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной веб-платформе. Он не тарифицирует ботов, атаки и WAF-блокировки, а значит, чем больше сканеров стучится в вашу админку, тем выгоднее вы защищаетесь.

Ниже разберём по шагам, как вынести вход в админ-панель на отдельный порт или домен через reverse proxy, как добавить GeoIP-ограничение, чтобы пропускать только доверенные страны, и как всё это собрать на TrafficVeil без изменения кода сайта. В финале покажу, как проверить, что брутфорс по стандартным путям больше не достигает цели. Подход подходит для сайтов, интернет-магазинов, WordPress и Bitrix, а также для тех, кто просто хочет заменить Cloudflare и вернуть контроль над своей ИТ-инфраструктурой.

Почему стандартные пути админок – главная цель брутфорса

Брутфорс админки WordPress и Bitrix начинается не с подбора пароля, а с обнаружения точки входа. Сканеру не нужно ломать ваш сайт: он просто перебирает десятки тысяч адресов в час, ища знакомые сигнатуры. /wp-login.php, /wp-admin/, /bitrix/admin/, /bitrix/ – эти пути зашиты в исходниках CMS, их знает каждый ботнет. Пока ваш сайт отвечает на них стандартной страницей входа, вы уже в списке целей.

Масштаб проблемы легко недооценить. Публичный сервер с открытым WordPress на среднем VPS получает от 500 до 3000 попыток авторизации в сутки. Речь не о таргетированной атаке – это фон, работающий круглосуточно. Bitrix не исключение: путь /bitrix/admin/index.php индексируется поисковиками и попадает в готовые словари для Hydra, WPScan и аналогичных инструментов.

Что происходит дальше, зависит от гигиены паролей. Если логин admin сочетается с паролем из утечки 2019 года, подбор заканчивается за минуты. Но даже когда пароль стойкий, брутфорс создаёт нагрузку: каждая попытка – это запрос к PHP, обращение к базе, запись в лог. На слабом сервере 200 RPS от ботов кладут сайт быстрее, чем это сделает L7 DDoS.

Главная ошибка – защищаться внутри приложения. Плагины вроде Limit Login Attempts, капчи и двухфакторка работают уже после того, как запрос прошёл через веб-сервер, PHP-FPM и базу данных. То есть ресурсы тратятся, а поверхность атаки остаётся открытой. Защита должна начинаться до приложения – на уровне reverse proxy, DNS или облачного фильтра.

Сравним типовые подходы к защите входа, чтобы стало понятно, где проходит граница между косметикой и реальным барьером:

Метод Где срабатывает Что блокирует Слабые места
Плагин лимита попыток Внутри CMS, PHP Повторные попытки с одного IP Распределённый брутфорс с тысяч IP, нагрузка на PHP и БД
Капча на форме входа Внутри CMS Простые боты без OCR Обходится сервисами распознавания, ломает UX для своих
Смена URL админки Приложение или rewrite Сканеры по словарю путей Утечка нового пути через логи, плагины, поисковики
Вынос входа на отдельный порт или домен Reverse proxy, до PHP Автоматические сканеры и массовые боты Требует настройки Nginx, Caddy или HAProxy
GeoIP-фильтр на входе Reverse proxy или облако Запросы из неразрешённых стран Нужны актуальные базы GeoIP, риск отрезать своих в роуминге

Обратите внимание на последние две строки. Вынос входа и GeoIP-ограничение работают до того, как запрос дойдёт до PHP. Это принципиальная разница: бот получает отказ на уровне Nginx или облачного фильтра, не расходуя ни одного цикла CPU на бэкенде.

Есть и вторая причина, почему стандартный путь – плохая идея. Логи. Каждая попытка брутфорса пишет строку в access.log и в лог самой CMS. Через месяц файлы разрастаются до гигабайтов, ротация ломается, а реальные инциденты тонут в шуме. Вынос входа на отдельный порт или домен срезает 95-99% этого мусора ещё до записи в лог приложения.

И третье: регуляторные требования. Если сайт обрабатывает персональные данные, доступ к админке из недружественных юрисдикций – это уже вопрос комплаенса, а не только безопасности. GeoIP-фильтрация закрывает его без правки кода.

Дальше разберём, как именно вынести вход на отдельный порт или домен через reverse proxy, добавить GeoIP-ограничение и проверить, что брутфорс по стандартным путям больше не достигает цели.

Вынос входа на отдельный порт или домен через reverse proxy

Сканеры брутфорса не думают. Они берут список из 500 адресов вида /wp-login.php, /bitrix/admin/, /administrator и долбят их по всем IP из базы. Если админка отвечает на стандартном пути, она уже в списке. Значит, задача простая: убрать вход туда, где его никто не ищет, и сделать это до того, как запрос дойдёт до PHP.

Reverse proxy решает это за один вечер. Nginx, Caddy или HAProxy встают перед приложением и решают, куда пускать трафик, а куда нет. Админка уезжает на нестандартный порт или отдельный поддомен, публичный сайт продолжает работать на 443. Сканер стучится в /wp-login.php, получает 404 и уходит ни с чем.

Схема на Nginx. Основной сервер обслуживает сайт, отдельный server-блок слушает, скажем, 8443 и проксирует на бэкенд админки. Порт выбирайте из диапазона 8000-8999: он не конфликтует с системными и редко попадает в автоматические словари порт-сканеров.

  1. Добавьте server-блок с listen 8443 ssl и server_name admin.example.ru.
  2. В location / пропишите proxy_pass на локальный адрес приложения, например http://127.0.0.1:8080.
  3. Передайте заголовки: proxy_set_header Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto.
  4. В основном server-блоке закройте стандартные пути: location = /wp-login.php { return 404; } и то же для /bitrix/admin/.
  5. Оставьте ssl_certificate только на новом блоке, чтобы старый домен вообще не отвечал на запросы к админке.

С поддоменом есть тонкость: если DNS-запись admin.example.ru видна в публичных логах Certificate Transparency, сканеры её найдут. Порт 8443 в этом смысле тише, но и его перебирают. Поэтому вынос входа это не финальная защита, а первый слой: он отсекает 90-95% автоматического мусора и снижает нагрузку на логи и fail2ban.

Caddy удобнее для тех, кто не хочет возиться с сертификатами. Конфиг в три строки: admin.example.ru { reverse_proxy 127.0.0.1:8080 } и отдельный блок для публичного сайта. Caddy сам выпустит SSL-сертификат и обновит его. HAProxy выбирают, когда админок несколько и нужен health-check бэкендов: он держит пул серверов и выкидывает упавшие из ротации.

Важный момент с IP-адресами. Когда запрос идёт через прокси, приложение видит 127.0.0.1, а не реального клиента. В Nginx это лечится директивой real_ip_header X-Forwarded-For и set_real_ip_from для доверенных подсетей. Иначе ваши логи и блокировки будут бесполезны: все попытки входа выглядят как локальные.

Проверьте результат сразу. Откройте https://example.ru/wp-login.php и убедитесь, что там 404, а не форма входа. Затем https://example.ru:8443 или https://admin.example.ru и убедитесь, что форма на месте. Если второй адрес открывается, а первый нет, вынос сработал. Осталось закрыть доступ по географии, и об этом дальше.

GeoIP-ограничение: пропускаем только доверенные страны

Админка, вынесенная на отдельный порт, уже не попадается на глаза массовым сканерам. Но как только её адрес утекает (а он утекает: через логи, Referer, утёкшие бэкапы, старые DNS-записи), начинается вторая волна: распределённый перебор паролей с ботнетов по всему миру. Здесь на помощь приходит GeoIP-фильтрация, и её правильное место – не в приложении, а на уровне reverse proxy. Причина проста: запрос отсекается до того, как попадёт в PHP, в базу, в журналы WordPress или Bitrix. Это экономит CPU, не засоряет логи и не даёт брутфорсу даже шанса дойти до формы входа.

Логика такая: вы разрешаете доступ к админ-эндпоинту только из стран, откуда реально работают ваши администраторы. Для большинства российских компаний это Россия, иногда плюс Казахстан, Беларусь, Армения или конкретная страна, где сидит удалённый разработчик. замена cloudflare offers additional context worth reviewing. Все остальные IP получают 403 ещё на границе. Средний ботнет распределён по десяткам стран, и отсечение 90 процентов источников снижает нагрузку на форму входа на порядки.

Как это собрать на Nginx. Нужен модуль GeoIP2 (в сборках Nginx от репозиториев Debian/Ubuntu он ставится как libnginx-mod-http-geoip2) и бесплатные базы MaxMind GeoLite2-Country или коммерческие GeoIP2-Country. Базы обновляются раз в месяц, старые версии быстро теряют точность, поэтому обновление лучше повесить на cron.

  1. Скачайте GeoLite2-Country.mmdb и положите, например, в /etc/nginx/geoip/.
  2. В блоке http подключите модуль: geoip2 /etc/nginx/geoip/GeoLite2-Country.mmdb; и определите переменную $geoip2_data_country_code.
  3. Соберите карту разрешённых стран: map $geoip2_data_country_code $admin_allowed { default 0; RU 1; KZ 1; BY 1; }
  4. В location админки добавьте: if ($admin_allowed = 0) { return 403; }

Для Caddy схема та же, но проще: в Caddyfile используется директива @geoip country RU KZ BY и handle @geoip { … } с плагином caddy-geoip2. В HAProxy – через ACL: acl admin_country src -f /etc/haproxy/ru_kz.lst и http-request deny if admin_path !admin_country. Списки стран в HAProxy ведите вручную или генерируйте из той же базы MaxMind скриптом.

Три подводных камня, о которых стоит помнить. Первый: за прокси или CDN реальный IP клиента приходит в заголовке X-Forwarded-For, и GeoIP-модуль должен читать именно его, иначе все запросы будут выглядеть как исходящие от одного адреса. В Nginx для этого настраивается set_real_ip_from и real_ip_header X-Forwarded-For. Второй: мобильные операторы и корпоративные VPN легко меняют геолокацию, поэтому админ, зашедший через VPN, окажется “вне зоны”. Держите под рукой резервный путь: отдельный поддомен без GeoIP-ограничения, защищённый клиентским сертификатом. Третий: не блокируйте по GeoIP публичную часть сайта, это ударит по SEO и по клиентам из-за рубежа.

Проверка занимает пять минут. С домашнего IP из разрешённой страны админка должна открываться. Через любой публичный VPN, например с сервером в Нидерландах, вы должны получить 403 и запись в логе Nginx. Если вместо 403 видите форму входа WordPress, значит map или if не сработал, и запрос дошёл до PHP. Добейтесь чистого 403 до того, как двигаться дальше.

GeoIP-фильтр не заменяет остальные слои защиты. Он лишь резко сокращает поверхность атаки, оставляя брутфорс только из доверенных стран. Дальше вступают rate limiting, fail2ban и WAF, и об этом имеет смысл говорить отдельно.

Российский аналог Cloudflare для защиты админки: TrafficVeil

Если вы уже пробовали настроить reverse proxy вручную, то знаете: конфиги Nginx, сертификаты, обновления, GeoIP-базы – всё это ложится на вашу ИТ-инфраструктуру. TrafficVeil является российским аналогом Cloudflare и закрывает те же задачи из коробки: DNS-сервис, SSL-сертификат, reverse proxy, WAF-блокировки, защита от ботов, L7 DDoS, GeoIP-фильтрация и аналитика в одном кабинете. Для админки это значит, что вынос входа и ограничение по странам делаются настройками, а не правкой кода сайта.

Зачем вообще уходить с Cloudflare. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. Получается замкнутый круг: админка то открывается, то нет, а автоматические сканеры при этом продолжают долбить /wp-login.php. Бизнес в России ищет альтернативу Cloudflare в 2026 году не из любви к импортозамещению, а потому что зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса: блокировки, задержки, недоступность панели в самый неподходящий момент. TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, так что вы не меняете одну недоступность на другую.

Как это выглядит на практике: порт, поддомен, GeoIP

Логика простая. Сайт остаётся на 443, а вход в админку вы переносите на отдельный порт, например 8443, или на поддомен вида admin.example.ru. TrafficVeil принимает трафик на этот адрес, проверяет источник и только потом проксирует запрос в приложение. Что даёт такая схема:

  • Сканеры, которые перебирают стандартные пути по 443, до админки просто не доходят. Для них её не существует.
  • GeoIP-фильтрация отсекает запросы из неразрешённых регионов до попадания в WordPress или Bitrix. Оставляете, скажем, Россию, Казахстан и Беларусь, остальное – отказ на уровне edge.
  • L7 DDoS и защита от ботов гасят попытки брутфорса ещё до PHP. Сервер не тратит ресурсы на генерацию страниц логина для ботов.
  • WAF-блокировки ловят подозрительные паттерны: массовые POST на форму входа, нестандартные User-Agent, попытки обхода через xmlrpc.php.

Отдельный плюс: TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки. То есть чем активнее вас долбят, тем меньше это стоит. Для интернет-магазинов и сайтов на WordPress и Bitrix, где админка это рабочий инструмент контент-менеджера, а не место для экспериментов, разница ощутимая.

Переход с Cloudflare выглядит так: меняете NS-записи на DNS-сервис TrafficVeil, включаете проксирование, добавляете правило GeoIP для админ-пути и назначаете нестандартный порт или поддомен. Код сайта не трогаете вообще. Никаких плагинов, никаких правок .htaccess, никаких самописных фильтров в functions.php, которые потом ломаются после обновления ядра.

Что проверить после настройки. Откройте старый адрес админки из браузера – должен прийти отказ или редирект, но не форма логина. Затем откройте новый адрес с разрешённого IP и убедитесь, что вход работает. И последнее: попробуйте зайти с VPN из страны, которой нет в списке разрешённых. Если видите страницу логина, GeoIP-правило настроено неверно. Если видите отказ, всё сделано правильно, и брутфорс по стандартным путям больше не достигает цели.

Практическая настройка и проверка защиты от брутфорса

Настройка reverse proxy: пошаговый чек-лист

Начнём с Nginx. Ставим его перед веб-сервером приложения и забираем трафик на себя. В конфиге создаём отдельный server-блок для админки на нестандартном порту, например 8443:

  • Слушаем listen 8443 ssl и привязываем отдельный SSL-сертификат, выписанный только на admin-поддомен.
  • В location / делаем proxy_pass на локальный адрес приложения, например http://127.0.0.1:8080.
  • Передаём заголовки: Host, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto. Без них WordPress и Bitrix не поймут реальный IP клиента и будут логировать адрес прокси.
  • Добавляем allow и deny по GeoIP-модулю: пропускаем только доверенные страны, остальным отдаём 403 на уровне прокси, до PHP.
  • Закрываем стандартный путь: в основном server-блоке на 443 делаем location = /wp-login.php { return 444; } и то же для /bitrix/admin/.

Для Caddy схема проще: один блок admin.example.ru:8443, автоматический SSL-сертификат и директива @geo not remote_ip … с respond 403. HAProxy выигрывает на высоких нагрузках: ACL по пути и источнику, backend только для доверенных подсетей, остальное отбрасывается на фронте.

TrafficVeil: вынос входа и GeoIP без правки кода

Если не хочется держать собственный прокси, тот же результат даёт TrafficVeil, российский аналог Cloudflare. Он объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику, поэтому вынос админки делается настройками в панели. Порядок такой:

  1. Переводим домен на DNS-сервис TrafficVeil, ждём обновления NS-записей.
  2. Создаём отдельную запись для admin-поддомена и включаем проксирование. Основной домен остаётся на 443, админка уходит на нестандартный порт или отдельный поддомен.
  3. В правилах WAF добавляем условие: путь /wp-login.php и /bitrix/admin/ на основном домене возвращает 403. Для admin-поддомена разрешаем только нужные GeoIP-зоны.
  4. Включаем SSL-сертификат на оба хоста и режим “только HTTPS”.
  5. Проверяем, что боты и атаки не тарифицируются: TrafficVeil не берёт плату за отражённые атаки, ботов и WAF-блокировки, так что защита не превращается в счётчик расходов.

Кода сайта это не касается: WordPress, Bitrix, интернет-магазины и самописные веб-платформы работают как раньше, меняется только маршрут до админки. Заодно снимается зависимость от зарубежной инфраструктуры, из-за которой российские интернет-провайдеры ограничивают доступ к сайтам на Cloudflare.

Как проверить, что брутфорс больше не проходит

Проверка занимает десять минут. Сначала curl с внешнего адреса: curl -I https://site.ru/wp-login.php должен вернуть 403 или 444, а не 200. То же для /bitrix/admin/. Затем открываем админку по новому адресу и порту: страница логина должна грузиться, сертификат быть валидным, а в логах приложения появляться реальный IP, а не 127.0.0.1.

Дальше смотрим логи прокси: запросы к старым путям должны обрываться на уровне reverse proxy, не доходя до PHP. Прогоняем тест из неразрешённой страны через публичный прокси или VPN: ответ 403 от GeoIP-правила. И финальный штрих: запускаем сканер по стандартным путям и убеждаемся, что в логах приложения не появилось ни одной попытки авторизации.

Если все четыре проверки прошли, брутфорс по известным путям больше не достигает цели: сканеры стучатся в закрытую дверь на периметре, а не в форму логина. После этого стоит настроить алерты на всплеск 403-х и раз в месяц пересматривать список доверенных GeoIP-зон.

Начните с одного действия: откройте конфигурацию своего reverse proxy и добавьте location для админ-пути с ограничением по IP или по порту. Если сайт на WordPress, это /wp-login.php и /wp-admin/; если на Bitrix, это /bitrix/admin/ и /bitrix/. Убедитесь, что правило стоит выше общего location /, иначе оно не сработает. После перезагрузки конфига проверьте доступ: curl -I https://ваш-домен/wp-login.php должен вернуть 403 или 404, а вход через новый порт или поддомен – работать штатно. На это уходит 15-20 минут, и это самая дешёвая защита от брутфорса, которую можно внедрить сегодня.

Дальше добавьте GeoIP-фильтр: разрешите только те страны, откуда реально заходят ваши администраторы. По статистике большинства атак на админки WordPress и Bitrix идёт из десятков подсетей по всему миру, и отсечение неразрешённых регионов убирает 90-95 процентов попыток ещё до того, как они дойдут до PHP. Если не хотите возиться с nginx.conf, модулями GeoIP и ручной сборкой баз, посмотрите в сторону TrafficVeil: это российский аналог Cloudflare, который объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели. Вынос админки на отдельный порт или поддомен и ограничение по гео настраиваются там без правки кода сайта и без доступа к серверу. Боты, атаки и WAF-блокировки не тарифицируются, платите только за легитимный трафик. Дополнительный плюс: сервис обеспечивает работу сайтов и на территории РФ, и по всему миру, а значит, вы не зависите от зарубежной инфраструктуры, которая может ограничить доступ к вашей админке в самый неподходящий момент. Переход с Cloudflare занимает один день: переносите DNS, включаете проксирование, настраиваете правила. Сделайте это до следующей волны сканирований, а не после.

dev
dev

Comments are closed.