Переходите з UptimeRobot? Імпортуйте монітори одним кліком за ключем API лише для читання.Почати безкоштовно →
  1. Головна
  2. Блог
  3. Посібники

Як пропустити монітор через Cloudflare WAF

Правила Cloudflare можуть показати монітору помилку, хоча сайт працює. Ось точне правило WAF, яке пропускає Tenium — і лише Tenium.

Посібники

Якщо ви закрили сайт клієнта за Cloudflare і підключили до нього монітор доступності, то рано чи пізно отримаєте сповіщення, що сайт не працює, хоча насправді з ним усе гаразд. Монітор отримав відповідь 403 від WAF, відповідь 503 зі сторінкою Checking your browser або JavaScript-перевірку, яку звичайний HTTP-клієнт пройти не може.

У цьому посібнику показано, як пропустити монітор через WAF Cloudflare, тобто додати його до білого списку (allow-list), і залишити захист увімкненим для всіх інших. Приклади наведено для чекера Tenium, але схема правила підійде для будь-якого монітора, який надсилає постійний User-Agent і дає змогу додати власний заголовок.

Чому Cloudflare блокує монітори

Bot Fight Mode, Super Bot Fight Mode і керовані правила WAF оцінюють запити за низкою ознак: відбиток TLS, заголовки, частота запитів. Монітор за своєю суттю — автоматичний клієнт, який кожні 30 секунд звертається до однієї адреси з одних і тих самих IP. Саме такий трафік ці правила й мають зупиняти.

Зазвичай трапляється одне з трьох:

  1. Managed Challenge (HTTP 403 або 503). Монітор отримує HTML-сторінку з вимогою виконати JavaScript. Він не вміє цього робити, тож повідомляє про збій.
  2. Обмеження частоти запитів (HTTP 429). Кожен активний регіон, що перевіряє раз на 30 секунд, надсилає 2 запити на хвилину. Усі наші регіони (2: Амстердам та Лондон) разом надсилають близько 4 запитів на хвилину до однієї адреси. Суворе правило rate limiting може спрацювати.
  3. Блокування за країною або ASN. Якщо ви закриваєте трафік не з вашого ринку, перевірка з Нью-Йорка теж потрапить під блокування.

Жоден із цих випадків не означає, що сайт не працює. Це означає, що до монітора ставляться як до відвідувача, а не як до інструмента.

Хибне рішення: пропускати лише за User-Agent

Очевидне рішення — правило WAF із дією Skip, яке перевіряє User-Agent. Tenium у кожному запиті надсилає Tenium-Monitor/1.0 (+https://tenium.app/bots). Правило http.user_agent contains "Tenium-Monitor/1.0" з дією Skip пропустить перевірки.

Проблема в тому, що цей заголовок може надіслати будь-хто. Якщо правило пропускає всі компоненти WAF, ви віддали обхід захисту кожному скрейперу, який прочитав цю статтю. Самого лише User-Agent недостатньо.

Правильне рішення: User-Agent плюс секретний заголовок

На тарифах Pro і вище Tenium дає змогу додати до будь-якого монітора власні заголовки запиту. Додайте заголовок x-tenium-secret з довгим випадковим значенням, а потім створіть правило WAF, яке вимагає і User-Agent, і секрет.

У панелі керування Cloudflare відкрийте Security → WAF → Custom rules → Create rule, перейдіть у редактор виразів і вставте:

(http.user_agent contains "Tenium-Monitor/1.0") and (http.request.headers["x-tenium-secret"][0] eq "YOUR_SECRET")

Виберіть дію Skip і позначте компоненти, які потрібно пропускати: щонайменше All managed rules і Rate limiting rules. Якщо ваш тариф показує Bot Fight Mode, позначте і його. Залиште ввімкненим пункт «Log matching requests», щоб переконатися, що правило спрацьовує.

Замініть YOUR_SECRET на те саме значення, яке ви вказали в заголовку монітора. Підійде, наприклад, результат openssl rand -hex 24. Якщо є підозра, що секрет витік, змініть його: він зберігається лише у двох місцях — у правилі та в заголовку монітора.

Індекс [0] обов’язковий. Cloudflare віддає заголовки запиту як масиви, бо один заголовок може повторюватися, а eq порівнює один рядок.

Якщо у вас Super Bot Fight Mode на тарифі Pro або Business

У деяких конфігураціях Super Bot Fight Mode спрацьовує раніше за власні правила й ігнорує правила Skip для трафіку, який Cloudflare вважає «definitely automated». Якщо після додавання правила перевірки все одно падають, відкрийте Security → Bots і або встановіть для «Definitely automated» значення Allow, або ввімкніть Allow verified bots. Tenium немає у списку перевірених ботів Cloudflare, тож допоможе саме перший варіант.

Чи не краще додати IP-адреси до білого списку?

Можна й так. Tenium публікує IP-адреси своїх чекерів на сторінці /checker-ips, а також JSON-стрічку, яку можна підключити до автоматизації. Правило для IP виглядає так:

(ip.src in {164.92.217.216})

Правила за IP надійніші за заголовок, але застарівають, коли провайдер моніторингу додає новий регіон. Схема «заголовок + секрет» переживає зміну IP, а список IP стане добрим другим фактором, якщо хочете обидва. Для найсуворішого варіанту поєднайте їх через and.

Як перевірити, що все працює

Після збереження правила відкрийте монітор у Tenium і натисніть Check now. Картка результату показує код відповіді з кожного регіону. Якщо в усіх регіонах 200, усе готово. Якщо один із регіонів досі бачить сторінку з перевіркою, подивіться, чи країну цього регіону не блокує окреме правило і чи блокування не стоїть у списку правил вище за ваше Skip.

У Cloudflare розділ Security → Events з фільтром за назвою правила показує кожен запит, що під нього підпав, і виконану дію. Ви маєте бачити записи «Skip», які надходять кожні 30 секунд з IP-адрес чекерів.

Як зберегти об’єктивність монітора

Коли ви пропускаєте монітор повз WAF, він бачить сайт таким, яким його віддає origin-сервер, а не таким, яким бачить відвідувач з перевіркою. Для аптайму це саме те, що потрібно. Якщо ви також хочете знати, коли сам Cloudflare перевіряє справжніх відвідувачів, додайте другий монітор без секретного заголовка й вкажіть очікуваний код відповіді, відмінний від 403 і 503. Коли спрацьовує він, а перший мовчить, проблема в Cloudflare, а не в origin.

Докладніше, зокрема про аналогічні правила для Wordfence і Sucuri, читайте на сторінці документації про Cloudflare.

Читайте також

Перевірки, які ви пропускаєте, описано в розділах про моніторинг сайту і моніторинг API. Інструмент для HTTP-заголовків покаже, що саме повертає адреса за Cloudflare, а перевірки з кількох локацій пояснюють, чому перевірка в одному регіоні може виглядати як збій. Порівнюєте сервіси за тим, як вони працюють із WAF? Почніть з розділу порівнянь.


Читайте також

Пов’язані сторінки Tenium

Відстежуйте перший сайт безкоштовно

30 моніторів безкоштовно, перевірки з 2 регіонів, без банківської картки. Перевірка SSL і терміну дії домену — від $7 на місяць.