Посредник (транспортного) уровня соединения (circuit-level proxy) — это подсистема МЭ, осуществляющая посреднические услуги по передаче данных на уровне соединения TCP двумя компьютерами в сети. Посредничество заключается в том, что связь между двумя компьютерами физически осуществляется через систему-посредника и реально состоит из двух TCP-соединений. Весь процесс связи состоит из следующих шагов:
— компьютер-инициатор начинает процесс установки TCP-соединения с посредником;
— посредник проверяет допустимость установления связи компьютером-инициатором;
— посредник протоколирует попытку установки связи и/или уведомляет о ней администратора безопасности;
— если связь недопустима, то посредник завершает процесс связи, иначе процесс продолжается;
— посредник устанавливает TCP-соединение с компьютером-адресатом;
— посредник завершает установление связи с компьютером-инициатором;
— посредник копирует (пересылает) данные из одного соединения в другое в обоих направлениях и, возможно, протоколирует пересылаемые данные;
— посредник завершает процесс связи по требованию одной из сторон или по собственной инициативе;
— посредник протоколирует причину завершения связи, а также записывает статистическую информацию о состоявшемся сеансе связи.
Следует отметить, что компьютер-инициатор не передает посреднику имя компьютера-адресата — его цифровой адрес и номер TCP-порта фиксированы для конкретного посредника и известны. Из этого замечания следует, что, во-первых, связь через посредника осуществляется от многих к одному, а, во-вторых, посредники уровня соединения используются только для организации безопасного соединения от внешних компьютеров (удаленных рабочих станций) к внутреннему компьютеру (серверу поддержки локальной сети или информационному серверу). Тем не менее, возможен случай, когда компьютеров-адресатов будет несколько — случай применения техники «зеркального отображения» сервера. При этом посредник, поддерживающий этот случай, перед установлением связи с адресатом должен выбрать конкретный компьютер из нескольких идентичных. Алгоритм выбора может быть одним из следующих (или их комбинацией):
— циклический выбор,
— случайный выбор,
— выбор наиболее доступного (с минимальным временем ответа на ping-запрос),
— выбор с минимальным временем ответа на запрос установления связи,
— выбор наименее загруженного (с минимальной текущей загрузкой процессора).
Под безопасностью связи подразумевается то, что после установления связи факт ее существования уже запротоколирован и проведена аутентификация компьютера-инициатора связи. Протоколирование факта связи (и ее некоторых доступных параметров) означает не только возможность в дальнейшем выследить злоумышленника, но и возможность обнаружения атаки в реальном масштабе времени. Под аутентификацией компьютера-инициатора понимаются действия, предпринимаемые посредником при проверке допустимости связи.
Проверка допустимости связи выполняется посредником непосредственно после запроса на соединение компьютером-инициатором и может основываться на данных из пакета-запроса на соединение, данных окружающей среды и статистических данных. В качестве данных пакета-запроса на соединение могут использоваться (в порядке убывания значимости):
— IP-адрес компьютера-инициатора,
— начальный номер (SYN) пакета TCP-соединения,
— дополнительные параметры TCP-соединения.
Возможными используемыми данными окружающей среды являются (в порядке убывания значимости):
— ответ DNS-сервера на запрос о символьном имени компьютера-инициатора,
— сетевой интерфейс контроля,
— текущее время запроса соединения,
— текущее количество соединений с компьютером-адресатом (от компьютера-инициатора, от сети компьютера-инициатора, общее число и т.п.) через посредника.
К статистическим данным (обновляемым после каждой попытки соединения) относятся:
— частота запроса соединений от данного компьютера-инициатора,
— отношение количества отвергнутых запросов к общему числу запросов,
— типичный объем и характер пересылаемых по TCP-соединению данных.
Наиболее важными из перечисленных выше являются IP-адрес компьютера-инициатора и ответ DNS-сервера, содержащий символьное имя (если таковое имеется) компьютера-инициатора, и текущее время запроса соединения. По цифровому адресу компьютера можно запретить доступ (или разрешить доступ только) для компьютеров из определенных сетей, а по символьному адресу — для компьютеров без имен или с именами, содержащими определенные символы или их последовательности, а также для компьютеров из определенных доменов. Текущее время используется для блокирования доступа к защищаемому сервису сети в нерабочее время или в периоды наиболее высокой сетевой активности внутренних пользователей.
Следует отметить, что и при передаче данных соединения возможен контроль некоторых параметров в целях улучшения защиты и качества соединения:
— длительность соединения,
— скорость передачи данных,
— текущие параметры окна TCP-соединения,
— большое количество ошибок передачи данных.
Контролирование этих параметров позволяет правильно распределить пропускную способность канала связи между несколькими соединениями, тем самым, ограничив максимально возможную загрузку линий связи трафиком злоумышленника, а также позволяет вовремя обнаружить деятельность злоумышленника и закрыть (т.е. завершить по инициативе посредника) данное соединение (с протоколированием причины и уведомлением об этом администратора).
К преимуществам посредников уровня соединения (по сравнению с другими методами фильтрации) следует отнести следующие:
— локальная сеть может быть сделана невидимой из глобальной сети;
— при нарушении работоспособности посредника пакеты обычно перестают проходить через него, тем самым не возникает угрозы для защищаемых им серверов;
— наличие (элементарной) аутентификации компьютера-инициатора соединения по его символьному имени;
— использование политики «запрещено все, что не разрешено»;
— способность гибкого регулирования (ограничения) пропускной способности;
— возможность эффективного противостояния атакам с неправильной фрагментацией пакетов соединения;
— возможность противостояния атакам с использованием протокола ICMP;
— возможность использования статистической информации о соединениях для определения неоднократных попыток соединения злоумышленником и автоматического блокирования его действий;
— возможность «прозрачного» использования для повышения надежности техники «зеркального отображения»;
— достаточно высокая пропускная способность (после установления связи).
Недостатками посредников этого типа являются:
— видимость (и уязвимость) посредника из внешней сети,
— отсутствие аутентификации пользователя,
— нет фильтрации пересылаемых данных (нет фильтрации на прикладном уровне),
— нет защиты целостности и конфиденциальности передаваемых данных,
— возможность подмены злоумышленником IP-адреса компьютера-инициатора,
— возможность подмены во время связи аутентифицированного компьютера-инициатора,
— трудность фильтрации при отсутствии у сервиса фиксированного номера порта,
— «непрозрачность» связи,
— невозможность использования протокола UDP,
— более высокая, чем у простых пакетных фильтров стоимость.
Посредник прикладного уровня (application proxy) — это подсистема МЭ, осуществляющая посреднические услуги по передаче данных и команд прикладного уровня двумя компьютерами в сети. Посредничество заключается в том, что связь между двумя компьютерами физически осуществляется через систему-посредника и реально состоит из двух соединений прикладного уровня. Весь процесс связи состоит из следующих шагов:
— компьютер-инициатор устанавливает соединение прикладного уровня с посредником,
— посредник аутентифицирует компьютер-инициатор и пользователя,
— компьютер-инициатор пересылает посреднику имя компьютера-адресата,
— посредник проверяет допустимость данной связи,
— посредник протоколирует попытку установки связи и уведомляет о ней администратора безопасности,
— если связь недопустима, то посредник завершает процесс связи, иначе процесс продолжается,
— посредник устанавливает соединение прикладного уровня с компьютером-адресатом,
— посредник пересылает данные и команды из одного соединения в другое в обоих направлениях, фильтруя их (перекодируя данные, организуя кэширование и т.п.), и протоколирует попытки выполнения неразрешенных команд,
— посредник завершает процесс связи по требованию одной из сторон или по собственной инициативе,
— посредник протоколирует причину завершения связи, а также записывает статистическую информацию о состоявшемся сеансе связи.
Следует отметить, что в общих чертах принцип работы посредника прикладного уровня такой же как и у посредника уровня соединения, однако функционирование на более высоком уровне и возможность поддержки специальных безопасных протоколов (SSH, SSL, S/MIME, SOCKS и др.) позволяют организовывать более качественную защиту внутренней сети с использованием посредников данного типа. Далее будут рассмотрены наиболее характерные отличия посредников прикладного уровня от посредников уровня соединения.
Прежде всего, необходимо отметить, что в отличие от посредника уровня соединения, ориентированного на один-единственный протокол TCP, посредников прикладного уровня существует много — под каждый протокол прикладного (и сеансового) уровня. Каждый посредник допускает и защищает только тот протокол, который он поддерживает (тем самым реализуется политика «запрещено все, что не разрешено»). Наиболее популярные поддерживаемые посредниками протоколы можно разделить на следующие группы:
— гипертекстовые протоколы — HTTP, SHTTP, HTTPS, Gopher;
— протокол пересылки файлов — FTP;
— почтовые протоколы — SMTP, POP3, IMAP, NNTP;
— протоколы удаленного доступа — Telnet, rlogin, rsh, rexec, RPC, XWindow;
— протокол сетевой файловой системы — NFS, NetBEUI;
— протокол службы имен — DNS;
— «безопасные» протоколы сеансового уровня — SSH, SSL, S/MIME, SOCKS.
Так как посредник функционирует на прикладном уровне, то у него существуют большие возможности по фильтрации прикладных команд и данных. Например, для протокола FTP возможно запрещение команды «put» — команды записи файла на сервер. Возможна организация разграничения доступа к объектам сервера дополнительно к возможностям самого сервера по разграничению доступа.
Если посредник поддерживает «безопасный» протокол, то возможно поддержание конфиденциальности и целостности передаваемых через внешнюю сеть данных путем шифрования данных и вычисления криптографических контрольных сумм (т.е. туннелируя трафик прикладного уровня). В этом случае компьютер-инициатор тоже должен поддерживать тот же самый «безопасный» протокол (удаленная защищенная рабочая станция) либо необходим еще один посредник прикладного уровня, поддерживающий тот же самый «безопасный» протокол (виртуальная частная сеть — VPN).
Способ реализации схемы усиленной аутентификации компьютера-инициатора и пользователя зависит от используемого протокола, поддержка посредником (и компьютером-инициатором) «безопасного» протокола позволяют не только увеличить надежность аутентификации, но и унифицировать процесс аутентификации.
Следует также отметить, что компьютер-инициатор в начале сеанса связи передает посреднику имя компьютера-адресата и запрашиваемого сервиса (в общем случае — URL), т.е. связь с через посредника может осуществляется от многих ко многим. Способ передачи этого имени зависит от используемого протокола. Здесь же может передаваться и имя пользователя, с правами которого будет осуществляться доступ.
Также возможен случай применения техники «зеркального отображения» сервера для повышения надежности. При этом посредник, поддерживающий этот случай, перед установлением связи с адресатом должен выбрать конкретный компьютер из нескольких идентичных, а алгоритм выбора должен работать так, чтобы один и тот же пользователь попадали на один и тот же «реальный» компьютер-сервер во время всех сеансов связи, т.к. сервер может хранить контекст каждого пользователя.
Метод задания политики фильтрации, модель и принцип функционирования типового посредника прикладного уровня в общем схожи с методом задания политики фильтрации и принципом функционирования посредника уровня соединения, за исключением того, что политика фильтрации в данном случае распространяется в основном на передаваемые во время сеанса связи данные и команды, а в схеме передачи данных между двумя соединениями вместо простого копирования используется техника высокоуровневой фильтрации, трансляции и кэширования данных (протокольный автомат).
К преимуществам посредников прикладного уровня (по сравнению с другими методами фильтрации) следует отнести следующие:
— локальная сеть может быть сделана невидимой из глобальной сети;
— при нарушении работоспособности посредника пакеты обычно перестают проходить через него, тем самым не возникает угрозы для защищаемых им серверов;
— возможность усиленной аутентификации компьютера-инициатора и пользователя;
— использование политики «запрещено все, что не разрешено»;
— возможность использования посредника как для защиты внутренних серверов, так и для защиты внутренних рабочих станций;
— способность гибкого регулирования (ограничения) пропускной способности;
— возможность защиты от подмены во время связи аутентифицированного компьютера-инициатора;
— возможность использования статистической информации о соединениях для определения неоднократных попыток соединения злоумышленником и автоматического блокирования его действий;
— защита на уровне приложений позволяет осуществлять большое количество дополнительных проверок, снижая тем самым вероятность атаки с использованием «дыр» в конкретном программном обеспечении;
— возможна защита целостности и конфиденциальности передаваемых данных и команд;
— фильтрация пересылаемых команд и данных;
— возможность «прозрачного» использования техники «зеркального отображения»;
— большая гибкость в протоколировании передаваемых команд и данных;
— возможность кэширования данных.
Недостатками посредников этого типа являются:
— видимость (и уязвимость) посредника из внешней сети,
— необходимость в существовании нескольких посредников для разных сервисов,
— трудность фильтрации при отсутствии у сервиса фиксированного номера порта,
— низкая пропускная способность,
— «непрозрачность» связи,
— высокая стоимость (суммарная для всех необходимых посредников).