Применение пакетного фильтра
В наше время межсетевой экран может состоять из одного или нескольких маршрутизаторов или компьютеров с соответствующим программным обеспечением, использующих различные методы для разрешения или запрета доступа в вашу локальную сеть или из нее. Но первым типом межсетевых экранов, который начал широко применяться, стал простой экранирующий маршрутизатор (screening router), сейчас обычно называемый пакетным фильтром (packet filter).
Маршрутизатор (router) - это сетевое устройство с несколькими интерфейсами, подключенное к нескольким сетям. Когда компьютеру или сети необходимо переслать пакет компьютеру в другой сети, он передает пакет маршрутизатору, который затем определяет наилучший метод доставки данных к месту назначения. Маршрутизатор принимает решение на основе адресной информации в заголовке пакета.
Когда маршрутизатор способен определить, что пакет предназначается для узла в одной из подсетей, непосредственно подключенных к одному из его сетевых интерфейсов, пакет быстро пересылается в нужную подсеть. Если маршрутизатор обнаруживает, что необходимо доставить пакет в какую-то другую сеть, он передает его следующему маршрутизатору (в следующий «hop» - сегмент маршрута), который может знать, как доставить пакет к месту назначения. Если же маршрутизатору не удастся найти следующий сегмент, в который можно отправить пакет, он просто отбросит его и вернет источнику соответствующее сообщение ICMP «адресат недоступен».
Экранирующий маршрутизатор — это маршрутизатор, в котором задан набор правил, устанавливающих разрешенные типы сетевого трафика, которые имеют право проходить через подключенные к нему сетевые интерфейсы. Другими словами, после того, как маршрутизатор определит, может ли он доставить пакет (в следующий сегмент или конечному адресату), он сверяется с набором правил, проверяя, должен ли он его передавать.
Предположим, например, что маршрутизатор получает от какого-либо узла Internet пакет с запросом на создание сеанса Telnet с узлом вашей внутренней локальной сети. Маршрутизатор сразу же определяет, что он может доставить пакет - для этого достаточно просто передать его в интерфейс, к которому подключен адресат, поместив в пакет МАС-адрес соответствующего узла. Но экранирующему маршрутизатору необходимо предварительно проверить пакет на соответствие правилам. В данном случае входящие Telnet-соединения должны блокироваться. Поэтому, как видно на рис. 2.1, узлы во внутренней локальной сети защищены от возможного проникновения нарушителя при помощи Telnet.
Основной метод фильтрации пакетов называется фильтрацией без памяти (stateless packet filtering), поскольку каждый пакет обрабатывается по отдельности ‑ только на основе информации в его заголовке. При новом методе фильтрации Пакетов, который называется фильтрацией с памятью (stateful packet filtering или stateful inspection), в памяти сохраняются сведения о состоянии текущих сеансов.
Если полученный пакет якобы является ответом на пакет, переданный из локальной сети, пакетный фильтр с памятью проверяет, действительно ли был сделан соответствующий запрос. Таким образом, при наличии фильтра с памятью потенциальному! нарушителю будет сложнее проникнуть в сеть путем подмены адресов пакетов.
До сих пор мы рассуждали о фильтрации пакетов только с помощью маршрутизатора, однако многие коммерческие межсетевые экраны также обеспечивают такую возможность. Часто оказывается даже, что фильтрацию пакетов предпочтительнее выполнять на компьютере, а не на маршрутизаторе, благодаря простоте работы с ним и возможностям регистрации. Настройка маршрутизатора бывает достаточно сложной задачей в особенности, если при этом необходимо задавать большое число правил.
Рис. 2.1. Пакетный фильтр отбирает пакеты, которые можно передавать между вашей локальной сетью и Internet
Изменение длинного набора правил может занять много времени, поскольку придется проверить каждое из старых правил, чтобы убедиться, что оно не противоречит новому! Маршрутизаторы обычно не имеют развитых средств для регистрации событий. Хороший брандмауэр обеспечивает отличные возможности для этого и для выдачи предупреждений, а иногда даже и программы для анализа log-файлов.
Применение proxy-сервера
Пакетному фильтру приходится принимать решения только на основе информации в заголовке пакета. К сожалению, заголовок содержит в основном адреса и другие данные, необходимые протоколу для доставки пакета к месту назначения через лабиринт сетей. В заголовок пакета не включены детали, которые могли бы помочь фильтру решить, следует ли пропускать пакет через межсетевой экран. Например, маршрутизатор может определить, что пакет предназначен для какого-то протокола, скажем, FTP. Но он не в состоянии распознать, какой это запрос - get (получить) или put (передать). При этом не исключено, что запросы одного типа окажутся вполне допустимыми, а запросы другого типа для данного узла должны будут блокироваться.
Шлюз приложений (application gateway), или proxy-сервер (application proxy), как было сказано выше, это программа, которая выполняется на брандмауэре и перехватывает трафик приложений определенного типа. Преимущество такого подхода состоит в том, что proxy-сервер способен пропускать или блокировать трафик на основе информации в области данных пакета, а не только в его заголовке.
Недостатком proxy-серверов является их привязка к конкретному приложению. Для каждого приложения или сервиса, поддержку которых вы хотите реализовать в межсетевом экране, вам понадобится отдельный proxy-сервер. Кроме того, необходимо, чтобы клиентское программное обеспечение могло работать через proxy-сервер. Большинство современных программ обладают такой возможностью, поэтому обычно это не представляет проблемы. Например, Netscape Navigator и Microsoft Internet Explorer позволяют задавать используемые proxy-серверы.
Существуют способы добиться работоспособности и старых программ, не знающих о существовании proxy-серверов. Например, при помощи Telnet пользователь может вначале зарегистрироваться на proxy-сервере, а затем создать сеанс связи с внешним компьютером. Такой двухступенчатый метод менее удобен, чем прозрачный доступ, обеспечиваемый программами, которые умеют работать через proxy-сервер.
Чтобы приложения функционировали через proxy-серверы, применяются пакеты Trusted Information Systems Firewall Toolkit (FWTK) или SOCKS. SOCKS - это библиотека, с помощью которой создаются или модифицируются клиенты с целью реализации их взаимодействия с proxy-сервером SOCKS. Пакет TIS Firewall Toolkit также содержит proxy-серверы для большинства стандартных служб, таких как Telnet, FTP и HTTP.