Материал
Объяснение работы прокси-сервера TLS Termination Proxy: Что это такое и как это работает?

Протокол TLS: Значение и принцип работы TLS
Значение
Интернет основан на обмене и обработке данных. Для корректной обработки и обмена компьютеры используют наборы правил в соответствии с общими стандартами. Эти правила называются сетевыми протоколами. Сетевые протоколы объясняют компьютерам во Всемирной паутине, как общаться друг с другом.
TLS (Transport Layer Security) - это шифрованный протокол для безопасного выполнения операций с данными. В 1999 году организация IETF (Internet Engineering Task Force) выпустила первую версию TLS в качестве обновления стандарта SSL 3.0.
SSL Изначально стандарт был изобретением компании Netscape Corp. и предназначался для защиты незашифрованного уязвимого протокола передачи гипертекста HTTP.
В 2015 году стандарт SSL был признан устаревшим. Позже TLS практически полностью заменил SSL. В 2022 году TLS 1.3 станет самым современным и передовым протоколом безопасности.
TLS в модели OSI

OSI (Open Systems Interconnection) дает первое приближение к области применения протокола.
Простой протокол может относиться к одному уровню OSI. Сложные протоколы имеют различные характеристики, поэтому они одновременно принадлежат к разным уровням OSI.
TLS обладает свойствами четырех уровней: приложения, представления, сеанса и передачи.
Прикладной уровень: взаимодействие с приложениями, ориентированными на пользователя.
Транспортный уровень: транзакция данных.
Уровень представления: шифрование.
Возобновление сеанса на уровне сеанса.
Принцип работы TLS
HTTP - основной протокол передачи данных в Интернете. Изначально небезопасный, он стал безопасным для использования благодаря шифрованию SSL/TLS.
TLS работает как дополнение к HTTP, обеспечивающее безопасность шифрования. Он задает правила соединения и вызывает криптографические системы для защиты соединения. Модернизированная версия HTTP широко известна как HTTPS.
TLS ставит перед собой три основные цели обеспечения безопасности:
Конфиденциальность
Целостность
Безопасная аутентификация
Реализация этих целей составляет суть принципов работы TLS.
Конфиденциальность
Защита конфиденциальности - это совокупность действий, направленных на предотвращение нежелательного доступа к информации.
Пример системы без защиты конфиденциальности:

1. Пользователь хочет войти на сайт банка.
2. Пользователь подключается к банковскому серверу с помощью клиентской машины.
3. Клиент отправляет сообщение с банковскими реквизитами.
4. Сервер проверяет логин и пароль и пропускает пользователя.
Конфиденциальность находится под угрозой! Злоумышленник ("человек посередине") может перехватить сообщение и прочитать его содержимое.
Пример системы с простым симметричным шифрованием:

Клиент отправляет на сервер сообщение с банковскими реквизитами. При этом клиент перед отправкой шифрует сообщение с помощью ключа. Эту задачу человеку посередине решить сложнее, но перехватить сообщение и расшифровать его содержимое все же возможно.
Безопасное шифрование TLS
В протоколе TLS используется более надежный асимметричный тип шифрования. Он запускает процесс взаимной проверки между клиентом и сервером. Этот процесс называется рукопожатием. Протокол может вызывать различные алгоритмы для выполнения рукопожатия, но наиболее популярными являются алгоритмы RSA и Диффи-Хеллмана. Это упрощенный пример рукопожатия RSA.
Для каждого соединения сервер хранит не один, а два ключа: открытый и закрытый. Любой желающий может просмотреть открытый ключ. Однако сообщение, зашифрованное с помощью этого ключа, может быть расшифровано только с помощью закрытого ключа. Сервер хранит этот закрытый ключ и никому его не передает.

1. Клиент подключается к серверу и запрашивает защищенное соединение.
2. Сервер отвечает и отправляет открытый ключ клиенту.
3. Клиент шифрует данные с помощью этого ключа и отправляет их обратно. Даже если злоумышленники перехватят сообщение, они не смогут расшифровать его без закрытого ключа.
4. Сервер получает сообщение и расшифровывает его с помощью закрытого ключа.
Целостность
Защита целостности данных - это комплекс мер по сохранению информации в неизменном виде. Основная цель - не допустить искажения информации из-за сбоев в работе системы.
Для достижения целостности в TLS используются симметричные хэш-функции (MD5, SHA и др.):
1. Клиент преобразует массив данных в зашифрованную строку и получает хэш.
2. Клиент отправляет данные и хэши, упакованные вместе.
3. Сервер получает и извлекает данные и хэш. Он снова преобразует данные в хэш и сравнивает полученный хэш с недавно полученным хэшем. Если они не совпадают, это означает, что сообщение повреждено.
Аутентификация
Под защитой аутентификации понимается проверка подлинности. Например, клиент подключается к банку. Человек посередине перенаправляет клиента на аналогичный сайт, чтобы похитить его учетные данные.
Цифровые сертификаты позволяют проверить, является ли сервер доверенным. Сервер может сертифицировать свой открытый ключ в доверенных организациях, называемых центрами сертификации (CA). Это такие компании, как IdenTrust, DigiCert и GoDaddy. Они сертифицируют открытый ключ с помощью сертификата корневого центра сертификации. Когда клиентская машина подключается к серверу и получает ключ, она обращается к CA с вопросом: является ли этот ключ подлинным? Если ключ не сертифицирован, CA блокирует соединение.
TLS Proxy: Что это такое и как это работает
Что такое прокси?

Прокси-сервер - это посредник между клиентом и сервером. Весь трафик проходит через посредника. Преимущества соединения через точку-посредник заключаются в следующем:
Балансировка нагрузки
Сокрытие личности
Защита от вторжений, слежения и вредоносного ПО
Фильтрация трафика
Экономия полосы пропускания
Принцип работы TLS-прокси
TLS-прокси для Windows, Mac или Linux - это способ управления HTTPS-трафиком. Он работает как сервер-посредник, подобно другим прокси-серверам. Отличие заключается в том, что он работает внутри HTTPS-туннеля, который защищает информацию с помощью алгоритма рукопожатия. Таким образом, этот посредник должен участвовать в обмене зашифрованными данными.
Существует два типа прокси-серверов TLS в зависимости от того, как они участвуют в этом процессе. Прокси-серверы Passthrough передают сообщение от клиента к серверу и обратно. Оконечные прокси-серверы прерывают соединение на середине.
Прокси-сервер завершения TLS
Типы прокси-серверов для завершения TLS
Оконечный прокси-сервер TLS является активным участником соединения. Он направляет HTTPS-трафик от клиента к серверу и прерывает соединение для чтения и анализа трафика. Для этого посредник разбивает туннель между клиентом и сервером на две части: Клиент - Прокси, Прокси - Сервер. TSL-соединение прерывается с одной стороны. В зависимости от стороны существует два типа соединений:
Выгрузка: Соединение "прокси-сервер" разорвано. Входящие HTTPS-данные со стороны клиента передаются на сервер в виде HTTP.
Шифрование: Соединение "Клиент-Прокси" разорвано. Входящие HTTP-данные со стороны клиента передаются на сервер в виде HTTPS.
Мостовое соединение - это комбинация двух типов соединений.
Разгрузка
Тип разгрузки является наиболее распространенным при построении сетей.

Прокси-сервер получает зашифрованное сообщение (HTTPS) со стороны клиента и расшифровывает его. Поскольку прокси-серверы могут работать только с расшифрованными файлами, на этом этапе он может анализировать данные и управлять ими. Например, он может балансировать нагрузку для внутреннего сервера, обеспечивать наблюдение за сетью и блокировать вредоносные действия. Затем посредник направляет трафик на сервер, использующий HTTP.
Когда сервер отвечает, посредник снова получает сообщение. На этом этапе он также может проводить анализ данных и включать полезные функции: обнаружение вредоносных программ и вторжений, фильтрацию контента, включение дополнительных версий протоколов. Затем прокси снова шифрует данные и отправляет их клиенту.
Поскольку всю работу по шифрованию и дешифрованию выполняет посредник, он разгружает серверы, что позволяет им работать быстрее.
Большим недостатком этого метода является незащищенная часть туннеля с HTTP-трафиком. Человек посередине может получить там доступ к данным и украсть их. К счастью, других уязвимостей нет - "человек посередине" не может создать шлюз для кражи информации.
Чтобы начать процесс завершения, прокси-сервер должен иметь сертификат того же типа, который любой сервер получает от CA. Серверу внутри туннеля TLS необходимо доказать, что ему доверяют, чтобы начать процесс рукопожатия, и именно это делает посредник завершения.
Шифрование
Тип шифрования аналогичен выгрузке, но данные шифруются со стороны сервера. Посредник получает клиентские данные в открытом виде (HTTP). Затем он шифрует трафик и пересылает его на сервер с HTTPS. Сервер отвечает, а посредник расшифровывает данные и пересылает их клиенту.
Мост

Этот тип устанавливает зашифрованное соединение с обеих сторон. Первый прокси получает данные от клиента. Клиент и прокси выполняют рукопожатие. Посредник расшифровывает полученные от клиента данные и запускает необходимые приложения: фильтрацию вредоносных программ, балансировку нагрузки, HTTP-лак. Затем посредник снова шифрует данные - теперь уже для рукопожатия с сервером. Он отправляет данные, получает ответ, расшифровывает его и снова оптимизирует. Затем он шифрует информацию, чтобы отправить ее пользователю.
Другими словами, прокси прерывает соединение, но трафик остается зашифрованным. Трафик расшифровывается в промежуточной точке, поэтому данные могут быть скомпрометированы, если у посредника есть уязвимости.
Причины использования терминации по доверенности
1. Чтобы заставить HTTPS взаимодействовать с HTTP (помогает основать соединение фронтенда HTTPS с бэкендом HTTP).
2. Чтобы добавить точку аутентификации на основе сертификата.
3. Для разгрузки серверов.
4. Для балансировки нагрузки.
5. Для включения функций, недоступных при зашифрованных данных: анализ данных, обнаружение вредоносных программ и вторжений, фильтрация содержимого и HTTP-лак.
6. Включить дополнительные версии протоколов.
7. Если прокси находится гораздо ближе к клиенту, чем конечная точка, то процесс квитирования происходит быстрее.
Плюсы и минусы использования доверенности на расторжение договора
Плюсы
Позволяет HTTPS взаимодействовать с HTTP
Разгрузка серверов
Не очень дорого
Эффективное распределение нагрузки
Анализ данных
Позволяет выполнять действия над трафиком
Наблюдение за сетью, обнаружение вторжений
Позволяет включить ускоритель HTTP
Минусы
Уязвимость к атакам типа "человек посередине"
Не подходит для важных сетей
Узкое место в средней точке, если у вас много внутренних серверов
Прокси-сервер TLS Passthrough

Прокси-сервер является пассивным участником соединения. Он "сидит" между клиентом и сервером и пересылает зашифрованное сообщение от одного к другому без какого-либо вмешательства или расшифровки в середине. Все данные расшифровываются только на конечных точках. Такой тип соединения разгружает посредника и позволяет ему более точно выполнять балансировку нагрузки.
Сквозной проходной туннель безопасен, поскольку защищенное HTTPS-соединение не превращается в HTTP, как это происходит при разрыве. Человек посередине не может получить доступ к защищенным данным на любом участке туннеля.
Недостатком этого метода является его высокая стоимость и невозможность производить какие-либо действия с веб-трафиком.
Цели использования прокси-сервера Passthrough
Прокси-сервер, инкапсулированный в HTTPS-трафик.
Более точная балансировка нагрузки
Надежное соединение на всех участках пути.
Защита от атак типа "человек посередине".
Плюсы и минусы использования сквозного прокси-сервера
Плюсы
Обеспечивает устойчивый канал для соединения HTTPS-HTTPS
Не требуется сертификат
Неуязвимость для атак типа "человек посередине"
Минусы
Дорогой
Отсутствие кэширования
Анализ данных отсутствует
Никаких действий в отношении трафика
Вывод: TLS Termination Edge vs Passthrough Proxies
Терминирующие и проходные прокси-серверы TLS имеют как свои плюсы, так и минусы. Однако нельзя сказать, какой тип лучше. Терминирующие и проходные прокси преследуют разные цели. В кратком обзоре показаны различия между этими типами, а также их преимущества и недостатки.
Окончание | Проходной | |
Характеристики | ||
Проектирование сети | Промежуточный шлюз | Сквозной |
Шифрование/дешифрование данных | В середине | В конечных точках |
Участие в процессе передачи данных | Активный | Пассивный |
Структура соединения | Протокол HTTPS-proxy-HTTP | Протокол HTTPS-proxy-HTTP |
Дополнительные меры безопасности | Требуется сертификат | Сертификат не требуется |
Характеристики | ||
HTTP-совместимый | Да | Нет |
Безопасность | Уязвимость к атакам типа "человек посередине" | Безопасный |
Эффективность прокси-функций | Высокая | Ограниченный |
Разгружает бэкэнд | Да | Нет |
Цена | Меньше стоимость | Больше стоимость |