11 мин чтения Скорость, безопасность, хостинг

Брутфорс: как подбирают пароли к админке и как от этого закрыться

брутфорсбрутфорс атака
Содержание11

Брутфорс — это автоматический перебор паролей: бот подставляет в форму входа тысячи вариантов, пока один не подойдёт. Чаще всего целью становится админка сайта. Защищают от него длинный пароль, второй фактор входа, лимит попыток и закрытый адрес панели управления.

Что такое брутфорс-атака?

Брутфорс — перебор вариантов, пока не найдётся верный. Открытое сообщество по безопасности приложений OWASP описывает его как попытку найти пароль, систематически перебирая комбинации букв, цифр и символов. Атакующий заранее готовит набор значений, отправляет серверу запросы с ними и анализирует ответы.

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

Перебор ведёт программа, и ей не нужно знать ничего о вашей компании: достаточно адреса формы входа. Поэтому под удар попадают и маленькие сайты, которых никто не выбирал специально.

Брутфорс берёт упорством: бот пробует варианты без пауз, и слабый пароль падает среди первых попыток.

Чем брутфорс отличается от подстановки и распыления паролей

Перебор бывает разным, и защита зависит от вида атаки. Руководство OWASP по аутентификации различает три сценария.

Вид атаки Что делает атакующий Почему опасна
Брутфорс Проверяет множество паролей из словаря на одной учётной записи Слабый пароль рано или поздно находится
Подстановка украденных данных Проверяет пары логин и пароль, полученные при взломе другого сайта Срабатывает, если вы использовали один пароль на разных сайтах
Распыление паролей Проверяет один слабый пароль на множестве разных учётных записей Блокировка одной записи по числу попыток его не замечает

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

Зачем атакуют сайт и что на кону

Первая цель — доступ к панели управления. Получив его, атакующий размещает чужие ссылки, подменяет содержимое, ставит вредоносные скрипты или использует сайт для рассылок. Вторая — нагрузка: OWASP отмечает, что брутфорс ставит под угрозу учётные записи и заваливает сайт лишним трафиком. На слабом тарифе поток запросов к форме входа оборачивается ошибкой 503 для обычных посетителей.

Третья цель — адреса страниц. По OWASP, брутфорс применяют и для поиска скрытых страниц: берут словарь известных адресов популярных CMS и запрашивают каждый, оценивая код ответа. Так находят панели управления базами данных, резервные копии и забытые служебные файлы.

Отсюда практический вывод: закрывать нужно не только форму входа, но и всё, что не предназначено для посетителей. Лишние файлы удаляют, служебные разделы закрывают по IP-адресу или паролем.

Как понять, что админку подбирают?

Брутфорс шумный, и его видно, если смотреть в журналы. OWASP прямо советует следить за журналами сервера. Признаки такие:

  • Всплеск запросов к форме входа — в журнале доступа сотни POST-запросов на один адрес за короткое время, обычно с одним User-Agent.
  • Много разных IP-адресов — запросы идут с десятков адресов, по два-три с каждого: так инструменты обходят блокировку по IP.
  • Перебор служебных адресов — подряд идут запросы к десяткам несуществующих страниц и в ответ приходят 404.
  • Рост нагрузки без роста посетителей — процессор загружен, а в аналитике трафик не изменился: нагрузку создают боты.
  • Уведомления от CMS — письма о неудачных попытках входа или блокировке учётных записей.

Для сайта на CMS проще всего включить журнал неудачных входов в самой системе или в плагине безопасности и раз в неделю смотреть на число попыток. Одиночные неверные пароли нормальны, сотни за вечер уже атака. Если ограничение частоты запросов включено, в журнале появятся отказы с кодом 429 или 503: так отсекаются лишние запросы. Без такого ограничения перебору ничто не мешает.

Какой пароль и второй фактор выдержат подбор

Лучшая защита от брутфорса — второй фактор входа. Руководство OWASP называет многофакторную аутентификацию безусловно лучшей защитой от большинства атак на пароли, включая брутфорс, и приводит оценку Microsoft: она остановила бы 99.9% взломов учётных записей.

Факт. По анализу Microsoft, который приводит OWASP, многофакторная аутентификация остановила бы 99.9% взломов учётных записей.

Длина пароля важнее хитрости. По руководству OWASP, ссылающемуся на рекомендации NIST, при включённой многофакторной аутентификации слабыми считаются пароли короче 8 символов, а без неё слабыми считаются пароли короче 15 символов. Требовать «одну заглавную, одну цифру и один символ» OWASP не советует: правил состава пароля, ограничивающих типы символов, быть не должно. Вместо этого стоит блокировать частые и уже утёкшие пароли.

Ещё одна мелочь, которая мешает перебору: одинаковая ошибка на любую неудачу. Приложение должно отвечать общим сообщением, неважно, не найден логин или неверен пароль. Иначе бот сначала собирает список существующих логинов, а потом подбирает пароли только к ним.

Лимит попыток и блокировка: что работает, а что подставляет вас

Самая очевидная мера — блокировать учётную запись после нескольких неверных паролей. Мера рабочая, но с подвохом, который OWASP разбирает отдельно: блокировкой можно воспользоваться против вас. Атакующий может устроить отказ в обслуживании, заблокировав сразу много аккаунтов, а блокировка не помогает против медленных атак, которые пробуют лишь несколько паролей за долгое время.

Блокировка по IP-адресу тоже ненадёжна. Инструменты перебора пропускают запросы через список открытых прокси, поэтому запросы приходят с разных адресов, и, по OWASP, остановить атаку одной блокировкой по IP нельзя. Зато можно по ошибке закрыть целый офис или провайдера, сидящих за одним адресом.

Что советует руководство OWASP по аутентификации:

  • Считать попытки по учётной записи — счётчик неудачных входов привязывают к аккаунту, а не к IP-адресу, чтобы перебор с множества адресов не обходил лимит.
  • Нарастающая пауза вместо вечной блокировки — после каждой неудачи пауза удваивается: честный пользователь теряет секунды, а перебор быстро упирается в долгое ожидание.
  • Оставить путь восстановления — вход через «забыли пароль» должен работать, даже когда учётная запись заблокирована, иначе блокировка запрёт и самого владельца.
  • Капча после первых неудач — OWASP считает её дополнительным слоем защиты, который делает перебор дороже и дольше, но не гарантирует защиты.

Если у вас один администратор и нет публичной регистрации, лимит на запросы к форме входа проще и надёжнее блокировки аккаунтов. Если на сайте сотни пользователей, нужен счётчик по учётной записи плюс второй фактор.

Как закрыть вход в админку в nginx

Ограничить частоту запросов к форме входа можно прямо на веб-сервере, до того как запрос дойдёт до CMS. Модуль limit_req в nginx ограничивает скорость обработки запросов по заданному ключу, в частности с одного IP-адреса. По умолчанию при отклонении он отвечает кодом 503, и его лучше заменить на 429: в журналах будет видно, что отказ дал лимит, а не перегрузка сервера.

Пример для формы входа. Адрес и значения условные, их подбирают под конкретный сайт:

limit_req_zone $binary_remote_addr zone=login:10m rate=1r/s;

server {
    server_name site.ru;

    location = /admin/login {
        limit_req zone=login burst=5 nodelay;
        limit_req_status 429;
        proxy_pass http://127.0.0.1:8000;
    }
}

Второй рубеж — доступ по адресу. Модуль access позволяет ограничить доступ для определённых адресов клиентов, а правила проверяются в порядке записи до первого совпадения. Если администраторы работают из офиса со статическим адресом, панель можно закрыть для всех остальных:

location /admin/ {
    allow 203.0.113.0/24;
    deny all;
}

Третий — пароль на самом веб-сервере. Модуль auth_basic проверяет имя и пароль по протоколу HTTP Basic до того, как запрос дойдёт до CMS. Получается двойная дверь: бот должен подобрать сразу два пароля.

Граница: на виртуальном хостинге без доступа к настройкам nginx такие правила не поставить. Тогда остаются средства CMS: плагин ограничения попыток, второй фактор и переименование адреса входа. Переименование скрывает панель от массовых сканеров, но это защита от случайных ботов, а не от целенаправленной атаки.

Мнение. Если вход в админку нужен только вам и команде, закрывайте его по IP-адресу и вешайте второй фактор. Если администраторы работают с разных адресов, замените блокировку по IP лимитом частоты и длинными паролями.

Что делать, если вход уже подобрали?

Если вы нашли в админке чужие действия, сначала отрежьте атакующего, потом разбирайтесь. Порядок такой:

  1. Смените пароли

    Сбросьте пароли всех администраторов и ключи доступа к серверу и базе данных, начиная с учётной записи, через которую вошли.

  2. Завершите чужие сессии

    Выйдите из всех устройств и сбросьте сессии в CMS.

  3. Проверьте пользователей

    Удалите незнакомых администраторов и проверьте права тех, кого создавали давно.

  4. Найдите изменения

    Сравните файлы сайта с чистой копией, посмотрите недавно изменённые файлы и новые задания в расписании сервера.

  5. Восстановите из копии

    Если следы остались, надёжнее откатиться на копию до взлома, чем вычищать вручную.

  6. Включите защиту

    Поставьте второй фактор и лимит попыток, иначе атака повторится.

Подробнее о том, что проверять после взлома, написано в разборе проверки сайта на безопасность.

С чего начать

Не нужно закрывать всё сразу. Расставьте меры по отдаче: сначала самые дешёвые и самые сильные.

  • Второй фактор для администраторов — закрывает большую часть угроз одной настройкой.
  • Длинные уникальные пароли — менеджер паролей и пароль, который не используется на других сайтах.
  • Лимит частоты на форму входа — одна директива в nginx или плагин в CMS.
  • Журнал входов — раз в неделю взгляд на число неудачных попыток.
  • Лишнее — удалить — неиспользуемые панели, старые копии, тестовые страницы.

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

Источники

Частые вопросы

Поможет ли смена адреса админки?

Частично. Нестандартный адрес спрячет вход от массовых сканеров, которые ищут типовые пути. Целенаправленную атаку это не остановит: адрес можно узнать из кода страниц или по перебору. Считайте это дополнением к паролю и второму фактору.

Нужна ли капча на форме входа?

Нужна как дополнительный слой. OWASP предупреждает, что многие капчи обходятся автоматически или через сервисы-решатели, поэтому полагаться только на неё нельзя. Удобнее показывать её после нескольких неудачных попыток.

Можно ли заблокировать подозрительные IP-адреса и считать вопрос закрытым?

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

Поделиться
ВКонтакте Telegram MAX
Рубрика статьи
Скорость, безопасность, хостинг
Ещё 17 статей в рубрике →
Рядом в разделе

Расскажите о задаче — посчитаем смету

Ответьте на несколько вопросов: что за компания, какие разделы нужны, есть ли тексты и фотографии. Этого хватит, чтобы посчитать смету с фиксированной ценой и сроком — она бесплатна и ни к чему не обязывает.
Написать