telegram
💡Руководства

Как настроить Cloudflare для сайта (кэш, от ботов и атак)

В данном руководстве о том, как правильно настроить Cloudflare для сайта WordPress, чтобы фильтровать ботов-накрутчиков, создать правильно кэш всего сайта и защитить админ панель, ввод логина и пароля, от атак и брутфорса.

Настройка Cloudflare для фильтрации ботов

В Cloudflare в разделе WAF доступно 5 бесплатных правил, где мы защитим админку и настроим фильтрацию от ботов.

Правило 1. Первое правило, пропускаем известных ботов от Google, Yandex и других известных поисковиков. Также, включим нужные ASN в исключения.

  • Нажмите Edit expression и вставьте ниже правило
  • Вместо 111.111.111.1111 впишите IP-адрес своего сервера
  • Выберите действие Skip
  • Также, установите везде галочки пропуска и нажмите Save
(cf.client.bot) or (ip.geoip.asnum in {13236 13238 208722 15169}) or (ip.src eq 111.111.111.111)

пропуск известных ботов CF

Правило 2. Вторым правилом будем блокировать заходы с самых известных вредных IP-адресов, с которых идет склик рекламы от онлайн сервисов, сами хосты и ASN в виде Biterika.

  • Нажмите Edit expression и вставьте ниже правило
  • Выберите действие Block
  • Со временем можете пополнять данное правило
(ip.geoip.asnum in {35048 24940}) or (ip.src in {95.191.162.50 89.223.104.178 79.140.16.20 46.21.250.56 195.24.68.6 195.209.108.4}) or (http.host in {"api.pfbaza.website" "autoclickextreme.com" "pfbaza.website" "static.39.123.109.65.clients.your-server.de"})

блокировка ASN IP и хостов

Правило 3. Третьим правилом будем защищать xmlrpc.php, wp-admin, wp-login.php, plugins, favicon.ico и т.п. Кроме того, будет исключать свой домен, чтобы не было проблем. Очень много ботов и атак отсеются сразу, после данного правила.

  • Нажмите Edit expression и вставьте ниже правило
  • Замените site.ru на свой домен
  • Выберите действие Block
(http.request.uri eq "/xmlrpc.php") or (http.request.uri.path contains "/wp-content/" and not http.referer contains "site.ru") or (http.request.uri.path contains "/wp-includes/" and not http.referer contains "site.ru") or (http.request.uri.path contains "/wp-login.php") or (http.request.uri.path contains "/wp-admin/" and http.request.uri.path ne "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/theme-editor.php") or (http.request.uri.path contains "/wp-content/plugins/" and not http.referer contains "site.ru") or (http.request.uri.path contains "/favicon.ico" and not http.referer contains "site.ru")

защита админки WP в CF

Правило 4. Четвертым правилом будем делать интерактивный вызов для IPv6, но советую отключить его полностью при помощи CMD. Кроме того, добавим ASN Яндекса в исключения и добавим UTM метки, так как по ним тоже ботов достаточно.

  • Нажмите Edit expression и вставьте ниже правило
  • Выберите действие Interactive Challenge
(ip.src in {::/0} and not ip.geoip.asnum in {13238}) or (not ssl and not ip.geoip.asnum in {13238}) or (http.request.uri contains "utm")

интерактивный вызов для IPv6 и utm

Правило 5. Пятым правилом будем выдавать JS HTTP 1 протоколу и прямым заходам (пустому referer).

  • Нажмите Edit expression и вставьте ниже правило
  • Выберите действие JS Challenge
(not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"}) or (http.referer eq "")

js вывод http1 и пустому реферер

ВАЖНО: Так как мы заблокировали доступ к админке, вам нужно добавить IP-адрес своего сервера в файл HOSTS в Windows.

  • Перейдите по пути C:\Windows\System32\drivers\etc
  • Откройте hosts
  • Добавьте IP-адрес своего сервера и напишите домен
  • Пример, 111.111.111.111 mywebpc.ru
  • Без решетки #. Если нужно проверить работу CF, то поставьте впереди #
  • Для полного удобства, можете создать ярлык файла HOSTS на рабочий стол

добавить ip сервера и домен в файл hosts

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

разрешить доступ по IP или региону

Настройка кэша Cloudflare для сайта

1. Настроим полное кэширование сайта. Для этого перейдите в раздел Caching > Cache Rules и нажмите Create rule.

  • Скопируйте ниже правило кэша
  • Выберите действие Bypass cache
  • Замените домен на свой
(http.request.uri contains "wp-admin") or (http.request.uri contains "ajax") or (http.request.uri eq "wp-login") or (http.request.uri contains "preview=true") or (http.request.uri contains "?__cf_chl_rt_tk=") or (http.request.uri contains "sitemap") or (http.request.uri eq "mywebpc.ru/feed/")

кэш CF для WP

2. Далее перейдите в раздел Rules > Page Rules и создайте следующие 3 правила заменив домен на свой.

  • mywebpc.ru/* (Cache Level: Cache Everything)
  • mywebpc.ru/wp-* (Cache Level: Bypass)
  • mywebpc.ru/*preview=true* (Cache Level: Bypass)

задать правила страниц в CF