Глава 42. Примеры типовых политик¶
В этой главе приведены готовые к использованию политики для типовых корпоративных сценариев. Все примеры используют актуальные имена условий и действий Redcoat.
41.1. Корпоративная политика (whitelist-модель)¶
Модель «всё запрещено, разрешено только явно указанное». Подходит для организаций с высокими требованиями к безопасности.
; ============================================================
; Корпоративная политика: whitelist-модель
; Всё запрещено по умолчанию, разрешены только бизнес-ресурсы
; ============================================================
define category business_allowed
"Business and Economy"
"Information Technology"
"Search Engines"
"Reference"
"Government"
end
define url.domain always_allowed
*.corp.example.com
*.internal.example.com
login.microsoftonline.com
*.office365.com
*.office.com
*.sharepoint.com
*.teams.microsoft.com
end
define url.domain health_endpoints
/health
/healthz
/ready
/ping
end
<Proxy>
; Служебные эндпоинты — без аутентификации
url.path=health_endpoints authenticate(no) allow
; Требовать аутентификацию для всех
authenticate(LDAP_Corp)
<Proxy>
; Внутренние ресурсы — всегда разрешены
url.domain=always_allowed allow
; Разрешённые бизнес-категории
category=business_allowed allow
; Всё остальное — запрет с объяснением
deny
41.2. SSL-инспекция с исключениями (банки, медицина, госуслуги)¶
Политика SSL-инспекции, исключающая чувствительные категории трафика из перехвата. Банковские, медицинские и государственные сайты не инспектируются для защиты конфиденциальных данных.
; ============================================================
; SSL-инспекция: перехват всего кроме чувствительных категорий
; ============================================================
define url.domain ssl_bypass_domains
; Банки
*.sberbank.ru
*.tinkoff.ru
*.vtb.ru
*.alfabank.ru
*.raiffeisen.ru
; Госуслуги
*.gosuslugi.ru
*.gov.ru
*.nalog.gov.ru
; Платёжные системы
*.visa.com
*.mastercard.com
*.paypal.com
; Медицина
*.emias.info
*.mos.ru/health
end
define category ssl_bypass_categories
"Financial Services"
"Health and Medicine"
"Government"
end
<SSL-Intercept>
; Домены из списка исключений — не перехватывать
url.domain=ssl_bypass_domains ssl.forward_proxy(no)
; Категории, защищённые от инспекции
category=ssl_bypass_categories ssl.forward_proxy(no)
; Сайты с certificate pinning — не перехватывать (будет ошибка)
url.domain=*.apple.com ssl.forward_proxy(no)
url.domain=*.google.com ssl.forward_proxy(no)
; Всё остальное — перехватывать для инспекции
ssl.forward_proxy(yes)
<SSL>
; Блокировать устаревшие/слабые сертификаты
ssl.block_expired_cert(yes)
ssl.min_key_size(2048)
41.3. Аутентификация с группами (LDAP/Active Directory)¶
Многоуровневая политика с разными правами для групп AD. Администраторы имеют полный доступ, сотрудники — ограниченный, гости — только бизнес-ресурсы.
; ============================================================
; Аутентификация: LDAP с группами AD
; ============================================================
define category restricted_for_employees
Gambling
"Social Networking"
"Adult Content"
Games
"Streaming Media"
end
define url.domain admin_panels
admin.example.com
console.example.com
*.grafana.internal
*.kibana.internal
end
<Proxy>
; Health check без аутентификации
url.path=/health authenticate(no) allow
; Внутренний мониторинг — без аутентификации
client.address=10.0.0.0/8 url.path=/metrics authenticate(no) allow
; Требовать аутентификацию для всего остального
authenticate(LDAP_Corp)
<Proxy>
; ---- Администраторы IT ----
; Полный доступ ко всему
group=IT_Admins allow
; ---- Руководство ----
; Полный доступ, но с логированием
group=Management log(yes) access_log(mgmt_log) allow
; ---- Рядовые сотрудники ----
; Блокировка нежелательных категорий
group=Employees category=restricted_for_employees deny
; Блокировка admin-панелей
group=Employees url.domain=admin_panels deny
; Ограничение размера загрузки (50 МБ)
group=Employees http.request.body.size=52428800.. deny
; Остальное — разрешить
group=Employees allow
; ---- Гости (Wi-Fi) ----
; Только бизнес-ресурсы и поисковики
group=Guests category="Business and Economy" allow
group=Guests category="Search Engines" allow
group=Guests deny
; ---- Все остальные — запрет ----
deny
41.4. Геоблокировка¶
Блокировка трафика по географическому расположению целевого сервера. Используется для соблюдения санкционных режимов и внутренних политик.
; ============================================================
; Геоблокировка: санкционные страны + ограничения по регионам
; ============================================================
<Proxy>
; Абсолютный запрет: санкционные страны (без Exception)
geo.dst.country=(KP, IR, SY, CU) force_deny
; Логирование трафика в необычные юрисдикции
geo.dst.country=(CN, RU) log(yes) access_log(geo_audit) label=unusual_geo
allow
<DNS-Proxy>
; Sinkhole для доменов в санкционных зонах
geo.dst.country=(KP, IR, SY) dns.respond(nxdomain)
allow
Пример: только российский и СНГ трафик
define condition cis_countries
geo.dst.country=(RU, BY, KZ, AM, KG, UZ, TJ, MD, AZ)
end
<Proxy>
; Разрешить СНГ
condition=cis_countries allow
; Запретить остальные
deny
41.5. Rate limiting по типам пользователей¶
Дифференцированное ограничение частоты запросов в зависимости от типа клиента и уровня аутентификации.
; ============================================================
; Rate limiting: разные лимиты для разных категорий пользователей
; ============================================================
<Proxy>
; Внутренние сервисы — без лимитов
client.address=10.0.0.0/8 allow
; Боты и краулеры — жёсткий лимит
client.is_bot=yes rate_limit(10, minute)
; Мобильные устройства — умеренный лимит
client.is_mobile=yes rate_limit(120, minute)
; Аутентифицированные пользователи — мягкий лимит
authenticated=yes rate_limit(300, minute)
; Неаутентифицированные — строгий лимит
authenticated=no rate_limit(30, minute)
allow
41.6. Forwarding через upstream-прокси и SOCKS-шлюзы¶
Маршрутизация трафика через разные upstream-прокси в зависимости от назначения.
; ============================================================
; Forwarding: маршрутизация через upstream и SOCKS
; ============================================================
define url.domain internal_domains
*.corp.example.com
*.internal.example.com
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
end
define url.domain cloud_services
*.amazonaws.com
*.azure.com
*.googleapis.com
*.cloudflare.com
end
<Forward>
; Внутренние ресурсы — прямое соединение
url.domain=internal_domains direct
; Облачные сервисы — через региональный прокси
url.domain=cloud_services forward(cloud-proxy.corp:3128)
; .onion — через SOCKS5 (Tor)
url.domain=*.onion socks_gateway(tor-proxy.corp, 9050, 5)
; Весь остальной трафик — через основной upstream с failover
forward(proxy-primary.corp:3128) forward.fail_open(yes)
41.7. DNS-фильтрация (sinkhole, blacklist)¶
Политика DNS-прокси для блокировки вредоносных доменов, рекламных трекеров и перенаправления внутренних сервисов.
; ============================================================
; DNS-фильтрация: sinkhole + blacklist + перенаправления
; ============================================================
define url.domain dns_malware
malware-c2.example.com
botnet-controller.example.net
cryptominer-pool.example.org
ransomware-callback.example.com
end
define url.domain dns_ads
*.doubleclick.net
*.googlesyndication.com
*.adservice.google.com
*.facebook.com/tr
*.analytics.yahoo.com
end
<DNS-Proxy>
; Блокировка вредоносных доменов — NXDOMAIN
dns.request.name=dns_malware dns.respond(nxdomain)
; Sinkhole для рекламных трекеров — перенаправление на localhost
dns.request.name=dns_ads dns.respond.a(127.0.0.1)
; Блокировка DNS amplification атак
dns.request.type=ANY dns.respond(refused)
; Внутренний портал — перенаправление на реальный IP
dns.request.name=portal.corp.example.com dns.respond.a(10.0.1.100)
dns.request.name=wiki.corp.example.com dns.respond.a(10.0.1.101)
; Перенаправление IPv6-запросов для внутренних сервисов
dns.request.name=mail.corp.example.com dns.respond.aaaa(fd00::10:0:1:25)
allow
41.8. Логирование с кастомными полями¶
Расширенное логирование для аудита, соответствия требованиям и отладки.
; ============================================================
; Логирование: аудит, compliance, отладка
; ============================================================
<Proxy>
; Аудит доступа к admin-панелям
url.path=/admin log(yes) access_log(audit_log) label=admin_access
; Аудит загрузок файлов
http.method=POST url.path=/upload log(yes) access_log(upload_log) label=file_upload
; Логирование всех DELETE-запросов
http.method=DELETE log(yes) access_log(audit_log) label=delete_action
; Подавление PII в обычных логах
log.suppress.user
log.suppress.client_address
; Перезапись поля category для внутреннего трафика
url.host.is_private=yes log.rewrite.category="internal"
allow
41.9. Контроль загрузки файлов (расширения + размер)¶
Политика ограничения загрузки потенциально опасных файлов и контроля размера.
; ============================================================
; Контроль загрузки: опасные расширения + ограничение размера
; ============================================================
define url.extension dangerous_extensions
exe
msi
bat
cmd
ps1
vbs
js
wsf
scr
dll
sys
com
pif
hta
end
define url.extension archive_extensions
zip
rar
7z
tar
gz
bz2
iso
img
end
<Proxy>
; Блокировка скачивания опасных расширений
url.extension=dangerous_extensions deny
; Архивы — только для IT-отдела
url.extension=archive_extensions group!=IT_Staff deny
; Ограничение размера загружаемого тела (100 МБ)
http.method=(POST, PUT) http.request.body.size=104857600.. deny
; Ограничение размера для обычных пользователей (20 МБ)
http.method=(POST, PUT) group!=IT_Staff http.request.body.size=20971520.. deny
allow
41.10. Временные ограничения (рабочее время)¶
Политики с ограничением по времени суток и дням недели.
; ============================================================
; Временные ограничения: рабочее vs нерабочее время
; ============================================================
define category entertainment
"Social Networking"
"Streaming Media"
Games
"Online Shopping"
"News and Media"
end
<Proxy>
; В рабочее время (пн-пт, 9:00-18:00) — блокировка развлечений
weekday=(1,2,3,4,5) hour=9..17 category=entertainment deny
; Обеденный перерыв (13:00-14:00) — разрешить соцсети
weekday=(1,2,3,4,5) hour=13 category="Social Networking" allow
; В выходные — полный доступ
weekday=(6,7) allow
; В нерабочее время (после 18:00 и до 9:00) — мягкие ограничения
category="Adult Content" deny
category=Malware deny
allow