Термин «шлюз приложения» имеет несколько значений. Это синоним таких понятий, как защитный узел, прокси-шлюз и прокси-сервер. Как уже упоминалось, прокси-службы могут функционировать непосредственно на межсетевом экране или на отдельном сервере, работающем совместно с ним.
Шлюз приложения контролирует доступ по информации пакета на всех семи уровнях модели OSI. Поэтому их часто называют шлюзами с поддержкой разграничения приложений.
Шлюзы приложений обеспечивают более высокий уровень безопасности, нежели пакетные фильтры, но за счет потери прозрачности для контролируемых служб. Они часто выступают в роли посредников для таких приложений, как программы электронной почты, FTP, Telnet, HTTP и т.д. Шлюз приложения играет роль сервера для клиента и клиента для реального сервера, в действительности обрабатывая запросы вместо пользователей, которых он защищает.
Возможность разграничения приложений позволяет межсетевому экрану выполнять дополнительную проверку соединений, которую не может осуществлять базовый фильтр пакетов. Шлюз приложения может проверять тот факт, что данные приложения находятся в приемлемом формате. Он может осуществлять дополнительные функции по аутентификации и записи информации в журнал, а также выполнять преобразование данных, если обладает такой возможностью. Например, шлюз приложения можно настроить на ограничение FTP-соединений, разрешив только команды get и запретив команды put. Это полезно, если требуется разрешить пользователям загружать файлы, одновременно запретив отгружать файлы на FTP-сервер. Шлюз приложения также можно настроить на возможность удаления нежелательного содержимого, например, сценариев ActiveX или Java, с веб-страниц.[45]
Шлюзы приложений можно использовать для зашиты уязвимых служб на защищенных системах. Прямое соединение между конечным пользователем и службой назначения не разрешается. Любые атаки на службу в действительности проводятся против «демона» шлюза, который соответствующим образом упрочнен для противостояния атакам.
Основным преимуществом, связанным с производительностью НТТР-прокси, является возможность кэширования результатов запросов пользователей. Вместо повторного приема веб-сайтов при запросе каждого нового пользователя, HTTP Proxy может кэшировать изначально полученные данные и затем обслуживать дальнейшие запросы из этого кэша. Полоса пропускания используется меньше, и повышается производительность, так как запросы могут обрабатываться локально, без обращения к Интернету. Защита, обеспечиваемая шлюзами приложений, требует некоторых жертв. Ниже перечислены недостатки, связанные с их использованием.
· Более низкая производительность. Каждый запрос в действительности подразумевает два отдельных соединения. Одно устанавливается между пользователем и шлюзом, а другое — между шлюзом и действительным узлом назначения.
· Недостаток прозрачности. Большая часть прокси-серверов требует изменения действий клиентов и пользователей. Нередки случаи, когда клиентское ПО не может работать через прокси-серверы.
· Необходимость в прокси-сервере для каждого приложения. Несмотря на то, что прокси-серверы для популярных служб широко доступны, прокси-серверы для новых или менее популярных служб найти значительно сложнее.
· Ограничения на разграничение приложений. Шлюз должен обладать возможностью разграничения безопасных и небезопасных функций приложения. Если прокси-сервер не может, выполнять такое разграничение или не может выявлять нежелательные пакеты без негативного влияния на нужные операции, степень его полезности снижается.
Шлюзы контурного уровня аналогичны шлюзам приложений, однако, они не могут разграничивать приложения. Они функционируют посредством коммутации TCP-соединений из доверенной сети в недоверенную. Это означает, что прямое соединение между клиентом и сервером никогда не устанавливается, но поскольку шлюзы контурного уровня не распознают протокол приложений, они нуждаются в информации о соединении от клиентов, которым она известна и которые запрограммированы на использование шлюза. Шлюзы приложений используют модифицированные процедуры, а шлюзы контурного уровня - модифицированные клиенты.
Основное преимущество шлюза контурного уровня в том, что он предоставляет службы для многих протоколов и может быть адаптирован к большому количеству соединений. Однако протоколы, требующие совместимости прикладного уровня, такие как FTP, который осуществляет динамическую передачу данных о портах, более адаптированы к шлюзам приложений. (Подробная информация о SOCKS приведена в RFC 1928.)
Есть и другие недостатки, связанные с зашитой сети.
· У клиентов должна быть возможность использовать эти устройства. Некоторые из них нельзя настроить на поддержку шлюзов контурного уровня, что ограничивает их доступ к внешним ресурсам. В других случаях необходимы немалые денежные средства для развертывания приложения, поддерживающего данную функциональность, что может ограничить число приложений или развертывание приложений, способных осуществлять доступ к внешним ресурсам.
· Шлюзы контурного уровня не могут осуществлять проверку на прикладном уровне, поэтому приложения могут использовать TCP-порты, которые были открыты для других легитимных приложений. Некоторые приложения для связи компьютеров или передачи мгновенных сообщений можно настроить на работу на случайных портах, таких как TCP 80. В результате возникает опасность нецелевого применения и использования потенциальных уязвимостей.[46]