Application-level gateway
Шлюз прикладного уровня (англ. application-level gateway, ALG, также известен как шлюз уровня приложений, прикладной шлюз, прокси-сервер приложений или прокси прикладного уровня) — это компонент безопасности, расширяющий возможности межсетевого экрана или NAT, применяемых в мобильных сетях[1][2]. Шлюз прикладного уровня позволяет подключать специализированные фильтры для обхода NAT, поддерживая адресную и портовую трансляцию (NAT, PAT) для отдельных «контрольных/данных» протоколов прикладного уровня, таких как FTP, BitTorrent, SIP, RTSP, передача файлов в мгновенных сообщениях. Для работы этих протоколов через NAT или межсетевой экран либо приложение должно знать комбинацию адрес/порт, позволяющую приём входящего трафика, либо NAT должен отслеживать управляющий трафик и динамически открывать привязки портов (firewall pinhole) по мере необходимости. Подобный механизм позволяет легитимным данным проходить сквозь фильтры межсетевого экрана или NAT, который в противном случае бы ограничил этот трафик по своим критериям фильтрации.
Функции
Шлюз прикладного уровня может выполнять следующие функции:
- позволять клиентским приложениям использовать динамические эфемерные TCP/UDP порты для связи с известными портами серверных приложений, даже если конфигурация межсетевого экрана допускает только ограниченный набор известных портов. Без ALG такие порты могли быть заблокированы либо администратору сети пришлось бы явно открывать множество портов на межсетевом экране, делая систему уязвимой для атак.
- преобразовывать адресную информацию сетевого уровня, содержащуюся внутри прикладного полезного груза, между адресами, допустимыми для узлов по обе стороны межсетевого экрана/NAT. Эта функция обосновывает термин «шлюз» в названии ALG.
- распознавать специфичные для приложения команды и предлагать детализированное управление их безопасностью.
- осуществлять синхронизацию между несколькими потоками/сессиями данных между двумя взаимодействующими узлами. Например, FTP-приложение может использовать отдельные соединения для управляющих команд и для передачи данных между клиентом и удалённым сервером. Во время долгой передачи больших файлов управляющее соединение может простаивать. ALG способен предотвратить преждевременный тайм-аут управляющего соединения на сетевых устройствах до завершения такой передачи[3].
Возможность анализа всех пакетов, проходящих через ALG, обеспечивается применением углублённого анализа пакетов. ALG «понимает» протоколы, с которыми работает.
Например, для SIP-Back-to-Back агентов (B2BUA) ALG может организовать прохождение трафика через межсетевой экран для SIP. При этом ответственность за разрешение SIP-сессий возлагается на ALG, а не на сам межсетевой экран. ALG может решить и проблему прохождения SIP через NAT, переписывая адресную информацию внутри SIP-сообщений и удерживая привязки адресов до завершения сессии. Кроме того, SIP ALG обрабатывает SDP, вложенный в SIP-сообщения (широко используемый при настройке медиа-соединений в VoIP), поскольку SDP также содержит реальные IP-адреса и порты, требующие транслирования.
Однако SIP ALG на некоторых устройствах способен мешать работе иных технологий, призванных решать те же задачи, поэтому многие провайдеры советуют отключать его.[4][5][6]
ALG по своему принципу похож на прокси-сервер, поскольку располагается между клиентом и настоящим сервером, обеспечивая обмен данными. Однако принято считать, что ALG действует прозрачно для приложения, перехватывая сообщения без необходимости явной настройки на стороне клиента. В то время как прокси-сервер требует указания его параметров в клиентском приложении, после чего клиент явно осознаёт его использование.
Microsoft Windows
Сервис Application Layer Gateway в Microsoft Windows поддерживает сторонние плагины, позволяющие некоторым сетевым протоколам проходить через брандмауэр Windows и работать за его пределами, а также с общим доступом к Интернету. ALG-плагины могут открывать порты и изменять данные внутри пакетов, включая порты и IP-адреса. В Windows Server 2003 имеется также FTP-плагин ALG. Он предназначен для поддержки активных FTP-сеансов через механизм NAT в Windows. Для этого плагин ALG FTP перенаправляет весь трафик, проходящий через NAT и предназначенный для порта 21 (управляющий порт FTP), на частный порт в диапазоне 3000–5000 на виртуальном loopback-адаптере Microsoft. Затем ALG FTP-модуль с помощью мониторинга управляющего канала FTP обновляет портовые привязки через NAT для FTP-каналов передачи данных.


