Брандмауэры: эволюция идей и методов

15 февраль, 2006 - 00:00Леонід Бараш

Компьютерная безопасность все еще пребывает на стадии становления. Технологии, такие как брандмауэры, антивирусная защита, системы обнаружения и предотвращения вторжений (IDS/IPS), аутентификация, криптозащита и ряд других, мигрируют из исследовательских лабораторий в продуктивные сети и становятся одними из основных компонентов системы защиты корпоративного бизнеса, использующего сетевые технологии.

Сетевая безопасность – очень широкая и многогранная тема, включающая такие вопросы, как управление доступом, аудит, физическая безопасность, отказоустойчивость, резервирование и т. д. Системы безопасности весьма сложны и зачастую должны удовлетворять плохо совместимым требованиям, к примеру обладать высокой производительностью, быть отказоустойчивыми, эффективными и простыми в управлении. В борьбе за покупателя одни производители делают акцент на стоимости своих систем, другие – на скорости, третьи – на особенностях реализованных технологий.

Неспециалистам, как правило, довольно сложно разобраться во всем этом многообразии. Ниже сделана попытка конспективно представить основные принципы работы брандмауэров и систем IDS/IPS.

Фильтрация пакетов и прокси-серверы

Первые брандмауэры базировались на методе фильтрации пакетов. В своей простейшей форме эти функции реализовались в маршрутизаторе, который анализировал поступающие из сети пакеты. Решение пропускать или отклонить пакет основывалось на таких его атрибутах, как IP-адреса и номера портов источника и получателя, тип пакета, длина. Информация об этом помещалась в специальной таблице – списке управления доступом (Access Control List – ACL).

Родственной формой является брандмауэр сетевого уровня, называемый так потому, что он работает на этом уровне эталонной модели OSI. Соответствующий маршрутизатор может быть так сконфигурирован, чтобы одни типы IP-трафика блокировать, а другие – пропускать. Обычно это осуществляется посредством запрещения или разрешения выбранного набора TCP- и UDP-портов. Например, порт 25, как правило, оставляют открытым для работы почты по протоколу SMTP, а вот порт 23 для Telnet можно закрыть, чтобы препятствовать доступу из Интернета к другим сервисам на корпоративном сервере. Подобные методы фильтрации получили название статических. Брандмауэры сетевого уровня известны еще как фильтрующие маршрутизаторы (screening routers), поскольку они фильтруют трафики разных типов. Обычно они выполняют и фильтрацию пакетов на базе ACL.

Одним из недостатков этого метода является огромный размер ACL в случае блокировки большого количества доменов и портов, что может привести к замедлению работы маршрутизатора. Другая трудность заключается в том, что некоторые порты определенным сервисам присваиваются динамически и случайным образом. К примеру, при установке FTP-соединения FTP-сервер в ответ на запрос клиента присваивает ему два порта из диапазона 1024–65535: один для управления, а второй – для передачи данных. Поскольку оба номера выбираются случайно, то при статической фильтрации необходимо оставлять постоянно открытыми все порты выше значения 1023, что существенно снижает безопасность.

Избежать этого позволяет метод динамической фильтрации пакетов. Он был предложен компанией Check Point в 1993 г. под названием stateful inspection. В отличие от статической фильтрации, где решения принимаются на основе информации в заголовке пакета, здесь отслеживается каждое соединение, происходящее через все интерфейсы брандмауэра, с целью определить его законность с точки зрения установленных политик безопасности. Для лучшей производительности пакеты перехватываются на сетевом уровне, но затем осуществляется доступ к данным всех коммуникационных уровней и их анализ. Кроме этого, брандмауэр выполняет мониторинг состояния соединения и собирает информацию в таблицу состояний. Таким образом, решение о фильтрации принимается не только на базе определенных администратором правил, но и контекста, сформированного предыдущими пакетами, которые прошли через брандмауэр. Остановимся подробнее на одном из алгоритмов работы брандмауэра при динамической фильтрации пакетов.

Рассмотрим соединение TCP/IP. Первый пакет любого нового соединения содержит свой набор флагов синхронизации SYN и обнуленный флаг ACK. Его можно назвать инициатором. Пакеты, не имеющие такой структуры флагов, именуют последующими. Если пакет-инициатор поступает из WAN, это значит, что кто-то из Интернета пытается подсоединиться к корпоративной локальной сети. За исключением нескольких специальных случаев, о которых будет упомянуто ниже (протоколы UDP и ICMP), такие пакеты отклоняются и регистрируются в журнале событий. Когда же инициатор приходит из LAN, то налицо попытка доступа к Интернету из корпоративной сети. Если это не противоречит установленной политике безопасности, соединение разрешается. В содержимое кэша добавляется информация о соединении, такая как IP-адрес, порт TCP, номер пакета и т. п. При поступлении в брандмауэр последующего пакета данные о соединении извлекаются и сверяются с содержащимися в кэше. Пакет пропускается только в том случае, если они соответствуют установленному ранее соединению.

Дело обстоит несколько сложнее в случае обмена по протоколу UDP или ICMP (Internet Control Message Protocol). Их пакеты не содержат столь подробной информации о соединении. Но даже в худшем случае они имеют IP-адреса отправителя и получателя. К тому же в пакете UDP указывается пара портов, а в ICMP – тип и информационный код. Все эти данные могут быть проанализированы с целью описания «виртуального соединения». К примеру, запись в кэше будет создаваться для любого UDP-пакета, поступившего из LAN. В ней будут сохранены IP-адреса и пара портов. Ответный пакет из Интернета будет пропущен только в том случае, если совпадет соответствующая информация.

Еще одним средством защиты сетей являются прокси-серверы, приложения, действующие как посредники между частной сетью и Интернетом. Они обычно являются компонентами брандмауэров (иногда говорят наоборот, что брандмауэры – части прокси-серверов, однако в данном контексте это не имеет значения) и играют роль шлюзов безопасности для клиентских компьютеров при подсоединении их к публичным сетям.

Существует два основных типа прокси-серверов. Первый, шлюз уровня канала (circuit-level gateway), устанавливает виртуальный канал между компьютерами внутренней сети и прокси-сервером на ее границе. Прокси-сервер управляет всеми связями между внутренней частной сетью и внешней публичной сетью. Поскольку во всех исходящих пакетах IP-адрес источника он подменяет своим, то из внешней сети компьютеры пользователей «не видны».

Второй тип прокси-сервера, называемый шлюзом уровня приложений (application-level gateway), работает, как видно из названия, на седьмом, прикладном, уровне эталонной модели OSI. Он может быть использован для анализа пакетов, поступающих извне на его WAN-интерфейс, в соответствии с установленными политиками безопасности. Шлюз способен анализировать адреса пакетов и другую информацию в заголовке, пропускать или отклонять пакеты в зависимости от их контекста, изменять адреса, заголовки или данные для того, чтобы скрыть ключевые сведения о приложениях и сервисах, работающих во внутренней сети. Сложность в использовании шлюзов приложений заключается в том, что они обеспечивают прокси-сервисы только для специально сконфигурированных приложений и протоколов, таких как HTTP, FTP, SMTP и Telnet. Для каждого типа приложения, требующего управления доступом через брандмауэр, необходимо инсталлировать и сконфигурировать соответствующий прокси-сервис. К примеру, при конфигурировании FTP-прокси можно некоторые команды запретить, а SMTP-прокси можно настроить таким образом, чтобы он принимал почту из внешней сети без раскрытия внутреннего адреса, а затем пересылал ее на внутренний почтовый сервер.

Как видим, функциональность прокси-серверов шире по сравнению с фильтрующими маршрутизаторами, поскольку они оперируют на более высоких уровнях стека протоколов и обеспечивают лучшее управление доступом к сети.

Системы обнаружения и предотвращения вторжений

На сегодняшний день система обнаружения вторжений (Intrusion Detection System – IDS) и ее модификация – система предотвращения вторжений (Intrusion Prevention System – IPS) – являются наиболее интеллектуальными средствами защиты сетей.

За свою историю у IDS были как впечатляющие подъемы, так и падения. В 1980 г. профессор Джеймс Андерсен (James Anderson) из Университета Северной Каролины (США) первым предположил, что контрольная запись выполняемого процесса может быть использована для отслеживания атак. Важность этой гипотезы в то время еще не была осознана, и основной функцией систем безопасности тех дней оставалось запрещение неавторизованным источникам доступа к конфиденциальным данным.

В 1987 г. профессор Дороти Деннинг (Dorothy Denning), ныне преподаватель на курсах последипломной подготовки ВМС США в г. Монтерей (штат Калифорния), предложила абстрактную модель IDS. Она базировалась на гипотезе, что попытки использовать уязвимости должны быть связаны с анормальным поведением системы. Поэтому вторжения могут быть обнаружены путем исследования случаев его отклонения от нормы. Приведем примеры такого поведения:

  • попытка взлома: злоумышленник, пытающийся проникнуть в систему, может генерировать слишком высокую интенсивность ошибок пароля, относящихся к одной учетной записи или системе в целом;
  • замаскированный или успешный взлом: некто, регистрирующийся в системе с помощью неавторизованной учетной записи и пароля, может иметь отличные от легитимного пользователя время регистрации, местоположение или тип соединения;
  • несанкционированный доступ легитимного пользователя к информации: сотрудник, пытающийся получить доступ к конфиденциальным документам, может регистрироваться в системе в необычное время и направлять данные на удаленный принтер, неиспользуемый в типичных ситуациях.

Существует два основных класса IDS. В первом техника обнаружения вторжений делится на два типа: анормальное поведение и неправильное использование. Для обнаружения анормального поведения вводится набор статистических метрик, описывающих поведение объекта, обычно пользователя, группы пользователей или хоста. Профиль пользователя, к примеру, может включать такую информацию, как средняя длительность Telnet- или FTP-сессии, количество байтов, передаваемых в обоих направлениях, время дня или терминалы, с которых он обычно регистрируется. Профиль хоста может содержать среднее время утилизации процессора, среднее число регистрируемых пользователей и т. п. IDS выполняет мониторинг компьютерной системы и постоянно сравнивает профили текущей сессии пользователя с имеющимися в базе данных. В случае определения больших (в некотором смысле) отклонений от нормального поведения она генерирует сигнал тревоги сотруднику системы безопасности. Обычно сохраняемые профили постоянно обновляются для того, чтобы отражать изменения в поведении объектов. Так как эта модель работает, базируясь на поиске сессий с непредусмотренным характером, ее называют моделью определения аномалий (anomaly detection model).

Модель неправильного использования работает, основываясь на знании набора известных атак, данные о которых хранятся в системной БД в виде совокупности характерных сигнатур. Способ, которым подобные атаки представляются системе, является важной характеристикой ее функционирования. Модель работает во многом подобно антивирусным программам. Реализация таких IDS обычно включает экспертную систему, которая выполняет сопоставление с имеющейся базой правил. Очевидная трудность этой архитектуры – необходимость постоянного обновления системы правил, по мере того как становятся известными новые методы атак.

Второй класс также определяет два типа IDS в зависимости от того, выполняется мониторинг отдельного хоста или множества хостов, объединенных в сеть. Первые IDS использовались для анализа данных аудита одной машины и делали свои заключения только на базе этой информации. Следовательно, они не могли обнаружить атак, которые предпринимались из нескольких источников или направлялись на несколько машин в сети. Эффективным решением здесь являются IDS, которые осуществляют пассивный мониторинг сети на предмет подозрительной активности. Так как они зависят исключительно от повсеместно используемого стека протоколов TCP/IP, то их без преувеличений можно назвать архитектурно независимыми, и такие IDS могут совершенно естественно осуществлять мониторинг гетерогенных сетей.

Одна из проблем, с которой сегодня сталкивается большинство архитектур IDS, – масштабируемость. Монолитные или распределенные IDS, собирающие данные аудита и передающие их центральному хосту для обработки, неэффективны в больших корпоративных сетях с огромным количеством рабочих станций. В этих случаях уместно построение IDS с многоуровневой архитектурой. Каждый узел в такой модели собирает данные аудита, которые он получает от нижнего уровня, и передает результаты верхнему уровню. Таким образом, обнаружение вторжений может выполняться на любом уровне иерархии.

Заметим, что классические IDS не делали ничего – они только генерировали сигнал тревоги при обнаружении атаки. Как остроумно заметил в свое время Ричард Стиннон (Richard Stiennon), аналитик из Gartner Group, если есть возможность правильно обнаружить атаку, то было бы неплохо и предотвратить ее. К концу 2003 г., вероятно, каждый производитель IDS переименовал свои продукты в IPS, просто добавив модули блокировки в сенсоры.

Некоторые из первых IPS, появившихся на рынке, были недостаточно эффективными. Они использовали технику сигнатур и умели определить и блокировать несколько дюжин «червей» и широко известных атак. Они не очень хорошо продавались до тех пор, пока не случилась массированная атака «червей» в 2004 г.

Схожесть между брандмауэрами, IDS, IPS, антивирусными и антиспамовыми шлюзами инициировала движение по объединению этих технологий в общую платформу. Ряд производителей начал приобретать недостающие технологии с тем, чтобы встроить суммарные возможности в коммутаторы. Такие комбинированные системы имеют привлекательный набор возможностей, высокую производительность и хорошую цену по сравнению с установкой серии отдельных продуктов.