← Cloudflare One / cloudflare-one / traffic-policies / dns-policies
Распространённые политики
Следующие DNS-политики Cloudflare Gateway обычно используются для защиты DNS-трафика. Каждый пример включает инструкции как для дашборда, так и для API, которые можно адаптировать под свою организацию.
Базовый набор рекомендуемых политик см. в Защитите свой интернет-трафик и SaaS-приложения.
См. Страница политик DNS для полного списка других селекторов, операторов и действий.
Разрешить корпоративные домены
Эта политика разрешает пользователям доступ к официальным корпоративным доменам. Развернув политику с высоким порядок приоритета, вы обеспечиваете сотрудникам доступ к доверенным доменам, даже если они попадают в заблокированную категорию, например Недавно обнаруженные домены или страницы входа.
| Селектор | Оператор | Значение | Действие | Приоритет |
|---|---|---|---|---|
| Домен | in list | Разрешённые домены | Allow | 1 |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Allow corporate domains",
"description": "Allow any internal corporate domains added to a list",
"precedence": 0,
"enabled": true,
"action": "allow",
"filters": [
"dns"
],
"traffic": "any(dns.domains[*] in $<LIST_UUID>)",
"identity": ""
}'Чтобы получить UUID ваших списков, используйте List Zero Trust lists конечная точка.
Заблокировать угрозы безопасности
Блокировать категории безопасности например Command & Control, Botnet и Malware, на основе аналитики угроз Cloudflare.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Security Categories | in | Все риски безопасности | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "All-DNS-SecurityCategories-Blocklist",
"description": "Block security categories based on Cloudflare'\''s threat intelligence",
"precedence": 20,
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.security_category[*] in {68 178 80 83 176 175 117 131 134 151 153})",
"identity": ""
}'resource "cloudflare_zero_trust_gateway_policy" "block_security_threats" {
account_id = var.cloudflare_account_id
name = "All-DNS-SecurityCategories-Blocklist"
description = "Block security categories based on Cloudflare's threat intelligence"
precedence = 20
enabled = true
action = "block"
filters = ["dns"]
traffic = "any(dns.security_category[*] in {68 178 80 83 176 175 117 131 134 151 153})"
}Заблокировать категории контента
Категории, включенные в эту политику, не всегда представляют угрозу безопасности, но их блокировка может помочь снизить риск, которому подвергается ваша организация. Дополнительную информацию см. в категории доменов.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Content Categories | in | Сомнительный контент, Риски безопасности, Разное | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "All-DNS-ContentCategories-Blocklist",
"description": "Block common content categories that may pose a risk",
"precedence": 30,
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.content_category[*] in {17 85 87 102 157 135 138 180 162 32 169 177 128 15 115 119 124 141 161})",
"identity": ""
}'resource "cloudflare_zero_trust_gateway_policy" "block_content_categories" {
account_id = var.cloudflare_account_id
name = "All-DNS-ContentCategories-Blocklist"
description = "Block common content categories that may pose a risk"
enabled = true
action = "block"
filters = ["dns"]
traffic = "any(dns.content_category[*] in {17 85 87 102 157 135 138 180 162 32 169 177 128 15 115 119 124 141 161})"
identity = ""
}Заблокировать динамический список категорий
Вы можете добавить список ID категорий в EDNS (Extension Mechanisms for DNS) ↗ заголовок запроса, отправленного в Gateway, в виде объекта JSON с использованием OPT-кода 65050. EDNS позволяет прикреплять к DNS-запросу дополнительные метаданные помимо стандартных полей. Например:
{
"categories": [2, 67, 125, 133]
}С Категории контекста запроса селектор, вы можете блокировать идентификаторы категорий, отправляемые с EDNS. Это удобно, если нужно фильтровать по категориям, ещё не известным на момент создания политики, или применять фильтрацию содержимого DNS для конкретных устройств, не расходуя лимит вашей учётной записи. Когда Gateway использует этот селектор для блокировки DNS-запроса, в ответ возвращается расширенная ошибка DNS (EDE) с кодом 15 (Blocked), а также поле, содержащее массив совпавших категорий.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Категория контекста запроса | является | Present | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "All-DNS-Bock-Category-Matches-In-Request",
"description": "Block all category matches in the request EDNS context",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "dns.categories_in_request_context_matches",
"identity": ""
}'resource "cloudflare_zero_trust_gateway_policy" "block_content_categories" {
account_id = var.cloudflare_account_id
name = "All-DNS-Bock-Category-Matches-In-Request"
description = "Block all category matches in the request EDNS context"
enabled = true
action = "block"
filters = ["dns"]
traffic = "dns.categories_in_request_context_matches"
identity = ""
}Заблокировать несанкционированные приложения
Чтобы снизить риск теневой ИТ, некоторые организации предпочитают ограничивать доступ своих пользователей к определённым веб-инструментам и приложениям. Например, следующая политика блокирует известные инструменты ИИ:
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Приложение | in | Искусственный интеллект | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "All-DNS-Application-Blocklist",
"description": "Block access to unauthorized AI applications",
"precedence": 40,
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(app.type.ids[*] in {25})",
"identity": ""
}'resource "cloudflare_zero_trust_gateway_policy" "block_unauthorized_apps" {
account_id = var.cloudflare_account_id
name = "All-DNS-Application-Blocklist"
description = "Block access to unauthorized AI applications"
enabled = true
action = "block"
filters = ["dns"]
traffic = "any(app.type.ids[*] in {25})"
identity = ""
}Заблокировать запрещенные страны
Вы можете создавать политики, блокирующие сайты, размещенные в странах с высоким уровнем риска. Такая классификация стран может определяться требованиями вашей организации или нормативными актами, включая EAR (Export Administration Regulations) ↗, OFAC (Управление по контролю за иностранными активами) ↗, а также ITAR (International Traffic in Arms Regulations) ↗. Эта политика блокирует DNS-запросы, которые разрешаются в IP-адреса, геолокация которых соответствует указанным вами странам.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Геолокация IP по определённой стране | in | Афганистан, Беларусь, Конго (Киншаса), Куба, Иран, Ирак, Корея, Северная, Мьянма, Российская Федерация, Судан, Сирия, Ukraine, Зимбабве | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block banned countries",
"description": "Block access to banned countries",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.dst.geo.country[*] in {\"AF\" \"BY\" \"CD\" \"CU\" \"IR\" \"IQ\" \"KP\" \"MM\" \"RU\" \"SD\" \"SY\" \"UA\" \"ZW\"})",
"identity": ""
}'Заблокировать домены верхнего уровня
Блокировка часто используется неправильно ↗ домены верхнего уровня (TLD): последний сегмент доменного имени, например .com или .ru : может снизить риски безопасности, особенно если разрешение доступа не даёт ощутимых преимуществ. Аналогично, ограничение доступа к национальным доменам верхнего уровня может потребоваться для соблюдения таких нормативных требований, как ITAR ↗ или OFAC ↗.
| Селектор | Оператор | Значение | Логика | Действие |
|---|---|---|---|---|
| Домен | matches regex | [.](cn|ru)$ |
Или | Block |
| Домен | matches regex | [.](rest|hair|top|live|cfd|boats|beauty|mom|skin|okinawa)$ |
Или | |
| Домен | matches regex | [.](zip|mobi)$ |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block top-level domains",
"description": "Block top-level domains that are frequently used for malicious practices",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.domains[*] matches \"[.](cn|ru)$\") or any(dns.domains[*] matches \"[.](rest|hair|top|live|cfd|boats|beauty|mom|skin|okinawa)$\") or any(dns.domains[*] matches \"[.](zip|mobi)$\")",
"identity": ""
}'Заблокировать фишинговые атаки
Чтобы защититься от изощрённые фишинговые атаки ↗, вы могли бы запретить пользователям доступ к фишинговым доменам, нацеленным именно на вашу организацию. Следующая политика блокирует определенные ключевые слова, связанные с организацией или ее сервисами аутентификации (например, okta, 2fa, cloudflare или sso), при этом сохраняя доступ к официальным корпоративным доменам.
| Селектор | Оператор | Значение | Логика | Действие |
|---|---|---|---|---|
| Домен | not in list | Корпоративные домены | И | Block |
| Домен | matches regex | .*okta.*|.*cloudflare.*|.*mfa.*|.sso.* |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block phishing attacks",
"description": "Block attempts to phish specific domains targeting your organization",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "not(any(dns.domains[*] in $<LIST_UUID>)) and any(dns.domains[*] matches \".*okta.*\\|.*cloudflare.*\\|.*mfa.*\\|.sso.*\")",
"identity": ""
}'Чтобы получить UUID ваших списков, используйте List Zero Trust lists конечная точка.
Заблокировать отслеживание в интернете
Чтобы защитить конфиденциальность пользователей, некоторые организации блокируют домены отслеживания, такие как dig.whatsapp.com а также других отслеживающих доменов, встроенных на уровне ОС. Эта политика реализуется путём создания пользовательского списка блокировки. См. этот репозиторий ↗ для списка широко распространенных доменов отслеживания, которые можно добавить в список блокировки.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Домен | in list | Топ отслеживающих доменов | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block online tracking",
"description": "Block domains used for tracking at an OS level",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.domains[*] in $<LIST_UUID>)",
"identity": ""
}'Чтобы получить UUID ваших списков, используйте List Zero Trust lists конечная точка.
Заблокировать вредоносные IP-адреса
Блокируйте конкретные IP-адреса, которые, как известно, являются вредоносными или представляют угрозу для вашей организации. Такая политика обычно реализуется путем создания собственных черных списков или использования списков, предоставленных партнерами по анализу угроз либо региональными группами реагирования на компьютерные инциденты (CERT).
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Определённый IP-адрес | in list | DShield | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block malicious IPs",
"description": "Block specific IP addresses that are known to be malicious or pose a threat to your organization",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.resolved_ips[*] in $<LIST_UUID>)",
"identity": ""
}'Чтобы получить UUID ваших списков, используйте List Zero Trust lists конечная точка.
Включите фильтр CIPA
Фильтр CIPA (Children's Internet Protection Act) представляет собой набор подкатегорий, охватывающих широкий круг тем, которые могут быть вредны или неприемлемы для несовершеннолетних. Он используется в составе Project Cybersafe Schools чтобы заблокировать доступ к нежелательному или вредоносному контенту в интернете. После создания этой политики в вашей организации будет обеспечен минимальный Соответствие требованиям CIPA ↗.
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Content Categories | in | Фильтр CIPA | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Turn on CIPA filter",
"description": "Block access to unwanted or harmful online content for children",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.content_category[*] in {182})",
"identity": ""
}'Скрывать откровенные результаты поиска
SafeSearch представляет собой функцию поисковых систем, которая помогает отфильтровывать откровенный или оскорбительный контент. Вы можете принудительно включить SafeSearch в таких поисковых системах, как Google, Bing, Yandex, YouTube и DuckDuckGo:
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Content Categories | in | Search Engines | Safe Search |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Hide explicit search results",
"description": "Force SafeSearch on search engines to filter explicit or offensive content",
"enabled": true,
"action": "safesearch",
"filters": [
"dns"
],
"traffic": "any(dns.content_category[*] in {145})",
"identity": ""
}'Проверить личность пользователя
Настройте доступ для каждого пользователя или группы, добавив условия на основе идентификации в ваши политики.
| Селектор | Оператор | Значение | Логика | Действие |
|---|---|---|---|---|
| Приложение | in | Salesforce | И | Block |
| User Group Names | in | Contractors |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Check user identity",
"description": "Filter traffic based on a user identity group name",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(app.ids[*] in {606})",
"identity": "any(identity.groups.name[*] in {\"Contractors\"})"
}'Ограничьте доступ конкретными группами
Фильтруйте DNS-запросы, чтобы разрешить доступ только определённым пользователям.
Следующий пример включает две политики. Первая политика разрешает доступ указанной группе, а вторая блокирует всех остальных пользователей. Чтобы политики оценивались корректно, разместите политику Allow выше политики Block. Дополнительную информацию см. в порядок приоритета.
1. Разрешите группу
| Селектор | Оператор | Значение | Логика | Действие |
|---|---|---|---|---|
| Content Categories | in | Социальные сети | И | Allow |
| User Group Names | in | Marketing |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Allow social media for Marketing",
"description": "Allow access to social media sites for users in the Marketing group",
"precedence": 1,
"enabled": true,
"action": "allow",
"filters": [
"dns"
],
"traffic": "any(dns.content_category[*] in {149})",
"identity": "any(identity.groups.name[*] in {\"Marketing\"})"
}'2. Заблокируйте всех остальных пользователей
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Content Categories | in | Социальные сети | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block social media",
"description": "Block social media for all other users",
"precedence": 2,
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "any(dns.content_category[*] in {149})",
"identity": ""
}'Управление версией IP
Пользователи с планом Enterprise могут сочетать эти политики с Политика Egress чтобы управлять тем, какая версия IP используется при подключении Gateway к серверу назначения.
При необходимости можно использовать селектор Domain, чтобы управлять версией IP-протокола для отдельных сайтов.
Принудительный IPv4
Принудительно переводить пользователей на IPv4, блокируя AAAA (разрешение записи IPv6).
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Тип записи запроса | является | AAAA | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Force IPv4",
"description": "Force users to connect with IPv4 by blocking IPv6 resolution",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "dns.query_rtype == \"AAAA\"",
"identity": ""
}'Принудительный IPv6
Принудительно переводить пользователей на IPv6, блокируя A (разрешение записи IPv4).
| Селектор | Оператор | Значение | Действие |
|---|---|---|---|
| Тип записи запроса | является | A | Block |
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Force IPv6",
"description": "Force users to connect with IPv6 by blocking IPv4 resolution",
"enabled": true,
"action": "block",
"filters": [
"dns"
],
"traffic": "dns.query_rtype == \"A\"",
"identity": ""
}'