Основные компоненты межсетевых экранов
Большинство компонентов межсетевых экранов можно отнести к одной из трех категорий:
• фильтрующие маршрутизаторы;
• шлюзы сетевого уровня;
• шлюзы прикладного уровня.
Эти категории можно рассматривать как базовые компоненты реальных межсетевых экранов. Лишь немногие межсетевые экраны включают только одну из перечисленных категорий. Тем не менее эти категории отражают ключевые возможности, отличающие межсетевые экраны друг от друга.
Фильтрующие маршрутизаторы.Фильтрующий маршрутизатор представляет собой маршрутизатор или работающую на сервере программу, сконфигурированные таким образом, чтобы фильтровать входящие и исходящие пакеты. Фильтрация пакетов осуществляется на основе информации, содержащейся в TCP- и IP-заголовках пакетов. Процесс инкапсуляции передаваемых данных и формирования TCP- и IP-заголовков пакетов с данными в стеке протоколов TCP/IP показан на рис. 30.
Фильтрующий маршрутизатор обычно может фильтровать IP-пакеты на основе группы следующих полей заголовка пакета:
• IP-адрес отправителя (адрес системы, которая послала пакет);
• IP-адрес получателя (адрес системы, которая принимает пакет);
• порт отправителя (порт соединения в системе-отправителе);
• порт получателя (порт соединения в системе-получателе).
Порт - это программное понятие, которое используется клиентом или сервером для посылки или приема сообщений; порт идентифицируется 16-битовым числом.
Рис. 30. Схема инкапсуляции данных в стеке протоколов TCP/IP
В настоящее время не все фильтрующие маршрутизаторы фильтруют пакеты по TCP/UDP-порту отправителя, однако многие производители маршрутизаторов начали обеспечивать такую возможность. Некоторые маршрутизаторы проверяют, с какого сетевого интерфейса маршрутизатора пришел пакет, и затем используют эту информацию как дополнительный критерий фильтрации.
Фильтрация может быть реализована различным образом для блокирования соединений с определенными хост-компьютерами или портами. Например, можно блокировать соединения, идущие от конкретных адресов тех хост-компьютеров и сетей, которые считаются враждебными или ненадежными.
Добавление фильтрации по портам TCP и UDP к фильтрации по IP-адресам обеспечивает большую гибкость. Известно, что такие серверы, как демон TELNET, обычно связаны с конкретными портами (например, порт 23 протокола TELNET). Если межсетевой экран может блокировать соединения TCP или UDP с определенными портами или от них, то можно реализовать политику безопасности, при которой некоторые виды соединений устанавливаются только с конкретными хост-компьютерами.
Например, внутренняя сеть может блокировать все входные соединения со всеми хост-компьютерами за исключением нескольких систем. Для этих систем могут быть разрешены только определенные сервисы (SMTP для одной системы и TELNET или FTP - для другой). При фильтрации по портам TCP и UDP эта политика может быть реализована фильтрующим маршрутизатором или хост-компьютером с возможностью фильтрации пакетов (рис. 31).
Рис. 31. Схема фильтрации трафика SMTP и TELNET
В качестве примера работы фильтрующего маршрутизатора рассмотрим реализацию политики безопасности, допускающей определенные соединения с внутренней сетью с адресом 123.4.*.* Соединения TELNET разрешаются только с одним хост-компьютером с адресом 123.4.5.6, который может быть прикладным TELNET-шлюзом, а SMTP-соединения - только с двумя хост-компьютерами с адресами 123.4.5.7 и 123.4.5.8, которые могут быть двумя шлюзами электронной почты. Обмен no NNTP (Network News Transfer Protocol) разрешается только от сервера новостей с адресом 129.6.48.254 и только с NNTP-сервером сети с адресом 123.4.5.9, а протокол NTP (сетевого времени) - для всех хост-компьютеров. Все другие серверы и пакеты блокируются. Соответствующий набор правил представлен в таблице.
Правила фильтрации
Тип | Адрес отправителя | Адрес получателя | Порт отправителя | Порт получателя | Действие |
TCP | * | 123.4.5.6 | > 1023 | Разрешить | |
TCP | * | 123.4.5.7 | > 1023 | Разрешить | |
TCP | * | 123.4.5.8 | > 1023 | Разрешить | |
TCP | 129.6.48.254 | 123.4.5.9 | > 1023 | Разрешить | |
UDP | * | 123.4.*.* | > 1023 | Разрешить | |
* | * | * | * | * | Запретить |
Первое правило позволяет пропускать пакеты TCP из сети Internet от любого источника с номером порта большим, чем 1023, к получателю с адресом 123.4.5.6 в порт 23. Порт 23 связан с сервером TELNET, а все клиенты TELNET должны иметь непривилегированные порты с номерами не ниже 1024.
Второе и третье правила работают аналогично и разрешают передачу пакетов к получателям с адресами 123.4.5.7 и 123.4.5.8 в порт 25, используемый SMTP.
Четвертое правило пропускает пакеты к NNTP-серверу сети, но только от отправителя с адресом 129.6.48.254 к получателю с адресом 123.4.5.9 с портом назначения 119 (129.6.48.254 -единственный NNTP-сервер, от которого внутренняя сеть получает новости, поэтому доступ к сети для выполнения протокола NNTP ограничен только этой системой).
Пятое правило разрешает трафик NTP, который использует протокол UDP вместо TCP, от любого источника к любому получателю внутренней сети.
Наконец, шестое правило блокирует все остальные пакеты. Если бы этого правила не было, маршрутизатор мог бы блокировать, а мог бы и не блокировать другие типы пакетов. Выше был рассмотрен очень простой пример фильтрации пакетов. Реально используемые правила позволяют осуществить более сложную фильтрацию и являются более гибкими.
Правила фильтрации пакетов формулируются сложно, и обычно нет средств для тестирования их корректности, кроме медленного ручного тестирования. У некоторых фильтрующих маршрутизаторов нет средств протоколирования, поэтому, если правила фильтрации пакетов все-таки позволят опасным пакетам пройти через маршрутизатор, такие пакеты не смогут быть выявлены до обнаружения последствий проникновения.
Даже если администратору сети удастся создать эффективные правила фильтрации, их возможности остаются ограниченными. Например, администратор задает правило, в соответствии с которым маршрутизатор будет отбраковывать все пакеты с неизвестным адресом отправителя. Однако хакер может использовать в качестве адреса отправителя в своем "вредоносном" пакете реальный адрес доверенного (авторизированного) клиента. В этом случае фильтрующий маршрутизатор не сумеет отличить поддельный пакет от настоящего и пропустит его. Практика показывает, что подобный вид нападения, называемый подменой адреса, довольно широко распространен в сети Internet и часто оказывается эффективным.
Межсетевой экран с фильтрацией пакетов, работающий только на сетевом уровне эталонной модели взаимодействия открытых систем OSI-ISO, обычно проверяет информацию, содержащуюся только в IP-заголовках пакетов. Поэтому обмануть его несложно: хакер создает заголовок, который удовлетворяет разрешающим правилам фильтрации. Кроме заголовка пакета, никакая другая содержащаяся в нем информация межсетевыми экранами данной категории не проверяется.
К положительным качествам фильтрующих маршрутизаторов следует отнести:
сравнительно невысокую стоимость;
гибкость в определении правил фильтрации;
небольшую задержку при прохождении пакетов.
Недостатками фильтрующих маршрутизаторов являются:
внутренняя сеть видна (маршрутизируется) из сети Internet;
правила фильтрации пакетов трудны в описании и требуют очень хороших знаний технологий TCP и UDP;
при нарушении работоспособности межсетевого экрана с фильтрацией пакетов все компьютеры за ним становятся полностью незащищенными либо недоступными;
аутентификацию с использованием IP-адреса можно обмануть путем подмены IP-адреса (атакующая система выдает себя за другую, используя ее IP-адрес);
отсутствует аутентификация на пользовательском уровне.
Шлюзы сетевого уровня.Шлюз сетевого уровня иногда называют системой трансляции сетевых адресов или шлюзом сеансового уровня модели OSI. Такой шлюз исключает прямое взаимодействие между авторизированным клиентом и внешним хост-компьютером.
Шлюз сетевого уровня принимает запрос доверенного клиента на конкретные услуги и после проверки допустимости запрошенного сеанса устанавливает соединение с внешним хост-компьютером. После этого шлюз копирует пакеты в обоих направлениях, не осуществляя их фильтрации.
Шлюз следит за подтверждением (квитированием) связи между авторизированным клиентом и внешним хост-компьютером, определяя, является ли запрашиваемый сеанс связи допустимым. Чтобы выявить допустимость запроса на сеанс связи, шлюз выполняет следующую процедуру.
Когда авторизированный клиент запрашивает некоторый сервис, шлюз принимает этот запрос, проверяя, удовлетворяет ли этот клиент базовым критериям фильтрации (например, может ли DNS-сервер определить IP-адрес клиента и ассоциированное с ним имя). Затем, действуя от имени клиента, шлюз устанавливает соединение с внешним хост-компьютером и следит за выполнением процедуры квитирования связи по протоколу TCP. Эта процедура состоит из обмена TCP-пакетами, которые помечаются флагами SYN (синхронизировать) и АСК (подтвердить) (рис. 32).
Рис. 32. Последовательность передачи пакетов SYN, ASC в процессе квитирования связи по протоколу ТСР
Первый пакет сеанса TCP, помеченный флагом SYN и содержащий произвольное число, например 1000, является запросом клиента на открытие сеанса. Внешний хост-компьютер, получивший этот пакет, посылает в ответ пакет, помеченный флагом АСК и содержащий число, на единицу большее, чем в принятом пакете (в нашем случае 1001), подтверждая тем самым прием пакета SYN от клиента.
Далее осуществляется, обратная процедура: хост-компьютер посылает клиенту пакет SYN с исходным числом (например, 2000), а клиент подтверждает его получение передачей пакета АСК, содержащего число 2001. На этом процесс квитирования связи завершается.
Шлюз сетевого уровня признает запрошенное соединение допустимым только в том случае, если при выполнении процедуры квитирования связи флаги SYN и АСК, а также числа, содержащиеся в TCP-пакетах, оказываются логически связанными между собой.
После того как шлюз определил, что доверенный клиент и внешний хост-компьютер являются авторизированными участниками сеанса TCP, и проверил допустимость этого сеанса, он устанавливает соединение. Начиная с этого момента, шлюз копирует и перенаправляет пакеты туда и обратно, не проводя никакой фильтрации. Он поддерживает таблицу установленных соединений, пропуская данные, относящиеся к одному из сеансов связи, зафиксированных в этой таблице. Когда сеанс завершается, шлюз удаляет соответствующий элемент из таблицы и разрывает цепь, использовавшуюся в данном сеансе.
Для копирования и перенаправления пакетов в шлюзах сетевого уровня применяются специальные приложения, которые называют канальными посредниками, поскольку они устанавливают между двумя сетями виртуальную цепь или канал, а затем разрешают пакетам, которые генерируются приложениями TCP/IP, проходить по этому каналу. Канальные посредники поддерживают несколько служб TCP/IP, поэтому шлюзы сетевого уровня могут использоваться для расширения возможностей шлюзов прикладного уровня, работа которых основывается на программах-посредниках конкретных приложений.
Фактически большинство шлюзов сетевого уровня не являются самостоятельными продуктами, а поставляются в комплекте со шлюзами прикладного уровня. Примерами таких шлюзов являются Gauntlet Internet Firewall компании Trusted Information Systems, Alta Vista Firewall компании DEC и ANS Interlock компании ANS. Например, Alta Vista Firewall использует канальные посредники прикладного уровня для каждой из шести служб TCP/IP, к которым относятся, в частности, FTP, HTTP (Hyper Text Transport Protocol) и TELNET. Кроме того, межсетевой экран компании DEC обеспечивает шлюз сетевого уровня, поддерживающий другие общедоступные службы TCP/IP, такие как Gopher и SMTP, для которых межсетевой экран не предоставляет посредников прикладного уровня.
Шлюз сетевого уровня выполняет еще одну важную функцию защиты: он используется в качестве сервера-посредника. Этот сервер-посредник выполняет процедуру трансляции адресов, при которой происходит преобразование внутренних IP-адресов в один "надежный" IP-адрес. Этот адрес ассоциируется с межсетевым экраном, из которого передаются все исходящие пакеты. В результате в сети со шлюзом сетевого уровня все исходящие пакеты оказываются отправленными из этого шлюза, что исключает прямой контакт между внутренней (авторизированной) сетью и потенциально опасной внешней сетью. IP-адрес шлюза сетевого уровня становится единственно активным IP-адресом, который попадает во внешнюю сеть. Таким образом шлюз сетевого уровня и другие серверы-посредники защищают внутренние сети от нападений типа подмены адресов.
После установления связи шлюзы сетевого уровня фильтруют пакеты только на сеансовом уровне модели OSI, т.е. не могут проверять содержимое пакетов, передаваемых между внутренней и внешней сетью на уровне прикладных программ. И поскольку эта передача осуществляется "вслепую", хакер, находящийся во внешней сети, может "протолкнуть" свои "вредоносные" пакеты через такой шлюз. После этого хакер обратится напрямую к внутреннему Web-серверу, который сам по себе не может обеспечивать функции межсетевого экрана. Иными словами, если процедура квитирования связи успешно завершена, шлюз сетевого уровня установит соединение и будет "слепо" копировать и перенаправлять все последующие пакеты независимо от их содержимого.
Чтобы фильтровать пакеты, генерируемые определенными сетевыми службами, в соответствии с их содержимым необходим шлюз прикладного уровня.
Шлюзы прикладного уровня.Для устранения ряда недостатков, присущих фильтрующим маршрутизаторам, межсетевые экраны должны использовать дополнительные программные средства для фильтрации сообщений сервисов типа TELNET и FTP. Такие программные средства называются полномочными серверами (серверами-посредниками), а хост-компьютер, на котором они выполняются, - шлюзом прикладного уровня.
Шлюз прикладного уровня исключает прямое взаимодействие между авторизированным клиентом и внешним хост-компьютером. Шлюз фильтрует все входящие и исходящие пакеты на прикладном уровне. Связанные с приложениями серверы-посредники перенаправляют через шлюз информацию, генерируемую конкретными серверами.
Для достижения более высокого уровня безопасности и гибкости шлюзы прикладного уровня и фильтрующие маршрутизаторы могут быть объединены в одном межсетевом экране. В качестве примера рассмотрим сеть, в которой с помощью фильтрующего маршрутизатора блокируются входящие соединения TELNET и FTP. Этот маршрутизатор допускает прохождение пакетов TELNET или FTP только к одному хост-компьютеру - шлюзу прикладного уровня TELNET/FTP. Внешний пользователь, который хочет соединиться с некоторой системой в сети, должен сначала соединиться со шлюзом прикладного уровня, а затем уже с нужным внутренним хост-компьютером. Это осуществляется следующим образом:
1) сначала внешний пользователь устанавливает TELNET-соединение со шлюзом прикладного уровня с помощью протокола TELNET и вводит имя интересующего его внутреннего хост-компьютера;
2) шлюз проверяет IP-адрес отправителя и разрешает или запрещает соединение в соответствии с тем или иным критерием доступа;
3) пользователю может потребоваться аутентификация (возможно, с помощью одноразовых паролей);
4) сервер-посредник устанавливает TELNET-соединение между шлюзом и внутренним хост-компьютером;
5) сервер-посредник осуществляет передачу информации между этими двумя соединениями;
6) шлюз прикладного уровня регистрирует соединение.
Этот пример наглядно показывает преимущества использования полномочных серверов-посредников.
Полномочные серверы-посредники пропускают только те службы, которые им поручено обслуживать. Иначе говоря, если шлюз прикладного уровня наделен полномочиями (и полномочными серверами-посредниками) для служб FTP и TELNET, то в защищаемой сети будут разрешены только FTP и TELNET, a все другие службы будут полностью блокированы. Для некоторых организаций такой вид безопасности имеет большое значение, так как он гарантирует, что через межсетевой экран будут пропускаться только те службы, которые считаются безопасными.
Полномочные серверы-посредники обеспечивают возможность фильтрации протокола. Например, некоторые межсетевые экраны, использующие шлюзы прикладного уровня, могут фильтровать FTP-соединения и запрещать использование команды FTP put, что гарантированно не позволяет пользователям записывать информацию на анонимный FTP-сервер.
В дополнение к фильтрации пакетов многие шлюзы прикладного уровня регистрируют все выполняемые сервером действия и, что особенно важно, предупреждают сетевого администратора о возможных нарушениях защиты. Например, при попытках проникновения в сеть извне BorderWare Firewall Server компании Secure Computing позволяет фиксировать адреса отправителя и получателя пакетов, время, в которое эти попытки были предприняты, и используемый протокол. Межсетевой экран Black Hole компании Milkyway Networks регистрирует все действия сервера и предупреждает администратора о возможных нарушениях, посылая ему сообщение по электронной почте или на пейджер. Аналогичные функции выполняют и ряд других шлюзов прикладного уровня.
Шлюзы прикладного уровня позволяют обеспечить наиболее высокий уровень защиты, поскольку взаимодействие с внешним миром реализуется через небольшое число прикладных полномочных программ-посредников, полностью контролирующих весь входящий и выходящий трафик.
Шлюзы прикладного уровня имеют ряд серьезных преимуществ по сравнению с обычным режимом, при котором прикладной трафик пропускается непосредственно к внутренним хост-компьютерам. Перечислим эти преимущества.
Невидимость структуры защищаемой сети из глобальной сети Internet. Имена внутренних систем можно не сообщать внешним системам через DNS, поскольку шлюз прикладного уровня может быть единственным хост-компьютером, имя которого должно быть известно внешним системам.
Надежная аутентификация и регистрация. Прикладной трафик может быть аутентифицирован, прежде чем он достигнет внутренних хост-компьютеров, и может быть зарегистрирован более эффективно, чем с помощью стандартной регистрации.
Оптимальное соотношение между ценой и эффективностью. Дополнительные программные или аппаратные средства для аутентификации или регистрации нужно устанавливать только на шлюзе прикладного уровня.
Простые правила фильтрации. Правила на фильтрующем маршрутизаторе оказываются менее сложными, чем они были бы, если бы маршрутизатор сам фильтровал прикладной трафик и отправлял его большому числу внутренних систем. Маршрутизатор должен пропускать прикладной трафик, предназначенный только для шлюза прикладного уровня, и блокировать весь остальной трафик.
Возможность организации большого числа проверок. Защита на уровне приложений позволяет осуществлять большое количество дополнительных проверок, что снижает вероятность взлома с использованием "дыр" в программном обеспечении.
К недостаткам шлюзов прикладного уровня относятся:
более низкая производительность по сравнению с фильтрующими маршрутизаторами; в частности, при использовании клиент-серверных протоколов, таких как TELNET, требуется двух шаговая процедура для входных и выходных соединений;
более высокая стоимость по сравнению с фильтрующими маршрутизаторами.
Помимо TELNET и FTP шлюзы прикладного уровня обычно используются для электронной почты, X Windows и некоторых других служб.