Перейти к содержанию

Глава 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