Эти правила, сохранил себе, чтобы не потерять из первоисточника. Перевод может иметь некоторые неточности, так ка киспользовал Гугл переводчик и свое скудное знание языка. Меня, данная находка - выручила. Возможно, кому-то будет полезна данная информация. Не копируйте данные правила, без понимания, зачем вам это нужно. Бездумное использование данных правил, может нарушить индексацию поисковыми ботами и работу вашего сайта.
Перевод:
Недавно CloudFlare Firewall включил подробное создание правил для всех учетных записей, включая бесплатные, и предоставил возможность добавлять полные правила брандмауэра. С помощью этих правил вы сможете защитить свою установку WordPress как от известных, так и от нераскрытых и неизвестных уязвимостей.
Общие правила брандмауэра Cloudflare
Некоторые из приведенных здесь правил были разработаны в первую очередь для безопасности сайтов, использующих Wordpress, вы можете изменить некоторые из правил брандмауэра Cloudflare и использовать их по своему усмотрению в других системах.
В общем, он будет блокировать ботов и автоматических злоумышленников и фильтровать плохой трафик на ваш сайт, поэтому вы можете увидеть падение трафика в таких инструментах, как google analytics, пожалуйста, не паникуйте.
Перейдите на вкладку WAF в меню "Безопасность", нажмите "Создать правило брандмауэра" и внесите следующие дополнения одно за другим. Я упорядочил имена правил в соответствии с собой.
- Имя правила: Общая защита содержимого
- Действие правила: Блокировать
(cf.threat_score gt 14) or
(not http.request.version in {"HTTP/1.0" "HTTP/1.1" "HTTP/1.2" "HTTP/2" "HTTP/3" "SPDY/3.1"}) or
(http.host eq "mysite.com" and not cf.edge.server_port in {80 443}) or
(http.request.uri.path contains "/phpunit") or
(http.request.uri contains "<?php") or
(http.cookie contains "<?php") or
(http.request.full_uri contains "passwd") or
(http.request.uri contains "/dfs/") or
(http.request.uri contains "/autodiscover/") or
(http.request.uri contains "/wpad.") or
(http.request.uri contains "wallet.dat") or
(http.request.uri contains "/.env") or
(http.request.uri contains "../") or
(http.request.full_uri contains "webconfig.txt") or
(http.request.full_uri contains "vuln.") or
(http.request.uri contains ".sql") or
(http.request.uri contains ".bak") or
(http.request.uri contains ".cfg") or
(http.request.uri contains ".env") or
(http.request.uri contains ".ini") or
(http.request.uri contains ".log") or
(http.request.uri.query contains "bin.com/") or
(http.request.uri.query contains "bin.net/") or
(raw.http.request.uri.query contains "?%00") or
(http.request.uri.query contains "eval(") or
(http.request.uri.query contains "base64") or
(http.request.uri.query contains "var_dump") or
(http.request.uri.query contains "<script") or
(http.request.uri.query contains "%3Cscript") or
(http.cookie contains "<script") or
(http.referer contains "<script") or
(upper(http.request.uri.query) contains " UNION ALL ") or
(upper(http.request.uri.query)contains " SELECT ") or
(raw.http.request.uri contains "../") or
(raw.http.request.uri contains "..%2F") or
(http.request.uri.path contains ".js.map") or
(http.request.uri.query contains "$_GLOBALS[") or
(http.request.uri.query contains "$_REQUEST[") or
(http.request.uri.query contains "$_POST[")
- Название правила: Нежелательные агенты пользователей
- Действие правила: Блокировать
(lower(http.user_agent) contains "?%00") or
(lower(http.user_agent) contains "$[") or
(lower(http.user_agent) contains "${") or
(lower(http.user_agent) contains "absinthe") or
(lower(http.user_agent) contains "appinsights") or
(lower(http.user_agent) contains "mj12bot") or
(lower(http.user_agent) contains "semrushbot") or
(lower(http.user_agent) contains "dotbot") or
(lower(http.user_agent) contains "whatcms") or
(lower(http.user_agent) contains "rogerbot") or
(lower(http.user_agent) contains "trendictionbot") or
(lower(http.user_agent) contains "blexbot") or
(lower(http.user_agent) contains "linkfluence") or
(lower(http.user_agent) contains "magpie-crawler") or
(lower(http.user_agent) contains "mediatoolkitbot") or
(lower(http.user_agent) contains "aspiegelbot") or
(lower(http.user_agent) contains "domainstatsbot") or
(lower(http.user_agent) contains "coccocbot") or
(lower(http.user_agent) contains "commix") or
(lower(http.user_agent) contains "crimscanner") or
(lower(http.user_agent) contains "davclnt") or
(lower(http.user_agent) contains "datacha0s") or
(lower(http.user_agent) contains "dirbuster") or
(lower(http.user_agent) contains "cincraw") or
(lower(http.user_agent) contains "nimbostratus") or
(lower(http.user_agent) contains "httrack") or
(lower(http.user_agent) contains "serpstatbot") or
(lower(http.user_agent) contains "omgili") or
(lower(http.user_agent) contains "grapeshotcrawler") or
(lower(http.user_agent) contains "megaindex") or
(lower(http.user_agent) contains "petalbot") or
(lower(http.user_agent) contains "semanticbot") or
(lower(http.user_agent) contains "cocolyzebot") or
(lower(http.user_agent) contains "domcopbot") or
(lower(http.user_agent) contains "traackr") or
(lower(http.user_agent) contains "bomborabot") or
(lower(http.user_agent) contains "linguee") or
(lower(http.user_agent) contains "webtechbot") or
(lower(http.user_agent) contains "domainstatsbot") or
(lower(http.user_agent) contains "clickagy") or
(lower(http.user_agent) contains "sqlmap") or
(lower(http.user_agent) contains "internet-structure-research-project-bot") or
(lower(http.user_agent) contains "seekport") or
(lower(http.user_agent) contains "awariosmartbot") or
(lower(http.user_agent) contains "onalyticabot") or
(lower(http.user_agent) contains "buck") or
(lower(http.user_agent) contains "riddler") or
(lower(http.user_agent) contains "sbl-bot") or
(lower(http.user_agent) contains "df bot 1.0") or
(lower(http.user_agent) contains "pubmatic crawler bot") or
(lower(http.user_agent) contains "restsharp") or
(lower(http.user_agent) contains "bvbot") or
(lower(http.user_agent) contains "sogou") or
(lower(http.user_agent) contains "barkrowler") or
(lower(http.user_agent) contains "admantx") or
(lower(http.user_agent) contains "adbeat") or
(lower(http.user_agent) contains "embed.ly") or
(lower(http.user_agent) contains "semantic-visions") or
(lower(http.user_agent) contains "voluumdsp") or
(lower(http.user_agent) contains "wc-test-dev-bot") or
(lower(http.user_agent) contains "gulperbot") or
(lower(http.user_agent) contains "360Spider") or
(lower(http.user_agent) contains "/bin/bash") or
(lower(http.user_agent) contains "crawler.feedback@gmail.com") or
(lower(http.user_agent) contains "eval(") or
(lower(http.user_agent) contains "env:") or
(lower(http.user_agent) contains "fhscan") or
(lower(http.user_agent) contains "floodgate") or
(lower(http.user_agent) contains "go-http-client/") or
(lower(http.user_agent) contains "nikto") or
(lower(http.user_agent) contains "python") or
(lower(http.user_agent) contains "masscan") or
(lower(http.user_agent) contains "mail.ru") or
(lower(http.user_agent) contains "scrapy") or
(lower(http.user_agent) contains "webdav-miniredir") or
(lower(http.user_agent) contains "winhttp.winhttprequest") or
(lower(http.user_agent) contains "zmeu") or
(lower(http.user_agent) contains "fuzz") or
(lower(http.user_agent) contains "wp_is_mobile") or
(lower(http.user_agent) contains "sqlninja") or
(lower(http.user_agent) contains "yaanibot")
Блокировка ASN в Cloudflare Firewall может привести к нежелательным результатам, поэтому следует быть очень осторожным при ее использовании.
- Имя правила: Нежелательные ASN
- Действие правила: Блокировать
(ip.geoip.asnum eq 16276) or
(ip.geoip.asnum eq 14618) or
(ip.geoip.asnum eq 16509) or
(ip.geoip.asnum eq 24940) or
(ip.geoip.asnum eq 37153) or
(ip.geoip.asnum eq 32244) or
(ip.geoip.asnum eq 22611) or
(ip.geoip.asnum eq 54641) or
(ip.geoip.asnum eq 47583) or
(ip.geoip.asnum eq 55293)
Если вы хотите составить более полный список блокировки ASN, я настоятельно рекомендую использовать bad-asn-list.
- Имя правила: Блокировать сканеры
- Действие правила: Блокировать
(http.user_agent contains "Acunetix") or
(lower(http.user_agent) contains "apache") or
(http.user_agent contains "BackDoorBot") or
(http.user_agent contains "cobion") or
(http.user_agent contains "masscan") or
(http.user_agent contains "FHscan") or
(http.user_agent contains "scanbot") or
(http.user_agent contains "Gscan") or
(http.user_agent contains "Researchscan") or
(http.user_agent contains "WPScan") or
(http.user_agent contains "ScanAlert") or
(http.user_agent contains "Wprecon") or
(lower(http.user_agent) contains "virusdie") or
(http.user_agent contains "VoidEYE") or
(http.user_agent contains "WebShag") or
(http.user_agent contains "Zeus") or
(http.user_agent contains "zgrab") or
(lower(http.user_agent) contains "zmap") or
(lower(http.user_agent) contains "nmap") or
(lower(http.user_agent) contains "fimap") or
(http.user_agent contains "ZmEu") or
(http.user_agent contains "ZumBot") or
(http.user_agent contains "Zyborg")
Правила CloudFlare для Wordpress
Сразу после добавления общих правил, если вы используете wordpress на своем сайте, вы можете создать дополнительную безопасность, добавив следующие правила на брандмауэр cloudflare.
- Имя правила: Wordpress защита
- Действие правила: Блокировать
(http.request.uri.query contains "author_name=") or
(http.request.uri.query contains "author=" and not http.request.uri.path contains "/wp-admin/export.php") or
(http.request.uri contains "wp-config.") or
(http.request.uri contains "setup-config.") or
(http.request.uri.path eq "/wp-comments-post.php" and http.request.method eq "POST" and not http.referer contains "mysite.com") or
(http.request.uri.path contains "/xmlrpc.php")
- Название правила: Важные области Wordpress
- Действие правила: Блокировать
((http.request.uri.path contains "/wp-admin/" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/theme-editor.php"))
- Название правила: Защита входа в систему
- Действие правила: Captcha
(not ip.src in {1.1.1.1/32} and http.request.uri.path contains "/wp-login.php")
- Название правила: Защита хотлинк
- Действие правила: Блокировать
Будьте осторожны при использовании этого правила, вы можете случайно заблокировать все содержимое сайта.
not (http.referer contains "mysite.com" or http.referer eq "cdn.mysite.com" or http.referer eq "www.cloudflare.com")
- Название правила: Блокировка порта
- Действие правила: Блокировать
(http.host eq "mysite.com") and not cf.edge.server_port in {80 443}
- Название правила: Белый список IP-адресов администраторов Wordpress
- Действие правила: Блокировать
(not ip.src in {1.1.1.1/32} and lower(http.request.uri.path) contains "/wp-admin" and lower(http.request.uri.path) contains "/wp-login.php")
Использование правил страниц в брандмауэре Cloudflare
Сразу после них мы воспользуемся разделом "Правила страниц CloudFlare" и внесем несколько изменений. Основная цель этих изменений - обеспечить защиту сайта от атак уровня 7. Входящие атаки будут транслироваться через кэш, а мы будем распределять нагрузку.
Не забудьте установить его следующим образом для административной области вашего сайта wordpress, то есть wp-admin.
Настройки брандмауэра Cloudflare для атак четвертого уровня
Автоматические системы защиты от DDoS-атак Cloudflare постоянно анализируют трафик и генерируют сигнатуры в режиме реального времени, чтобы противостоять атакам на сетевом и прикладном уровнях. Защита от DDoS-атак 4-го уровня активна по умолчанию во всех аккаунтах, включая бесплатный пакет.
Для дополнительных настроек опция "Защита от DDoS-атак на сетевом уровне" на вкладке "Безопасность> DDoS" в левом меню активна по умолчанию.
Настройки брандмауэра Cloudflare для атак 7-го уровня
Для атак 7-го уровня, то есть HTTP GET и производных, достаточно выполнить следующие настройки на cloudflare и установить кэш для всего сайта, и вы не будете подвержены HTTP-атакам в целом, пока не увеличится использование процессора на сервере.
И не забываем включить Always Online:
Повторюсь, пожалуйста, не копируйте данные правила бездумно. Простое копирование данных правил, может заблокировать вам доступ к админке в лучшем случае, а в худшем, нарушить индексацию сайта и удобство пользования для ваших посетителей. В безопасности, всегда нужен баланс. Чтобы получить оптимальный вариант настроек, внимательно изучайте логи как сервера (где у вас расположен сайт, это может быть даже простой хостинг), так и логи Cloudflare. Если есть что добавить или уточнить по существу, пишите в комментариях.
Дополнительные материалы по данной теме, для личного исследования вопроса и борьбы с ботами:
- https://100zona.com/badbot
- https://antibot.cloud/FAQ/cloudflare.html
- https://cleantalk.org/blacklists
- https://community.cloudflare.com/t/top-50-user-agents-to-block/222594/2
- https://vc.ru/seo/359664-voskreshaem-internet-magazin-avtozapchastey-i-delaem-20-mln-rubley-na-seo-trafike
- https://vc.ru/seo/477451-nastraivaem-cloudflare-dlya-filtracii-botov
- https://perishablepress.com/ng-firewall/