Как организовать безопасность, оставив сервер в DMZ?

«Как организовать безопасность, оставив сервер в DMZ?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Размещение сервера в DMZ (демилитаризованной зоне) — стандартная практика для изоляции публично доступных сервисов. Вот как мы это реализуем в инфраструктуре на AWS:

Архитектура и реализация:

  1. Сетевая сегментация: Используем VPC с публичными и приватными подсетями. Сервер в DMZ размещается в публичной подсети. Доступ к внутренним ресурсам (базы данных, бэкенд-сервисы) разрешен только из приватных подсетей через NAT Gateway или VPC Endpoints.

  2. Строгие правила Security Groups и NACL:

    • Security Group (SG) сервера в DMZ: Разрешаем входящий трафик только на необходимые порты (например, 443/TCP от 0.0.0.0/0 для HTTPS) и исходящий — только в конкретные приватные подсети на специфичные порты БД или бэкенда.
    • Network ACL (NACL) публичной подсети: Добавляем deny-правила для блокировки нежелательных IP-адресов или протоколов на уровне подсети.
  3. Защита на уровне приложения: Перед сервером в DMZ ставим WAF (AWS WAF или Cloudflare) для защиты от OWASP Top-10 уязвимостей. Все публичные эндпоинты проходят через него.

  4. Безопасный доступ для администрирования: Прямой SSH/RDP доступ из интернета запрещен. Администрирование возможно только через:

    • Bastion Host (Jump Server) в отдельной управляемой подсети.
    • SSH-сессии через Systems Manager Session Manager (в AWS), который не требует открытых входящих портов и логирует все действия.
  5. Всесторонний мониторинг: Настраиваем поток логов (VPC Flow Logs, журналы WAF, логи ОС) в централизованную SIEM-систему (например, Splunk или ELK) для обнаружения аномалий и быстрого реагирования на инциденты.