Вы открываете сайт, и он загружается. Монитор говорит, что сайт недоступен, а причина, которую он записал, — HTTP 403. Верно и то и другое. Для вас сайт работает, а монитору он отказывает.
403 — это сервер говорит, что понял запрос и выполнять его не станет. В отличие от 503 или превышения времени ожидания, это не признак того, что сайту тяжело. Что-то решило, что этот запрос пропускать не следует.
Почему монитор блокируют
Монитор — это робот. Он по расписанию запрашивает страницу с серверов, которые находятся не в стране посетителя, и без браузера за спиной. Многие средства защиты созданы именно для того, чтобы останавливать такой трафик:
| Что блокирует | Как проявляется |
|---|---|
| Защита от ботов или управляемая проверка в CDN или сервисе файрвола (типичный пример — Cloudflare) | Вместо вашей страницы — страница проверки или «проверяем ваш браузер»; ответ 403 |
| Правило по стране или сети | Блокирует запросы из дата-центров или из определённых стран |
| Ограничение частоты запросов | Начинает отказывать после определённого числа запросов с одного адреса |
| Модуль безопасности на веб-сервере или в панели хостинга | Блокирует запросы, похожие на автоматические, или запросы без идентификации браузера |
| Список заблокированных адресов, например тот, что ведёт система предотвращения вторжений | Блокирует адрес монитора после того, как его пометили |
| Аутентификация | 401 или 403 на странице, требующей входа. Монитор не входит в систему |
Ничто из этого не означает, что ваш сайт сломан. Это значит, что защита работает чуть слишком усердно для добросовестного монитора.
Подтвердите причину
Не меняйте правила файрвола наугад. Сначала посмотрите.
1. Прочитайте, что получил монитор
Если ваш монитор показывает ответ, посмотрите на тело. Страница о проверке безопасности, проверочном задании или заблокированном запросе указывает на файрвол. Простое «Forbidden» от веб-сервера указывает на правило сервера. Страница входа указывает на аутентификацию.
2. Сравните со своим терминалом
curl -sS -o /dev/null -D - https://example.com/
Если и здесь возвращается 403, а ваш браузер работает, блокировка зависит от того, как выглядит запрос, а не от того, где вы находитесь. Тогда отправьте запрос, похожий на браузерный:
curl -sS -o /dev/null -D - -A "Mozilla/5.0" https://example.com/
Если второй запрос проходит, а первый нет, правило смотрит на идентификацию, которую присылает клиент. Посмотрите и на заголовки ответа. Заголовок или cookie, называющие CDN или сервис файрвола, подскажут, какой уровень отвечает.
3. Прочитайте журнал самого файрвола
Это самый надёжный шаг. Сервисы такого рода ведут журнал заблокированных и проверяемых запросов с указанием сработавшего правила. Найдите время неудачных проверок монитора и посмотрите, какое правило совпало. Название правила подскажет, что менять.
4. Проверьте в обратную сторону
Разрешите монитор узким правилом (см. ниже), запустите проверку ещё раз и посмотрите, пройдёт ли она. Если да, блокировка была на стороне файрвола. Если всё ещё нет, смотрите следующий уровень: собственные правила сервера, затем приложение.
Исправьте, не ослабляя защиту сайта
Цель — пропустить одного известного посетителя, а не отключить защиту.
- Разрешите адреса монитора. Большинство сервисов мониторинга публикуют адреса, с которых идут их проверки. Добавьте их в разрешающее правило или укажите файрволу пропускать защиту, блокирующую монитор, только для этих адресов. Если ваш сервис не публикует список, спросите его поддержку. UptimeWire публикует свой список и шаги для распространённых сервисов: см. Как пропустить проверки UptimeWire через защиту сайта.
- Не полагайтесь только на строку идентификации. Правилом, которое пропускает всё, что называет себя монитором, сможет воспользоваться кто угодно. Правило по диапазону адресов подделать гораздо труднее.
- Сузьте область действия. Разрешите монитору доступ к одному публичному адресу, например к главной странице или служебной странице проверки, а не ко всему сайту.
- Используйте отдельный адрес для проверки работоспособности. Небольшая публичная страница, которая отвечает 200 и не содержит закрытых данных, — самое простое, что можно разрешить, и самое дешёвое, что можно проверять.
- Помните об ограничении частоты запросов. Если вы проверяете часто и из нескольких мест, суммарные запросы могут превысить лимит. Разрешите адреса монитора и там.
- Запишите изменение. Разрешающее правило, о котором никто не помнит, потом трудно проверять.
Warning
Не отключайте защиту от ботов или файрвол для всего сайта ради того, чтобы монитор проходил. Это больший риск, чем монитор, который сообщает 403.
Когда 403 настоящая
Иногда монитор прав. Развёртывание, изменившее права на файлы, включённый модуль безопасности или намеренно заблокированный адрес дают 403, которую видят и посетители. Если ваши собственные проверки из терминала и из другой сети тоже не проходят, считайте это настоящей проблемой и посмотрите правила и права на сервере.
Что монитор может и чего не может
UptimeWire запрашивает публичный адрес снаружи и читает ответ. Конечный ответ от 200 до 399 считается рабочим. Всё остальное считается сбоем, включая 401 и 403. Неудачная проверка повторяется, и инцидент открывается после трёх неудачных проверок подряд. Причина записывается, так что вы увидите «HTTP 403» и время начала.
Он не входит в систему, не отвечает на проверочные задания и не обходит файрвол. Для мониторинга страницы за входом нужен другой подход или публичный адрес проверки работоспособности, который её заменит.
Чек-лист
- Открывается ли страница в браузере и в
curl? - Что сказано в теле ответа: проверочное задание, простое Forbidden или страница входа?
- Какое правило сработало, согласно журналу файрвола?
- Разрешены ли адреса монитора, и только ли для того адреса, который вы отслеживаете?
- Разрешили ли вы монитор, не отключая защиту?
- Проходит ли монитор после изменения целые сутки, включая часы пик?