Что такое сетевая сегментация и зачем она нужна?
Сетевая сегментация — разделение сети на изолированные сегменты (подсети), между которыми трафик контролируется файрволами и маршрутизаторами. Это фундаментальный принцип безопасности, ограничивающий распространение атаки при компрометации одного сегмента.
Зачем нужна сегментация
- Ограничение blast radius — при компрометации одного сервиса злоумышленник не получает доступ ко всей сети
- Соответствие PCI DSS — данные карт должны обрабатываться в изолированном сегменте (CDE)
- Разграничение сред — production, staging, development изолированы друг от друга
- Контроль трафика — легче отслеживать и фильтровать подозрительный трафик
VLAN (Virtual LAN)
VLAN позволяет разделить физическую сеть на логические сегменты на уровне коммутатора (L2):
Пример
┌────────── VLAN 10: Серверы приложений ──────────┐
│ 10.0.10.0/24 │
│ payment-service account-service auth-service │
└──────────────────────────────────────────────────┘
┌────────── VLAN 20: Базы данных ─────────────────┐
│ 10.0.20.0/24 │
│ postgresql-master postgresql-replica redis │
└──────────────────────────────────────────────────┘
┌────────── VLAN 30: Управление ──────────────────┐
│ 10.0.30.0/24 │
│ monitoring logging ci-cd bastion-host │
└──────────────────────────────────────────────────┘
┌────────── VLAN 40: DMZ ─────────────────────────┐
│ 10.0.40.0/24 │
│ nginx api-gateway waf │
└──────────────────────────────────────────────────┘
Подсети (Subnetting)
Пример
# Пример структуры подсетей
10.0.0.0/16 # Общая сеть
10.0.10.0/24 # Серверы приложений (production)
10.0.20.0/24 # Базы данных (production)
10.0.30.0/24 # Управление и мониторинг
10.0.40.0/24 # DMZ
10.0.50.0/24 # Kafka, RabbitMQ (message brokers)
10.0.100.0/24 # Staging
10.0.200.0/24 # Development
Правила маршрутизации между сегментами
Пример
# Серверы приложений могут обращаться к БД
iptables -A FORWARD -s 10.0.10.0/24 -d 10.0.20.0/24 -p tcp --dport 5432 -j ACCEPT
# DMZ может обращаться к серверам приложений
iptables -A FORWARD -s 10.0.40.0/24 -d 10.0.10.0/24 -p tcp --dport 8080 -j ACCEPT
# DMZ НЕ может обращаться к БД напрямую
iptables -A FORWARD -s 10.0.40.0/24 -d 10.0.20.0/24 -j DROP
# Development НЕ может обращаться к production
iptables -A FORWARD -s 10.0.200.0/24 -d 10.0.10.0/24 -j DROP
Сегментация в Kubernetes
В Kubernetes сегментация реализуется через:
- Namespaces — логическое разделение
- NetworkPolicy — контроль трафика между подами
- Service Mesh — дополнительный уровень контроля
Пример
apiVersion: v1
kind: Namespace
metadata:
name: payment
labels:
environment: production
pci-scope: "true"
Матрица доступа (пример)
| Источник \ Назначение | DMZ | App Servers | Databases | Monitoring | Dev |
|---|---|---|---|---|---|
| Интернет | 80,443 | - | - | - | - |
| DMZ | - | 8080 | - | - | - |
| App Servers | - | - | 5432,6379 | 9090 | - |
| Monitoring | ICMP | ICMP,9090 | ICMP,9090 | - | - |
| Dev | - | - | - | - | Все |
Сетевая сегментация — обязательное требование стандартов PCI DSS, ГОСТ Р 57580 и рекомендаций ЦБ РФ. Java-разработчик должен понимать, в каком сегменте работает его приложение и к каким ресурсам оно имеет доступ.
На собеседовании: интервьюер ожидает понимание VLAN, подсетей и принципа «blast radius». Частая ошибка — не упомянуть матрицу доступа между сегментами и не связать сегментацию с PCI DSS.