Типы межсетевых экранов и используемые в них технологии.
Si vis pacem, para bellum
(Хочешь мира — готовься к войне).
Благодаря своей открытой архитектуре сеть Internet стала одним из самых удобных средств коммуникации. Вместе с тем открытость Internet породила множество проблем, связанных с безопасностью. Здесь как нельзя лучше подходит изречение: «Каждый — за себя, только Бог — за всех». Любой имеющий выход в Internet компьютер должен рассматриваться как потенциальный объект для атаки. Проблема особенно остро стоит в случае организаций, поскольку им необходимо контролировать работу в Internet большого количества компьютеров и сетевых устройств.
Безопасность при подключении к Internet обеспечивается с помощью следующих специализированных средств:- межсетевых экранов;
- сетевых сканеров, призванных находить изъяны и потенциально опасные участки внутри сетей;
- снифферов, или анализаторов протоколов, позволяющих отслеживать входящий и исходящий трафики;
- средств протоколирования событий в сетях;
- средств построения виртуальных частных сетей и организации закрытых каналов обмена данными.
Важное место в списке средств обеспечения безопасного подключения к Internet занимают межсетевые экраны (часто называемые брандмауэрами, или, по-английски, firewall). Согласно «Руководящему документу. Межсетевые экраны» Гостехкомиссии при Президенте РФ «межсетевым экраном называется локальное (однокомпонентное) или функционально-распределенное средство (комплекс), которое реализует контроль за информацией, поступающей в автоматизированную систему и/или выходящей из нее, и обеспечивает защиту автоматизированной системы посредством фильтрации информации, т. е. анализа по совокупности критериев и принятия решения об ее распространении в (из) автоматизированной системе». К сожалению, такое определение имеет чересчур общий характер и подразумевает слишком расширенное толкование.
В обиходе межсетевыми экранами (МЭ) называют средства защиты, устанавливаемые между общедоступной (такой, как Internet) и внутренней сетью. Межсетевой экран выполняет двойную функцию. Во-первых, он призван ограничить доступ во внутреннюю сеть со стороны общедоступной сети за счет применения фильтров и средств аутентификации, чтобы злоумышленники не могли получить несанкционированный доступ к информации или нарушить нормальную работу сетевой инфраструктуры. Во-вторых, МЭ служит для контроля и регулирования доступа пользователей внутренней сети к ресурсам общедоступной сети, когда те представляют угрозу безопасности или отвлекают сотрудников от работы (порнографические, игровые, спортивные серверы).
Сейчас, правда, сетевые экраны устанавливают и внутри корпоративных сетей, в целях ограничения доступа пользователей к особо важным ресурсам сети, например к серверам, содержащим финансовую информацию или сведения, относящиеся к коммерческой тайне. Существуют также персональные межсетевые экраны, призванные регулировать доступ к отдельным компьютерам и устанавливаемые на эти компьютеры.
Межсетевые экраны по понятным причинам используются для сетей TCP/IP и классифицируются в соответствии с уровнем эталонной модели взаимодействия открытых систем (сетевой моделью) OSI. Однако такая классификация, в силу ряда обстоятельств носит достаточно условный характер. Во-первых, сетевая модель сетей TCP/IP предусматривает только 5 уровней (физический, интерфейсный, сетевой, транспортный и прикладной), в то время как модель OSI — 7 уровней (физический, канальный, сетевой, транспортный, сеансовый, презентационный и прикладной). Поэтому установить однозначное соответствие между этими моделями далеко не всегда возможно. Во-вторых, большинство выпускаемых межсетевых экранов обеспечивают работу сразу на нескольких уровнях иерархии OSI. В-третьих, некоторые экраны функционируют в режиме, который трудно соотнести с каким-то строго определенным уровнем иерархии.
Тем не менее поддерживаемый уровень сетевой модели OSI является основной характеристикой при классификации межсетевых экранов. Различают следующие типы межсетевых экранов:
- управляемые коммутаторы (канальный уровень);
- сетевые фильтры (сетевой уровень);
- шлюзы сеансового уровня (circuit-level proxy);
- посредники прикладного уровня;
- инспекторы состояния (stateful inspection), представляющие собой межсетевые экраны сеансового уровня с расширенными возможностями.
Существует также понятие «межсетевой экран экспертного уровня». Такие МЭ обычно базируются на посредниках прикладного уровня или инспекторах состояния, но обязательно комплектуются шлюзами сеансового уровня и сетевыми фильтрами. К МЭ экспертного класса относятся почти все имеющиеся на рынке коммерческие брандмауэры.
Межсетевые экраны могут опираться на один из двух взаимоисключающих принципов обработки поступающих пакетов данных. Первый принцип гласит: «Что явно не запрещено, то разрешено». Т. е. если МЭ получил пакет, не подпадающий не под одно из принятых ограничений или не идентифицированный правилами обработки, то он передается далее. Противоположный принцип — «Что явно не разрешено, то запрещено» — гарантирует гораздо большую защищенность, но оборачивается дополнительной нагрузкой на администратора. В этом случае внутренняя сеть изначально полностью недоступна, и администратор вручную устанавливает разрешенные при обмене данными с общедоступной сетью сетевые адреса, протоколы, службы и операции.
Правила обработки информации во многих межсетевых экранах экспертного класса могут иметь многоуровневую иерархическую структуру. Например, они могут позволять задать такую схему: «Все компьютеры локальной сети недоступны извне, за исключением доступа к серверу A по протоколу ftp и к серверу B по протоколу telnet, однако при этом запрещен доступ к серверу A с операцией PUT сервиса ftp».
Межсетевые экраны могут выполнять над поступающими пакетами данных одну из двух операций: пропустить пакет далее (allow) или отбросить пакет (deny). Некоторые МЭ имеют еще одну операцию — reject, при которой пакет отбрасывается, но отправителю сообщается по протоколу ICMP о недоступности сервиса на компьютере-получателе информации. В противовес этому при операции deny отправитель не информируется о недоступности сервиса, что является более безопасным.
Ниже мы рассмотрим достоинства и недостатки каждого типа межсетевого экрана более подробно.
КОММУТАТОРЫ
Коммутаторы среднего и старшего уровня Cisco, Bay Networks (Nortel), 3Com и других производителей позволяют привязывать MAC-адреса сетевых карт компьютеров к определенным портам коммутатора. Более того, немало коммутаторов предоставляет возможность фильтрации информации на основе адреса сетевой платы отправителя или получателя, создавая при этом виртуальные сети (VLAN). Другие коммутаторы позволяют организовать VLAN на уровне портов самого коммутатора. Таким образом, коммутатор может выступать в качестве межсетевого экрана канального уровня.
Следует заметить, что большинство специалистов по безопасности информационных систем редко относят коммутаторы к межсетевым экранам. Основная причина такого отношения вызвана тем, что область фильтрующего действия коммутатора простирается до ближайшего маршрутизатора и поэтому не годится для регулирования доступа из Internet.
Кроме того, подделать адрес сетевой платы обычно не составляет труда (многие платы Ethernet позволяют программно менять или добавлять адреса канального уровня), и такой подход к защите является до крайности ненадежным. Правда, организация виртуальных сетей на уровне портов коммутатора более надежна, но, опять же, она ограничена рамками локальной сети.
Тем не менее если следовать буквальной трактовке «Руководящего документа» Гостехкомиссии, то коммутаторы с возможностью создания VLAN являются межсетевыми экранами.
СЕТЕВЫЕ ФИЛЬТРЫ
Сетевые фильтры работают на сетевом уровне иерархии OSI (см. Рисунок 1). Сетевой фильтр представляет собой маршрутизатор, обрабатывающий пакеты на основании информации, содержащейся в заголовках пакетов. Сетевые фильтры существуют для сетей TCP/IP и IPX/SPX, но последние применяют в локальных сетях, поэтому мы их рассматривать не будем.
При обработке пакетов ими учитывается следующая информация:- IP-адрес отправителя;
- IP-адрес получателя;
- протокол (TCP, UDP, ICMP);
- номер программного порта отправителя;
- номер программного порта получателя.
Администратор на основе этой информации задает правила, в соответствии с которыми пакеты будут либо пропускаться через фильтр, либо отбрасываться им. Например, сетевой фильтр позволяет реализовать следующую схему обмена данными между компьютерами корпоративной сети и Internet:
- все компьютеры корпоративной сети имеют возможность общаться с внешними серверами Web и ftp, но не с telnet, NNTP и т. д.;
- доступ извне запрещен ко всем компьютерам корпоративной сети, кроме доступа к серверу A по протоколу HTTP и к серверу B по протоколу ftp; кроме того, внешнему компьютеру Z разрешается доступ к внутреннему серверу C и к любым службам TCP и UDP, но не ICMP.
Рисунок 1. Сетевой фильтр анализирует пакеты на сетевом уровне. |
Сетевые фильтры очень легко реализовать, поэтому они получили повсеместное распространение и представлены программно-аппаратными и чисто программными реализациями. В частности, маршрутизаторы Cisco, Bay Networks (подразделение Nortel) и других производителей снабжены функциями сетевой фильтрации, вследствие чего такие маршрутизаторы называют фильтрующими. Список программных сетевых фильтров еще более внушителен, и большинство из них представляет бесплатные или условно-бесплатные утилиты. Они реализованы для множества сетевых платформ, в том числе для UNIX, Windows NT, NetWare, VMS, MVS.
К сожалению, оборотной стороной простоты реализации и низкой цены сетевых фильтров является сложность их администрирования и слабая защищенность от атак.
В сетевых фильтрах в основном используется статическая фильтрация, когда администратору приходится создавать свой фильтр для каждого уникального типа пакета, требующего обработки. Поясним это на примере. Допустим, всем компьютерам по умолчанию запрещен доступ в Internet. Однако компьютеру Z (IP-адрес 123.45.67.89) необходим доступ к внешнему серверу A (IP-адрес 211.111.111.111), предоставляющему сервис telnet. В данном случае администратор должен задать два правила:
- пропустить пакет, если он передается со стороны сетевого интерфейса внутренней сети на сетевой интерфейс внешней сети и имеет параметры: IP-адрес отправителя 123.45.67.89, IP-адрес получателя 211.111.111.111, протокол транспортного уровня TCP, программный порт отправителя больше 6000, программный порт получателя 23;
- пропустить пакет, если он передается со стороны сетевого интерфейса внешней сети на сетевой интерфейс внутренней сети и имеет параметры: IP-адрес отправителя 211.111.111.111, IP-адрес получателя 123.45.67.89, протокол транспортного уровня TCP, программный порт отправителя 23, программный порт получателя более 6000.
Таким образом, для каждого канала обмена данными необходимо задавать два правила (фильтра); в случае многоканальных соединений (например, для сервиса ftp) количество правил соответственно увеличивается. Для большой сети список правил достигает очень внушительных размеров, в которых администратору легко запутаться. Правда, сетевые фильтры позволяют обычно объединять правила для подмножества компьютеров на основе IP-подсетей.
Поскольку при получении каждого пакета сетевой фильтр просматривает таблицу правил в последовательном порядке, каждое новое правило уменьшает общую производительность маршрутизатора.
Ряд производителей (в частности, Novell в утилите FILTCFG.NLM) предусматривает динамическую, или контекстную (stateful), фильтрацию и фильтрацию фрагментов IP-пакетов, но по характеристикам они скорее относятся к разряду шлюзов сеансового уровня и поэтому будут рассмотрены позднее.
Еще одной проблемой, особенно для бесплатных сетевых фильтров, является невозможность создания иерархической структуры правил. Например, в случае принципа «что явно не разрешено, то запрещено» фильтр просматривает сначала список исключений, и если пакет не подходит не под одно исключение, то в соответствии с указанным принципом пакет отсеивается. Если же пакет подходит хотя бы под одно исключение, то он передается дальше. Однако представим такую ситуацию: сеть закрыта от доступа снаружи, но один сервер должен быть доступен для внешнего мира по протоколу ftp. Все это прекрасно можно организовать с помощью сетевого фильтра, за исключением маленькой, но очень неприятной детали — на доступ к серверу по ftp нельзя наложить дополнительные ограничения. К примеру, невозможно в таком случае запретить доступ к нему со стороны компьютера Z, которым пользуется злоумышленник. Более того, хакер может передавать на сервер пакеты с адресом отправителя, соответствующим адресу компьютера внутренней сети (самый опасный вид подделки IP-пакетов). И сетевой фильтр пропустит такой пакет. Чтобы избежать подобных проблем, администраторы вынуждены ставить два последовательно подключенных фильтра, чтобы таким образом реализовывать иерархические правила фильтрации.
Сетевые фильтры имеют ряд принципиальных недостатков. Прежде всего аутентификация (или, если точнее, идентификация) отправителя производится только на основании IP-адреса. Однако с помощью подмены IP-адресов (IP-spoofing) злоумышленник без особых усилий может обойти такую преграду. Кроме того, за уполномоченный компьютер может в принципе сесть человек, не имеющий права работать с сервером. Аутентификация на основе имени и пароля пользователя намного надежнее, но в сетевых фильтрах ее применить не представляется возможным.
Сетевой фильтр не может отслеживать работу сетевых приложений, и вообще он не контролирует содержимое пакетов транспортного, сеансового и прикладного уровня. Поэтому наличие сетевого фильтра не оградит корпоративную сеть от атак по типу SYN-flooding (см. врезку «Атака SYN-flooding»), от атак, связанных с фрагментацией пакетов, и от вторжений через сервисы прикладного уровня.
Основным (помимо цены и простоты реализации) достоинством сетевых фильтров является их очень высокая производительность, намного более высокая, чем у межсетевых экранов сеансового и прикладного уровня. Несмотря на серьезные недостатки, сетевой фильтр является неотъемлемой частью любого межсетевого экрана экспертного класса. Однако он представляет собой всего лишь одну из его составных частей, поскольку работает в сочетании со шлюзом более высокого уровня иерархии OSI. В такой схеме сетевой фильтр препятствует прямому общению между внутренней и внешней сетью (кроме заранее определенных компьютеров). Вся же основная фильтрация, но уже на вышестоящих уровнях OSI, организуется шлюзом соответствующего уровня или инспектором состояния.
ШЛЮЗЫ СЕАНСОВОГО УРОВНЯ
Шлюзы сеансового уровня, как и следует из названия, оперируют на сеансовом уровне иерархии OSI. Однако в сетевой модели TCP/IP нет уровня, однозначно соответствующего сеансовому уровню OSI. Поэтому к шлюзам сеансового уровня относят фильтры, которые невозможно отождествить ни с сетевым, ни с транспортным, ни с прикладным уровнем.
Фильтры сеансового уровня имеют несколько разновидностей в зависимости от их функциональных особенностей, но такая классификация носит достаточно условный характер, поскольку их возможности во многом пересекаются. Следует помнить, что в состав межсетевых экранов входят шлюзы сеансового уровня всех или большинства видов.
ФИЛЬТРЫ КОНТРОЛЯ СОСТОЯНИЯ КАНАЛА СВЯЗИ
К фильтрам контроля состояния канала связи нередко относят сетевые фильтры (сетевой уровень) с расширенными возможностями.
Динамическая фильтрация в сетевых фильтрах. В отличие от стандартной статической фильтрации в сетевых фильтрах, динамическая (stateful) фильтрация позволяет вместо нескольких правил фильтрации для каждого канала связи назначать только одно правило. При этом динамический фильтр сам отслеживает последовательность обмена пакетами данных между клиентом и сервером, включая IP-адреса, протокол транспортного уровня, номера портов отправителя и получателя, а иногда и порядковые номера пакетов. Понятно, что такая фильтрация требует дополнительной оперативной памяти. По производительности динамический фильтр несколько уступает статическому фильтру.
Фильтр фрагментированных пакетов. При передаче через сети с различными MTU IP-пакеты могут разбиваться на отдельные фрагменты, причем только первый фрагмент всегда содержит полный заголовок пакета транспортного уровня, включая информацию о программных портах. Обычные сетевые фильтры не в состоянии проверять фрагменты, кроме первого, и пропускают их (при выполнении критериев по IP-адресам и используемому протоколу). За счет этого злоумышленники могут организовать опасные атаки по типу «отказ в обслуживании», преднамеренно генерируя большое количество фрагментов и тем самым блокируя работу компьютера-получателя пакетов. Фильтр фрагментированных пакетов не пропускает фрагменты, если первый из них не пройдет регистрации.
Рисунок 2. Процедура установления TCP-соединения через SYNDefender Gateway. |
Контроль битов SYN и ACK. Ряд фильтров позволяет отслеживать биты SYN и ACK в пакетах TCP. Все они призваны бороться с атаками по типу SYN-flooding (см. врезку «Атака SYN-flooding»), но используют различные подходы. Самый простой фильтр запрещает передачу TCP-пакетов с битом SYN, но без бита ACK со стороны общедоступной сети на компьютеры внутренней сети, если последние не были явно объявлены серверами для внешней сети (или хотя бы для определенной группы компьютеров внешней сети). К сожалению, такой фильтр не спасает при атаках SYN-flooding на машины, являющиеся серверами для внешней сети, но расположенные во внутренней сети.
Для этих целей применяют специализированные фильтры с многоступенчатым порядком установления соединений. Например, фильтр SYNDefender Gateway из состава межсетевого экрана FireWall-1 производства Check Point работает следующим образом. Допустим, внешний компьютер Z пытается установить соединение с внутренним сервером A через межсетевой экран МЭ. Процедура установления соединения показана на Рисунке 2. Когда МЭ получает пакет SYN от компьютера Z (этап 1), то этот пакет передается на сервер A (этап 2). В ответ сервер A передает пакет SYN/ACK на компьютер Z, но МЭ его перехватывает (этап 3). Далее МЭ пересылает полученный пакет на компьютер Z, кроме того, МЭ от имени компьютера Z посылает пакет ACK на сервер A (этап 4). За счет быстрого ответа серверу A, выделяемая под установление новых соединений память сервера никогда не окажется переполнена, и атака SYN-flooding не пройдет.
Дальнейшее развитие событий зависит от того, действительно ли компьютер Z инициализировал установление соединения с сервером A. Если это так, то компьютер Z перешлет пакет ACK серверу A, который проходит через МЭ (этап 5a). Сервер A проигнорирует второй пакет ACK. Затем МЭ будет беспрепятственно пропускать пакеты между компьютерами A и Z. Если же МЭ не получит пакета ACK или кончится тайм-аут на установление соединения, то он вышлет в адрес сервера A пакет RST, отменяющий соединение (этап 5б).
Рисунок 3. Процедура установления TCP-соединения через SYNDefender Relay. |
Фильтр SYNDefender Relay из состава того же Check Point FireWall-1 работает несколько иначе. Прежде чем передавать пакет SYN на сервер A, МЭ сначала устанавливает соединение с компьютером Z. Процедура установления соединения для этого случая показана на Рисунке 3. Только после получения пакета ACK от компьютера Z межсетевой экран инициализирует соединение с сервером A (этап 3). Очевидно, что после установления соединений межсетевой экран будет вынужден в динамическом режиме менять значения полей Sequent number (порядковый номер) и Acknowledgement number (номер подтверждения) во всех пакетах TCP, передаваемых между компьютерами A и Z, что снижает производительность.
ШЛЮЗЫ, ТРАНСЛИРУЮЩИЕ АДРЕСА ИЛИ СЕТЕВЫЕ ПРОТОКОЛЫ
Пожалуй, самым известным шлюзом сеансового уровня можно считать шлюз с преобразованием IP-адресов (Network Address Translation, NAT). При использовании шлюза NAT внутренняя сеть имеет адреса, невидимые (и даже незарегистрированные) в общедоступной сети. При обращении внутреннего компьютера наружу шлюз перехватывает запрос и выступает от имени клиента, задействуя свой внешний (зарегистрированный) IP-адрес. Полученный ответ шлюз передает внутреннему компьютеру (после подстановки внутреннего адреса компьютера), выступая в качестве передаточного звена. Это позволяет убить сразу двух зайцев: резко сократить количество зарегистрированных IP-адресов и контролировать поток информации, т. е. назначать или запрещать доступ в Internet отдельным компьютерам.
Шлюзы NAT могут работать в одном из четырех режимов: динамическом, статическом, статическом с динамической выборкой IP-адресов и комбинированном.
При динамическом режиме, иногда называемом трансляцией на уровне портов (Port Address Translation, PAT), шлюз имеет один-единственный внешний IP-адрес. Все обращения в общедоступную сеть (Internet) со стороны клиентов внутренней сети осуществляются с использованием этого внешнего адреса, при этом шлюз оперирует лишь портами внешнего интерфейса, т. е. при обращении клиента шлюз выделяет ему уникальный программный порт транспортного протокола (UDP, TCP) для внешнего IP-адреса. В распоряжении шлюза NAT могут иметься пулы до 64 000 портов TCP, 64 000 портов UDP и 6 4000 портов ICMP (в протоколе ICMP термин «порт» не применяется, но разработчики шлюзов используют его, чтобы подчеркнуть принцип трансляции пакетов), хотя в некоторых реализациях емкость пулов может быть много меньше этих величин, например в Novell BorderManager каждый пул содержит по 5000 портов.
Динамический режим предназначен для сетей, компьютеры которых выступают исключительно в качестве клиентов ресурсов Internet.
При статическом режиме внешнему интерфейсу шлюза назначается столько зарегистрированных IP-адресов, сколько компьютеров имеется во внутренней сети. Каждому компьютеру внутренней сети ставится в соответствие уникальный внешний IP-адрес шлюза. При обмене данными между внутренней и общедоступной сетями шлюз транслирует внутренние IP-адреса во внешние и наоборот. Статический режим необходим, если компьютеры внутренней сети работают в качестве серверов Internet.
Статический режим с динамической выборкой IP-адресов аналогичен статическому, за исключением того, что за внутренними компьютерами не закрепляются заранее (статически) определенные внешние IP-адреса, они резервируются динамически из пула внешних IP-адресов.
Комбинированный режим подразумевает одновременное использование сразу нескольких вышеперечисленных режимов и предназначен для сетей, где имеются как клиенты, так и серверы Internet.
Помимо общих недостатков шлюзов сеансового уровня (см. ниже) шлюзам NAT присущ свой специфический изъян: они не поддерживают сетевые приложения, пакеты прикладного уровня которых содержат IP-адреса. Единственным исключением является сервис ftp, для которого большинство шлюзов NAT умеет контролировать (и изменять) IP-адреса внутри пакетов прикладного уровня.
Вторым недостатком шлюзов NAT можно назвать то, что они не поддерживают аутентификацию на уровне пользователей, а только на уровне IP-адресов, что делает их уязвимыми для атак по типу IP-spoofing. Кроме того, шлюзы NAT не могут предотвратить атаки типа «отказ в обслуживании», в частности SYN-flooding, поэтому их имеет смысл применять только совместно с другими типами шлюзов сеансового и/или прикладного уровней. Кроме шлюзов NAT достаточно известны шлюзы IPX/IP, предназначенные для организации выхода в Internet компьютеров, работающих в сетях IPX/SPX. При запросе клиента внутренней сети к серверу Internet шлюз перехватывает запрос и вместо пакета IPX формирует соответствующий IP-пакет. При поступлении отклика от сервера шлюз делает обратное преобразование. Пожалуй, это самый надежный тип шлюзов, поскольку внутренняя сеть имеет принципиально другую, по сравнению с TCP/IP, программную среду. Не было отмечено еще ни одного случая взлома такой инфраструктуры. Кроме того, в отличие от шлюзов NAT, аутентификация на шлюзах IPX/IP осуществляется не только на уровне сетевых адресов компьютеров, но и на уровне пользователей с помощью информации база данных NDS (для NetWare 4.x и 5.x) или BINDERY (для NetWare 3.x). Правда, такая аутентификация возможна лишь при доступе из внутренней сети в Internet, за исключением случая, когда внешний клиент использует NetWare на основе TCP/IP.
ПОСРЕДНИКИ СЕАНСОВОГО УРОВНЯ
Прежде чем разрешить установление соединения TCP между компьютерами внутренней и внешней сети, посредники сеансового уровня сначала как минимум регистрируют клиента. При этом неважно, с какой стороны (внешней или внутренней) этот клиент находится. При положительном результате регистрации между внешним и внутренним компьютерами организуется виртуальный канал, по которому пакеты передаются между сетями. С этого времени посредник не вмешивается в процесс обмена данными и не фильтрует информацию. Но такая схема является обобщенной, конкретные реализации шлюзов прикладного уровня могут иметь свои особенности. Наиболее известным и популярным посредником сеансового уровня является посредник SOCKS 5, который выступает в качестве сервера SOCKS 5. Когда клиент пытается связаться с сервером, находящимся по другую сторону посредника, то его SOCKS-клиент обращается к SOCKS-серверу, где происходит не только регистрация, но и полноценная аутентификация на основе имени и пароля пользователя. Аутентификация может быть организована так, чтобы пароль передавался в зашифрованном виде. При положительном результате аутентификации посредник SOCKS разрешает установление соединения клиента с сервером и более не вмешивается в процесс обмена информацией. Однако сервис SOCKS 5 позволяет устанавливать между клиентом и посредником передачу данными в зашифрованном виде по протоколу SSL. Принимая во внимание перечисленные характеристики, очевидно, что применение посредника SOCKS 5 особенно актуально в ситуации, когда сервер находится во внутренней сети, а клиент — в общедоступной. Но и случай, когда внутренние клиенты обращаются к ресурсам Internet, не стоит сбрасывать со счетов, поскольку посредник SOCKS 5 позволяет регулировать доступ на уровне имен и паролей пользователей. Недостатком посредников SOCKS является необходимость установки специализированного программного обеспечения — клиентской части SOCKS — на каждое клиентское место.
ОБЩИЕ НЕДОСТАТКИ ШЛЮЗОВ СЕАНСОВОГО УРОВНЯ
Основным недостатком шлюзов сеансового уровня следует назвать невозможность регулирования передачи информации на прикладном уровне и, как следствие, отслеживания некорректных или потенциально опасных действий пользователя. Например, они не позволят контролировать выполнение команды PUT сервиса ftp или отфильтровывать приложения ActiveX со стороны внешних машин, если такая операция допустима для внутренних клиентов.
Хотя применение шлюзов сеансового уровня позволяет предотвратить ряд опасных атак на внутреннюю сеть, некоторые типы атак, в частности категории «отказ в обслуживании», можно реализовать в обход этих шлюзов. За исключением шлюза IPX/IP и посредника SOCKS 5, все остальные фильтры имеют крайне ненадежную систему идентификации и аутентификации, основанную на IP-адресах отправителя/получателя. В свою очередь, применение шлюзов IPX/IP и SOCKS 5 привносит свои проблемы, так как требует установки на клиентские машины специализированного ПО.
За исключением шлюзов IPX/IP и SOCKS 5, другие шлюзы сеансового уровня обычно не поставляются в виде коммерческого продукта. Тем не менее все межсетевые экраны экспертного класса в обязательном порядке комплектуются самыми разными шлюзами сеансового уровня (так же, как и сетевыми фильтрами), поскольку посредники прикладного уровня или инспекторы состояния не могут отслеживать передачу данных на нижних уровнях иерархии OSI.
ПОСРЕДНИКИ ПРИКЛАДНОГО УРОВНЯ
Посредники прикладного уровня (application-level proxy), часто называемые proxy-серверами, контролируют и фильтруют информацию на прикладном уровне иерархии OSI (см. Рисунок 4). Посредники различают по поддерживаемым протоколам прикладного уровня: чем их больше, тем дороже продукт. Наиболее часто поддерживаются службы Web (HTTP), ftp, SMTP, POP3/IMAP, NNTP, Gopher, telnet, DNS, RealAudio/RealVideo. Когда клиент внутренней сети обращается, например, к серверу Web, то его запрос попадает к посреднику Web (или перехватывается им). Последний устанавливает связь с сервером от имени клиента, а полученную информацию передает клиенту. Для внешнего сервера посредник выступает в качестве клиента, а для внутреннего клиента — в качестве сервера Web. Аналогично посредник может работать и в случае внешнего клиента и внутреннего сервера.
Рисунок 4. Посредники прикладного уровня оперируют на прикладном уровне. |
Посредники прикладного уровня делятся на прозрачные (transparent) и непрозрачные. Прозрачные посредники невидимы для клиентов и серверов: клиент обращается к серверу самым обычным образом, а посредник перехватывает запрос и действует от лица клиента. Особой популярностью пользуются прозрачные посредники для сервиса Web, их нередко устанавливают провайдеры Internet в целях повышения производительности работы и снижения нагрузки на глобальные каналы связи за счет кэширования информации.
В случае непрозрачных посредников клиентскую систему требуется явным образом настроить на работу с посредником (например, при использовании непрозрачного посредника Web в опциях настройки браузеров необходимо указать IP-адрес посредника и присвоенный ему порт TCP). Непрозрачные посредники хороши там, где требуется строгая аутентификация при входе во внутреннюю сеть или на выходе из нее, особенно для служб, не поддерживающих шифрование паролей. Обычно это службы telnet и ftp, при этом задействуется система одноразовых паролей (One-Time Password, OTP) (более подробно о системах OTP см. в статье «Удаленное управление сетевыми ОС» в LAN №5 за 1999 г.).
Рисунок 5. Установление соединения telnet с сервером tn.anywhere.com, находящимся за межсетевым экраном fw.anywhere.com. |
На Рисунке 5 показан типичный пример использования telnet. Здесь клиент с помощью системы OTP устанавливает соединение с сервером tn.anywhere.com, находящимся за непрозрачным посредником fw.anywhere.com. Пользователь сначала должен зарегистрироваться на посреднике, сообщив для начала свое имя, в ответ на которое ему передается вызов (673 jar564). С помощью калькулятора OTP пользователь вычисляет затем парольную фразу, которую и вводит в поле Password. Далее он сообщает адрес сервера, с которым собирается установить соединение. Следует отметить, что регистрации на сервере tn.anywhere.com не требуется, поскольку межсетевой экран и данный сервер используют общую базу учетных записей пользователей.
Общим недостатком непрозрачных посредников является их «непрозрачность» для клиентского ПО и пользователей. Далеко не всякие клиентские программы можно настроить, например, на непрозрачные посредники SMTP, POP3, IMAP4, DNS, ftp.
В отличие от шлюзов сеансового уровня посредники прикладного уровня обрабатывают только те пакеты данных прикладного уровня, службы которых ими поддерживаются, а пакеты неизвестных (для посредника) или не сконфигурированных протоколов удаляются из обращения. Например, если посредник настроен только на обслуживание сервиса ftp, то он не пропустит пакеты telnet или HTTP.
Посредник прикладного уровня проверяет содержимое каждого пакета данных. Более того, посредник фильтрует пакеты на уровне конкретных операций сетевых служб. Например, межсетевой экран Raptor Firewall компании AXENT Technologies позволяет отфильтровывать пакеты ftp, содержащие команду PUT.
Посредники прикладного уровня в обязательном порядке поддерживают строгую аутентификацию с помощью либо операционной системы или одной из служб каталогов (доменов) NDS, Windows NT, NIS/NIS+, либо систем RADIUS, TACACS и т. д.
Оборотной стороной названных возможностей посредников прикладного уровня является их невысокая производительность (для тех сетевых служб, где не предусматривается кэширование информации). Вдобавок, для каждого соединения TCP посредник вынужден устанавливать два канала связи: один — с сервером, другой — с клиентом. Но следует помнить, что узким местом соединений с Internet являются главным образом медленные глобальные линии связи, поэтому о невысокой производительности посредников прикладного уровня можно говорить весьма условно.
Особое место среди посредников прикладного уровня занимают посредники Web, поскольку наряду с контролем трафика они кэшируют информацию. В силу своих функциональных возможностей посредники Web превратились в самостоятельную отрасль разработки ПО, поэтому ниже мы более подробно остановимся на этом сервисе.
ПОСРЕДНИКИ WEB
Сервис Web является основным в глобальной сети Internet. Однако медленные каналы связи, активное использование графики и мультимедиа на страницах Web ведут к снижению производительности работы пользователей в Internet. Между тем пользователи очень часто обращаются к одним и тем же ресурсам Internet. Поэтому для повышения скорости доступа все популярные браузеры кэшируют информацию. Тем не менее в корпоративной среде кэширование на уровне отдельных компьютеров не способно решить всех проблем, так как к одним и тем же ресурсам нередко обращаются совершенно разные пользователи, особенно если они работают в одной организации. Очевидно, что наилучшим способом борьбы с невысокой производительностью глобальных линий является установка кэширующего посредника Web на границе внутренней сети. Вдобавок, такой подход позволяет снизить нагрузку на каналы связи Internet, и таким образом либо экономить деньги, либо запускать дополнительные сетевые службы.
Кэширующих посредников Web устанавливают даже там, где не требуется аутентификации пользователей или фильтрации информации, а исключительно в целях повышения производительности.
Существует четыре типа кэширования информации на посредниках Web:- пассивное;
- активное;
- негативное;
- иерархическое.
Наиболее мощные современные посредники Web могут поддерживать все четыре типа кэширования. При пассивном кэшировании (иначе называемом базовым или кэшированием по требованию) клиент через браузер Web обращается к посреднику, а посредник возвращает запрашиваемую информацию из своего кэша, если она там есть. В противном случае посредник Web обращается к серверу Web.
Активное кэширование предполагает наличие у посредника некоторого интеллекта. Кэширование осуществляется заранее (read-ahead), до поступления явного запроса от клиента. Например, браузер запрашивает страницу Web, содержащую рисунки или иные элементы. Посредник не будет дожидаться явных запросов со стороны клиента на подкачку этих компонентов и постарается получить их самостоятельно, так сказать, загодя. Активное кэширование происходит в фоновом режиме, что повышает производительность работы.
Негативное кэширование подразумевает кэширование отказов. Если браузер запросил страницу, которую посредник не может получить (нет связи или из-за отсутствия страницы на сервере), то отказ кэшируется. При повторном обращении клиент сразу получит отрицательный ответ. Однако посредник будет продолжать пытаться получить затребованную страницу в фоновом режиме. Негативное кэширование у посредников Web появилось недавно, в так называемом втором поколении посредников, разработанных в соответствии с технологией Harvest/Squid. Созданные в рамках старой технологии CERN посредники не кэшируют отказы и пытаются каждый раз связаться с сервером Web.
Иерархическое кэширование представляет собой еще одно достижение технологии Harvest/Squid. В соответствии с ней посредники могут образовывать сложные иерархические структуры с равноправными или подчиненными связями. Например, организация имеет два одинаковых по производительности канала в Internet. На каждый канал устанавливается посредник, и между ними определяются равноправные отношения. В этом случае при отсутствии запрошенной информации в кэше посредник обратится не к серверу Internet, а ко второму посреднику. Если у второго посредника в кэше имеется необходимая информация, то она будет передана первому посреднику и далее клиенту. В противном случае первый посредник будет вынужден сам обратиться к серверу Web. При подчиненных отношениях типа «потомок—родитель» посредник со статусом «потомок» никогда не обращается к серверу Web самостоятельно, а только через «родителя». Подобные схемы значительно уменьшают загрузку глобальных линий связи и повышают отказоустойчивость подключения. Иерархическое кэширование организуется в соответствии с одним из двух стандартизированных протоколов кэширования: ICP (Internet Caching Protocol) или CARP (Cache Array Routing Protocol). Хотя протокол CARP разработан позже ICP, он получил большее распространение, поскольку устраняет избыточное кэширование информации между посредниками.
Рисунок 6. Прямое кэширование Web. |
Кроме типов кэширования (пассивное, активное, негативное и иерархическое) посредники различаются также по режимам кэширования: прямому (forward) и обратному (reverse). Прямое кэширование — это то, к чему мы все привыкли. Т. е. посредник устанавливается на входе во внутреннюю сеть и кэширует информацию с серверов Internet для клиентов внутренней сети (см. Рисунок 6). При использовании прозрачного посредника клиенты могут даже не знать о существовании посредника, в то время как в случае непрозрачного посредника в опциях браузера необходимо задать его координаты.
Рисунок 7. Обратное кэширование Web. |
Обратное кэширование подразумевает обслуживание внешних клиентов, запрашивающих информацию с серверов, расположенных во внутренней сети организации. Т. е. за посредником с обратным кэшированием закрепляется один или несколько серверов Web, информацию с которых он скачивает. Такой посредник лучше всего устанавливать у провайдера Internet, чтобы снизить нагрузку на канал связи с провайдером и увеличить производительность доступа внешних клиентов к серверу Web (см. Рисунок 7). Посредник с обратным кэшированием должен быть прозрачным для внешних пользователей. Однако это возможно лишь при обратном кэшировании только одного сервера (к порту 80 протокола TCP, отвечающему за сервис HTTP, на посреднике можно привязать только один сервер — для других серверов необходимо назначать другие порты). Тем не менее с помощью не очень сложных манипуляций работу посредника по кэшированию сразу нескольких серверов можно сделать практически прозрачной для клиентов.
Некоторые посредники позволяют кэшировать информацию в автономном режиме, т. е. фактически выполняя функции автономного браузера.
Кэширование информации — это, конечно, очень привлекательная функция посредников Web, но нельзя забывать и о других возможностях, характерных для посредников прикладного уровня. Посредники Web способны поддерживать надежную аутентификацию пользователей, фильтровать приложения Java и ActiveX, осуществлять поиск вирусов, регулировать доступ пользователей к определенным URL. Более того, для посредников Web поставляются специальные программы, содержащие списки порнографических, расистских, игровых, развлекательных серверов. С помощью таких программ администратору легко регулировать доступ к подобным узлам.
ИНСПЕКТОРЫ СОСТОЯНИЯ
Инспекторы состояния, или иначе брандмауэры с контекстной проверкой (stateful inspection firewall), являются по сути шлюзами сеансового уровня с расширенными возможностями. Термин «инспектор состояния» был введен компанией Check Point, дабы подчеркнуть отличие ее технологии от других применяемых в межсетевых экранах. Инспекторы состояния оперируют на сеансовом уровне, но «понимают» и протоколы прикладного уровня (см. Рисунок 8). Т. е. при получении пакета данных содержимое этого пакета сравнивается с некими шаблонами, специфическими для соответствующего протокола прикладного уровня. И в зависимости от результата сравнения, пакет либо передается далее, либо отбрасывается. Чем мощнее инспектор состояния, тем больший список шаблонов он имеет. Если пакет не соответствует ни одному шаблону, то он будет отсеян.
Рисунок 8. Инспектор состояния оперирует на сеансовом уровне, но анализирует пакеты вышестоящих уровней. |
В отличие от посредника прикладного уровня, открывающего два виртуальных канала TCP (один — для клиента, другой — для сервера) для каждого соединения, инспектор состояния не препятствует организации прямого соединения между клиентом и сервером. За счет этого производительность инспектора состояния оказывается много выше производительности посредников прикладного уровня и приближается к производительности сетевых фильтров. Правда, разработчики посредников прикладного уровня указывают на более высокий уровень защищенности своих продуктов, поскольку трафик контролируется непосредственно на прикладном уровне. Но большинство специалистов считают такие утверждения спорными или, во всяком случае, не очевидными. У кого, например, повернется язык назвать недостаточно надежным межсетевой экран Check Point FireWall-1, являющийся инспектором состояния, когда ему принадлежит 40% рынка межсетевых экранов и он удостоен множества самых престижных наград, в том числе и за безопасность?
Со своей стороны разработчики инспекторов состояния указывают, что их системы имеют гораздо больше возможностей расширения. При появлении новой службы или нового протокола прикладного уровня для его поддержки достаточно добавить несколько шаблонов. В то же время разработчики посредников прикладного уровня вынуждены писать «с нуля» модуль для каждого нового протокола. Так-то оно так, но добавить модуль в посредник прикладного уровня ничуть не сложнее, чем добавить шаблоны в инспектор состояния. К тому же производители инспекторов состояния и посредников прикладного уровня привыкли решать проблему кардинальным способом, посредством выпуска новой версии продукта.
Единственным достоинством инспекторов состояния (не затрагивая вопрос производительности) по сравнению с посредниками прикладного уровня является то, что инспектор состояния абсолютно прозрачен для клиентов и не требует дополнительной настройки клиентского ПО. Однако, в свою очередь, классические инспекторы состояния не годятся для кэширования Web. Поэтому даже если межсетевой экран основан на инспекторе состояния, для кэширования Web в него включают посредник Web прикладного уровня.
На самом деле, спор, что лучше — инспектор состояния или посредник прикладного уровня, представляется беспочвенным. Для большинства задач они примерно равноценны. Преимущество же в производительности инспекторов состояния не имеет особого значения, если речь идет о подключении к Internet по медленным каналам связи.
Межсетевые экраны экспертного класса основываются либо на технологии инспекторов состояния, либо на технологии посредников прикладного уровня, но обязательно дополняются сетевыми фильтрами и шлюзами сеансового уровня. Подавляющее большинство выпускаемых межсетевых экранов представляет собой посредники прикладного уровня, но, как было отмечено ранее, инспекторы состояния (вернее, один инспектор — FireWall-1 компании Check Point) доминируют на рынке.
ДРУГИЕ ВОЗМОЖНОСТИ МЕЖСЕТЕВЫХ ЭКРАНОВ
Помимо выполнения своих основных функций, межсетевые экраны экспертного класса имеют хорошо продуманную систему протоколирования событий и оповещения администраторов. МЭ позволяет регистрировать все обращения пользователей к ресурсам, проходящие через экран, в том числе кто, когда, с какой машины обратился к конкретному ресурсу или получил отказ. Протоколирование позволяет выявить случаи проведения атак на внутреннюю сеть, обнаружить местонахождение хакера и заранее блокировать трафик от него.
Составной частью большинства коммерческих межсетевых экранов экспертного уровня являются средства построения виртуальных частных сетей, позволяющие шифровать информацию при ее передаче по общедоступной сети. Более того, такими средствами обладают даже некоторые сетевые фильтры на базе аппаратных маршрутизаторов.
Немалая часть межсетевых экранов снабжается средствами поддержки удаленных пользователей, в том числе мощными средствами аутентификации таких пользователей.
ЗАКЛЮЧЕНИЕ
Межсетевые экраны не являются панацеей при борьбе с атаками злоумышленников. Они не могут предотвратить атаки внутри локальной сети, но вместе с другими средствами защиты играют исключительно важную роль для защиты сетей от вторжения извне. Понимание технологии работы межсетевых экранов позволяет не только сделать правильный выбор при покупке системы защиты, но и корректно настроить межсетевой экран. Враг не должен пройти!
Константин Пьянзин — обозреватель LAN. С ним можно связаться по адресу: koka@lanmag.ruВ середине 90-х годов атака по типу SYN-flooding была одной из самых распространенных. Она использует недостатки протокольной машины TCP. Атака SYN-flooding попадает под категорию атак «отказ в обслуживании» (Denial of Service, DoS), приводящих к зависанию компьютера — т. е. компьютер продолжает работать, но становится недоступным через сеть.
Когда клиентский компьютер устанавливает соединение с сервером по протоколу TCP, он посылает TCP-пакет с выставленным битом SYN. В ответ сервер посылает TCP-пакет с битами SYN/ACK. В свою очередь клиент отправляет TCP-пакет с битом ACK. После этого соединение между клиентом и сервером считается установленным. Такая схема соединения называется трехступенчатой, поскольку она предусматривает обмен тремя пакетами.
Когда сервер получает пакет SYN, он выделяет дополнительную память для нового соединения. В большинстве операционных систем для каждой из сетевых служб предусмотрен лимит (обычно равный десяти) на количество вновь создаваемых соединений TCP (в некоторых системах такого лимита нет, но положение от этого не намного лучше, поскольку при отсутствии свободной памяти зависнет весь компьютер, а не только одна конкретная служба). Пока сервер не получит пакет SYN/ACK или пакет RST (см. далее) либо не наступит тайм-аут на вновь создаваемое соединение (обычно 75 секунд), соединение продолжает резервировать память.
Атака SYN-flooding предусматривает посылку на сервер множества пакетов TCP с выставленным битом SYN от лица несуществующих или неработающих хостов (за счет применения подмены IP-адресов). Последнее требование важно, поскольку если запрос на установку соединения придет от имени работающего хоста, то, когда сервер пошлет в его адрес пакет SYN/ACK, хост ответит пакетом RST (reset), инициирующим сброс соединения. И соединение будет удалено из памяти сервера.
При атаке SYN-flooding выделенная под установление новых соединений память сервера быстро исчерпывается, и сетевой сервис зависает.
Для противодействия атакам SYN-flooding помимо увеличения размера памяти под устанавливаемые соединения и уменьшения тайм-аута на межсетевых экранах применяются различные хитроумные методы борьбы. Установка межсетевых экранов сеансового и прикладного уровня или инспекторов состояний кардинально решает проблему атак SYN-flooding, поскольку именно они отражают все атаки, в то время как компьютеры внутренней сети даже не знают об их проведении.