GH GambleHub

Firewall политики и ACL

1) Цели и принципы

Firewall/ACL — это контроль плоскости данных: кто, куда, когда и по какому протоколу ходит. Базовые принципы:
  • Least privilege: разрешать только необходимое (явные allow, implicit deny).
  • Segmentation: изоляция окружений (prod/stage/dev), тенантов, критичных контуров (PCI/KMS/DB).
  • Egress-контроль: исходящий трафик ограничен списками FQDN/IP и приватными endpoint’ами.
  • Identity-aware (L7): решения принимаются по аутентифицированной сущности (SPIFFE/OIDC), а не только по IP.
  • Infrastructure as Code: правила как код, review/CI/CD, аудит изменений.

2) Таксономия: где и что фильтруем

2.1 Слои и состояние

L3/L4 stateless: классические ACL (CIDR, протокол, порт).
L3/L4 stateful: security groups/NSG, отслеживают соединения.
L7-aware: proxy/WAF/mesh RBAC (методы, пути, JWT-claims, SNI).
Inline vs out-of-band: инлайн-фаервол маршрутизирует трафик; out-of-band — анализ/alert.

2.2 Контуры

Perimeter: edge/WAF/Anti-DDoS.
Core: transit hub / меж-VPC/VNet.
Workload: SG/NSG на VM/ENI/POD.
App-level: Envoy/Istio/NGINX policy, service-to-service mTLS.

3) Облачные модели

AWS

Security Group (SG): stateful на ENI/instance/LB.
Network ACL (NACL): stateless на подсети, порядок правил, двунаправленные записи.
AWS Network Firewall/GWLB: L7 инспекция/IDS.
Рекомендация: «SG — основной контроль, NACL — крупнозернистое ограждение/deny-лист».

Azure

NSG (stateful), ASG (группы приложений по тегам), Azure FW для L7/IDS, Private Endpoints.
Рекомендация: NSG на сабнет + NIC, теги сервисов через ASG.

GCP

VPC Firewall Rules (stateful), Hierarchical FW (организационные/папочные), Cloud Armor (L7), Private Service Connect.
Рекомендация: org-level guardrails + проектные allow.

4) Дизайн правил: паттерны

4.1 Базовые наборы

Deny all egress → разрешаем по FQDN/IP к: пакетным репозиториям, артефакт-регистрам, сторонним API (через приватные/фиксированные выходы).
East-West минимум: сервисы общаются только с необходимыми зависимостями.
Admin доступ: через bastion/JIT с MFA, запись сессий.

4.2 Тэги и группы

Используйте labels/tags вместо IP: `env`, `service`, `tier`, `tenant`, `pci=true`.
Обновление политики при изменении тега — без ручного редактирования IP-сеток.

4.3 Жизненный цикл

Propose → Evaluate (staging) → Enforce (prod), с dry-run/логами попаданий.
Устаревание: TTL/owner для каждого правила, автопроверка неиспользуемых.

5) Kubernetes и сервис-меш

5.1 NetworkPolicy (L3/L4)

Минимум — «запретить все, кроме нужного».

yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata: { name: deny-all, namespace: core }
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
kind: NetworkPolicy metadata: { name: api-egress }
spec:
podSelector: { matchLabels: { app: api } }
egress:
- to:
- namespaceSelector: { matchLabels: { ns: db } }
ports: [{ protocol: TCP, port: 5432 }]
- to:
- ipBlock: { cidr: 10. 100. 0. 0/16 } # Private endpoints ports: [{ protocol: TCP, port: 443 }]

5.2 L7 RBAC в mesh (Istio/Envoy)

mTLS + авторизация по JWT/claims/scopes/paths.

yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy metadata: { name: api-rbac }
spec:
selector: { matchLabels: { app: api } }
rules:
- from:
- source:
principals: ["spiffe://svc. payments"]
to:
- operation: { methods: ["POST"], paths: ["/v1/payouts"] }
when:
- key: request. headers[x-tenant]
values: ["eu-1","eu-2"]

6) Egress-контроль и приватные периметры

Предпочитайте PrivateLink/Private Service Connect к PaaS/регистрам/хранилищам.
Остальной egress через NAT/прокси с allowlist FQDN и фиксированными IP (для сторонних allowlist).
Блокируйте прямой выход подов/VM в интернет; исключения только через egress-шлюз.

7) DNS и SNI-осознанные правила

Split-horizon: внутренние зоны не резолвятся снаружи.
FW/Proxy c поддержкой FQDN/SNI для исходящих HTTPS (SNI allow).
Зафиксируйте pinning на конкретные домены поставщиков; мониторьте изменения их IP.

8) Логи, аудит, наблюдаемость

Включите flow logs (VPC/VNet/NSG/NACL), отправляйте в SIEM.
Коррелируйте с приложениями через `trace_id` в логах.
Метрики: hit/miss правил, top-talkers, drop-rates, асимметрия трафика, «утечки egress».
Отчеты: «неиспользуемые правила», «самые широкие разрешения».

9) Управление как кодом (IaC) и проверки

Terraform/CloudFormation + модульные политики по шаблонам.
Policy as Code (OPA/Gatekeeper/Conftest): запрет на `0.0.0.0/0`, требование `description/owner/ttl`, запрет смешивания prod/dev.
CI: линт, статанализ, симуляторы достижимости (reachability analyzer), план-просмотр, мандатное peer review.

10) Тестирование достижимости и хаос

Synthetic-пробы из разных подсетей/AZ/регионов: TCP/443, специфичные порты БД/брокеров.
Временной deny для проверки DR-путей: отключение зависимости → должны сработать retries/circuit/fallback.
MTU/MSS: убедитесь в отсутствии фрагментации на perimeters (особенно IPsec/NAT-T).

11) Производительность и надежность

Избегайте централизованного узкого места: горизонтально масштабируйте inline-FW (GWLB/scale sets).
ECMP/AS-path/BGP для распределения между хабами.
Профили TLS-инспекции: включать точечно (дорого), хранить отпечатки ключей отдельно, соблюдать комплаенс.

12) Примеры конфигов (референсы, укороченные)

12.1 AWS SG: API → Postgres + S3 PrivateLink

hcl resource "aws_security_group" "api" {
name    = "sg-api"
description = "Ingress from ALB, egress to DB and PrivateLink"
vpc_id   = var. vpc_id

ingress { from_port=8080 to_port=8080 protocol="tcp" security_groups=[aws_security_group. alb. id] }
egress { from_port=5432 to_port=5432 protocol="tcp" security_groups=[aws_security_group. db. id] }
egress { from_port=443 to_port=443 protocol="tcp" prefix_list_ids=[aws_vpc_endpoint. s3. prefix_list_id] }
tags = { owner="team-api", env=var. env, ttl="2026-01-01" }
}

12.2 Azure NSG: deny-by-default + allow bastion

bash az network nsg rule create -g rg -n allow-bastion --nsg-name nsg-app \
--priority 100 --direction Inbound --access Allow --protocol Tcp \
--source-address-prefixes 10. 0. 0. 10 --source-port-ranges "" \
--destination-port-ranges 22 --destination-address-prefixes 10. 1. 0. 0/16

12.3 GCP hierarchical firewall: org-guardrail

yaml direction: INGRESS priority: 1000 action: deny enableLogging: true match:
layer4Configs: [{ ipProtocol: "all" }]
srcIpRanges: ["0. 0. 0. 0/0"]
targetResources: ["organizations/123456"]

12.4 Envoy RBAC (L7 allow)

yaml
- name: envoy. filters. http. rbac typed_config:
rules:
action: ALLOW policies:
payments-post:
permissions: [{ url_path: { path: "/v1/payouts", ignore_case: true } }]
principals: [{ authenticated: { principal_name: { exact: "spiffe://svc. payments" } } }]

13) Антипаттерны

`0.0.0.0/0` в ingress/egress «временно» → остается навсегда.
«Снежинки» (ручные правки в консоли) без кода и ревизии.
Общие SG/NSG для prod/stage/dev; смешение критичных и некритичных подсетей.
Отсутствие egress-контроля и приватных endpoint’ов → утечки ключей/секретов наружу.
Игнорирование DNS/SNI: разрешили IP поставщика — завтра он сменился и открылся весь диапазон.
Нет flow logs и runbook’ов → форензика невозможна.

14) Специфика iGaming/финансов (PCI/регуляторика)

PCI CDE в отдельном VRF/сегменте, никакого интернета; доступ к PSP/логам — через private connectivity/прокси с mTLS и HMAC.
Data residency: PII/платежные события — внутри страны/региона; межрегионально — только агрегаты/аноним.
KMS/Vault/HSM: отдельные подсети/SG, только mTLS-клиенты с короткими сертификатами.
WORM-аудит: логи FW/flow в неизменяемом хранилище (Object Lock), ретеншн ≥ регуляторного минимума.
Партнеры (PSP/KYC): FQDN allowlist, статичные egress IP, мониторинг SLA по провайдерам.

15) Чек-лист prod-готовности

  • Единая модель сегментации (hub-and-spoke, VRF), CIDR без пересечений.
  • Deny-by-default на egress; приватные endpoints к PaaS/хранилищам.
  • SG/NSG stateful для workload, NACL/route-filters — на подсети/хабы.
  • K8s: NetworkPolicy «deny-all», mesh mTLS + L7 RBAC.
  • Теги/группы вместо IP; owner/TTL/description у каждого правила.
  • IaC + Policy-as-Code; CI с симуляцией достижимости; обязательный peer review.
  • Flow logs включены; дашборды top-talkers, drop-rates; алерты на «утечку egress».
  • Bastion/JIT для админ-доступа; MFA; журналирование сессий.
  • Runbook’и: как добавлять/снимать правило, как работать при инциденте; регулярные ревизии «мертвых» правил.
  • Для PCI/финансов: изоляция CDE, WORM-аудит, FQDN-allow для PSP/KYC, статичные egress IP.

16) TL;DR

Стройте защиту по слоям: SG/NSG stateful на ворклоадах, NACL/route-filters на подсетях, L7 RBAC в mesh/прокси, WAF/edge на периметре. По умолчанию — deny-by-default, egress только через контролируемые точки или private endpoints. Описывайте правила как код, проверяйте их политиками и симуляторами достижимости, собирайте flow-логи. Для iGaming/финансов добавьте PCI-сегментацию, WORM-аудит и строгий FQDN-allow к PSP/KYC.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.