Что такое атака «Man-in-the-Middle» (MITM)?

«Что такое атака «Man-in-the-Middle» (MITM)?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Атака "Человек посередине" (Man-in-the-Middle, MITM) — это когда злоумышленник тайно перехватывает и, возможно, изменяет коммуникацию между двумя сторонами, которые считают, что общаются напрямую друг с другом.

Как это выглядит в инфраструктуре:

  1. Перехват трафика: Атакующий позиционирует себя между клиентом (например, разработчиком) и сервером (например, внутренним API).
  2. Пример сценария:
    • Разработчик в кафе подключается к поддельному Wi-Fi "Free_Cafe", который контролирует атакующий.
    • Разработчик пытается зайти на https://internal.company.com. Его DNS-запрос перехватывается, и ему подсовывается IP-адрес сервера атакующего.
    • Сервер атакующего представляет поддельный сертификат для internal.company.com, устанавливает TLS-соединение с разработчиком, а затем самостоятельно устанавливает отдельное TLS-соединение с реальным сервером.
    • Весь трафик (включая логины и токены) теперь проходит через машину атакующего в расшифрованном виде.

Меры защиты, которые мы внедряем в DevOps:

  • Принудительное использование TLS (HTTPS) везде: Конфигурация веб-серверов и балансировщиков с редиректом с HTTP на HTTPS. Использование HSTS-заголовков.
    server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name$request_uri;
    }
  • Строгая проверка сертификатов: Отключение проверок, подобных curl -k или verify=False в скриптах, в production-среде. Использование внутренних PKI и доверенных CA.
  • Certificate Pinning: Для критичных мобильных приложений или клиентов можно "зашить" отпечаток (fingerprint) ожидаемого сертификата сервера.
  • Защита на уровне сети:
    • VPN (WireGuard, OpenVPN): Для доступа к производственной среде, шифруя весь трафик до точки входа.
    • Zero Trust Network Access (ZTNA): Решения, где доступ предоставляется не на основе сетевого периметра, а на основе идентификации пользователя/устройства и контекста.
  • Мониторинг и обнаружение: Анализ сетевого трафика на предмет аномалий, таких как неожиданные изменения в TLS-параметрах или появление самоподписанных сертификатов в потоке данных.

Проверка сертификата с помощью OpenSSL (базовый аудит):

# Проверка цепочки и дат действия сертификата удаленного сервера
openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null | openssl x509 -noout -dates -issuer -subject

# Проверка отзыва сертификата (OCSP)
openssl s_client -connect example.com:443 -status < /dev/null 2>&1 | grep -A 17 "OCSP response"