Как настроить 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)
Правило 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"})
Правило 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")
Правило 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")
Правило 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 "")
❗ВАЖНО: Так как мы заблокировали доступ к админке, вам нужно добавить IP-адрес своего сервера в файл HOSTS в Windows.
- Перейдите по пути
C:\Windows\System32\drivers\etc
- Откройте hosts
- Добавьте IP-адрес своего сервера и напишите домен
- Пример, 111.111.111.111 mywebpc.ru
- Без решетки #. Если нужно проверить работу CF, то поставьте впереди #
- Для полного удобства, можете создать ярлык файла HOSTS на рабочий стол
Если выше не устраивает решение с файлом hosts, то в разделе WAF вы можете перейти во вкладку Tools и добавить свой домашний IP-адрес в исключения. Это может быть и региональный IP или подсеть региональности. Не забудьте выбрать действие Allow.
Настройка кэша 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/")
2. Далее перейдите в раздел Rules > Page Rules и создайте следующие 3 правила заменив домен на свой.
mywebpc.ru/*
(Cache Level: Cache Everything)mywebpc.ru/wp-*
(Cache Level: Bypass)mywebpc.ru/*preview=true*
(Cache Level: Bypass)