Защита сетей и firewall

Алексей Кошелев

Проблемы безопасности при соединении с Интернетом

Защита конфиденциальной информации

Защита вашей сети: поддержание внутренней целостности сети

Развитие firewall

Установление линии защиты (Security Perimeter)

Perimeter networks

Архитектура firewall

Как работает фильтрация пакетов (packet filtering firewalls)

Firewall цепного уровня (circuit level firewalls)

Firewall программного уровня

Динамическая фильтрация пакетов (dynamic packet filter firewalls)

Уровень kernel proxy

Кратко о реализациях firewall



С быстрым ростом интереса к Интернету и операционной системе Windows NT безопасность сети стала важной задачей для многих компаний во всем мире. Тот факт, что информация о взломе и проникновении в корпоративные сети и средства, необходимые для этого, легко и широко доступны, еще больше усиливает актуальность проблем безопасности. В связи с этим администраторы сети часто тратят гораздо больше усилий и времени на защиту сетей, чем на установку программ и администрирование. Новые средства, проверяющие сеть на присутствие слабых узлов, типа Security Administrator Tool for Analyzing Networks (SATAN), несомненно, помогают администраторам, но они лишь показывают уязвимые места сети, не обеспечивая защиты. Давайте посмотрим, от чего нужно защищаться при работе в сети, чтобы ответить на вопрос: почему вы нуждаетесь в firewall?

В начало В начало

Проблемы безопасности при соединении с Интернетом

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

Как защитить конфиденциальную информацию от тех, кто не имеет права доступа к ней?

1. Как защитить сеть и ее ресурсы от злонамеренных пользователей и случайностей, которые происходят вне вашей сети?

2. Будем в дальнейшем называть атакой попытку доступа к скрытой информации или просто проникновение в сеть, всегда имея в виду, что это не желательное для вас действие. Человека, который производит такое действие, будем называть взломщиком.

В начало В начало

Защита конфиденциальной информации

Конфиденциальная информация (как и любая информация в сети) может либо находиться на носителе информации, либо передаваться по сети в виде пакетов. В обоих состояниях информация может стать предметом взлома со стороны как внутренних, так и внешних пользователей. Мы ограничимся рассмотрением второго состояния, когда информация «в пути». Вот основные пять способов, которые используются для получения доступа к информации:

  • «вынюхивание» сетевых пакетов (network packet sniffers);

  • мистификация пакетов IP (IP spoofing);

  • взлом пароля (password attacks);

  • перенаправление пакетов вовне (distribution of sensitive information).

  • использование промежуточного компьютера (man-in-the-middle attacks)

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

«Вынюхивание» сетевых пакетов — это просто некий способ слежения за пакетами, проходящими по сети. Обычно это программа, запущенная на каком-либо компьютере сети.

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

Взлом пароля встречается несколько чаще других методов. Производится попытка любым способом узнать пароль или получить привилегии пользователя root на какой-либо машине сети.

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

Использование промежуточного компьютера (man-in-the-middle attacks)  — явное использование доступа к информации вашей сети. К примеру, это ситуация, когда пользователь, имеющий официальный доступ к информации, пытается пересылать ее во внешнюю сеть.

В начало В начало

Защита вашей сети: поддержание внутренней целостности сети

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

  • «вынюхивание» сетевых пакетов (network packet sniffers);

  • мистификация пакетов IP (IP spoofing);

  • взлом пароля (password attacks);

  • сбой работы (denial of service);

  • атаки на уровне программ (application layer attacks).

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

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

Описанию идеи firewall как наиболее распространенного способа защиты сетей и информации от взлома посвящена остальная часть статьи.

В начало В начало

Развитие firewall

Очевидно, что необходимость защиты сетей породило целое направление в компьютерной индустрии — технологию защиты сетей, которое в основном вращается вокруг идеи firewall.

Firewall — это точка разделения вашей сети и той, к которой вы подсоединены. Этой точкой может быть компьютер, на котором запущен программный firewall, или аппаратно реализованный firewall. Firewall может быть простым, как обычный маршрутизатор, фильтрующий пакеты, или сложным, сочетающим в себе функции многозадачной маршрутизации, фильтрации пакетов и программного proxy-сервера.

Первое поколение firewall (packet filtering firewalls), которое появилось в 1985 году, представляло собой первое поколение обыкновенных маршрутизаторов, включающих фильтрацию пакетов.

Второе поколение появилось в 1990-х и известно как firewall цепного уровня (circuit level firewalls).

Третье поколение — это firewall программного уровня (application layer firewall).

Четвертое поколение firewall основано на динамической фильтрации пакетов (dynamic packet filter firewalls), а первой его реализацией была программа CheckPoint, выпущенная одноименной фирмой.

Пятое поколение firewall, которое появилось в 1996 году, базируется на архитектуре kernel proxy. Сейчас этот метод тоже имеет как программные, так и аппаратные реализации.

В начало В начало

Установление линии защиты (Security Perimeter)

Когда вы определяете тактику защиты сети, вы должны определить способ охраны сети и информации, а также пользователей от повреждения и потери данных. Тактика защиты сети основана на управлении движением пакетов и контролем использования сети. Вы должны полностью описать сеть, установить ее «узкие места» и определить действия, которые будут предприниматься при нарушении защиты. При этом вы точно оговариваете границы, в которых действует ваша защита. Эти границы и есть сеть линии защиты (perimeter networks).

В начало В начало

Perimeter networks

Чтобы установить такую сеть защиты, вы должны определить сеть компьютеров, которые нуждаются в защите, и определить механизм их защиты. Необходимым является условие, чтобы firewall-сервер был шлюзом (gateway) между внутренними и внешними сетями. Каждая сеть может содержать сети защиты внутри себя. Различают внешние, средние и внутренние сети защиты. Внешняя защита разделяет сеть, которой вы управляете, и ту, которой вы не можете управлять. Средний уровень разделяет подсети внутри вашей сети или отделяет доступные для внешних пользователей компьютеры от тех, к которым доступ запрещен. Внутренний уровень позволяет разделять сети внутри недоступных и внешне доступных частей вашей сети.

Для дальнейшего изложения введем три понятия: Trusted networks — сети, которые вы защищаете и которыми можете управлять (внутри perimeter network); Untrusted networks — сети, которыми вы не управляете (обычно снаружи), но с которыми, тем не менее, должны обмениваться информацией; и Unknown networks — сети, про которые нельзя сказать ничего определенного, кроме того, что они существуют.

В начало В начало

Архитектура firewall

Firewall — это шлюз сети, снабженный правилами защиты. Он может быть аппаратным или программным. В соответствии с заложенными правилами обрабатывается каждый пакет, проходящий наружу или внутрь сети, причем процедура обработки может быть задана для каждого правила. Производители программ и машин, реализующих firewall-технологии, обеспечивают различные способы задания правил и процедур. Обычно firewall создает контрольные записи, детализирующие причину и обстоятельства возникновения внештатных ситуаций. Анализируя такие контрольные записи, администраторы часто могут обнаружить источник атаки и способы ее проведения, тем самым обеспечивая себя дополнительной информацией об атаке.

В начало В начало

Как работает фильтрация пакетов (packet filtering firewalls)

Каждый IP-пакет проверяется на совпадение заложенной в нем информации с допустимыми правилами, записанными в firewall.

Параметры, которые могут проверяться:

  • физический интерфейс движения пакета;

  • адрес, с которого пришел пакет (источник);

  • адрес, куда идет пакет (получатель);

  • тип пакета (TCP, UDP, ICMP);

  • порт источника;

  • порт получателя.

Из этого перечня видно, что фильтрация пакетов не имеет дела с их содержанием. Это позволяет использовать непосредственно ядро операционной системы для задания правил. В сущности, создаются два списка: отрицание (deny) и разрешение (permit). Все пакеты должны пройти проверку по всем пунктам этого списка. Далее используются следующие методы:

  • если никакое правило соответствия не найдено, то удалить пакет из сети;

  • если соответствующее правило найдено в списке разрешений, то пропустить пакет;

  • если соответствующее правило найдено в списке отрицаний, то удалить пакет из сети.

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

Отметим преимущества firewall, основанного на фильтрации пакетов:

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

  • этот метод легко реализуем аппаратно;

  • одно-единственное правило может стать ключевым при защите всей сети;

  • фильтры не требуют специальной конфигурации компьютера;

  • метод address translation позволяет скрыть реальные адреса компьютеров в сети.

Однако имеются и недостатки:

  • нет проверки содержимого пакетов, что не дает возможности, например, контролировать, что передается по FTP. В этом смысле application layer и circuit level firewall гораздо практичнее;

  • нет информации о том, какой процесс или программа работали с этим пакетом, и сведений о сессии работы;

  • работа ведется с ограниченной информацией пакета;

  • в силу «низкоуровневости» метода не учитывается особенность передаваемых данных;

  • слабо защищен сам компьютер, на котором запущен firewall, то есть предметом атаки может стать сам этот компьютер;

  • нет возможности сигнализировать о внештатных ситуациях или выполнять при их возникновении какие-либо действия;

  • возможно, что большой объем правил будет тормозить проверку.

В начало В начало

Firewall цепного уровня (circuit level firewalls)

Поскольку при передаче большой порции информации она разбивается на маленькие пакеты, целый фрагмент состоит из нескольких пакетов (из цепи пакетов). Firewall цепного уровня проверяет целостность всей цепи, а также то, что она вся идет от одного источника к одному получателю, и информация о цепи внутри пакетов (а она там есть при использовании TCP) совпадает с реально проходящими пакетами. Причем цепь вначале собирается на компьютере, где установлен firewall, а затем отправляется получателю. Поскольку первый пакет цепи содержит информацию о всей цепи, то при попадании первого пакета создается таблица, которая удаляется лишь после полного прохождения цепи.

Содержание таблицы следующее:

  • уникальный идентификатор сессии передачи, который используется для контроля;

  • состояние сессии передачи: установлено, передано или закрыто;

  • информация о последовательности пакетов;

  • адрес источника цепи;

  • адрес получателя цепи;

  • физический интерфейс, используемый для получения цепи;

  • физический интерфейс, используемый для отправления цепи.

Эта информация применяется для проверки допустимости передачи цепи. Правила проверки, как и в случае фильтрации пакетов, задаются в виде таблиц в ядре.

Основные преимущества firewall цепного уровня:

  • firewall цепного уровня быстрее программного, так как производит меньше проверок;

  • firewall цепного уровня позволяет легко защитить сеть, запрещая соединения между определенными адресами внешней и внутренней сети;

  • возможно скрытие внутренней топологии сети.

Недостатки firewall цепного уровня:

  • трудно реализовать этот алгоритм для не-TCP-протоколов;

  • нет проверки пакетов на программном уровне;

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

  • нет проверки передаваемых данных;

  • трудно проверить разрешение или отрицание передачи пакетов.

В начало В начало

Firewall программного уровня

Помимо целостности цепей, правильности адресов и портов, проверяются также сами данные, передаваемые в пакетах. Это позволяет проверять целостность данных и отслеживать передачу таких сведений, как пароли. Вместе с firewall программного уровня используется proxy-сервис, который кэширует информацию для более быстрой ее обработки. При этом возникают такие новые возможности, как, например, фильтрация URL и установление подлинности пользователей. Все соединения внутренней сети с внешним миром происходят через proxy, который является шлюзом. У proxy две части: сервер и клиент. Сервер принимает запросы, например на telnet-соединение из внутренней сети с внешней, обрабатывает их, то есть проверяет на допустимость передачи данных, а клиент работает с внешним компьютером от имени реального клиента. Естественно, вначале все пакеты проходят проверку на нижних уровнях.

Достоинства proxy:

  • понимает и обрабатывает протоколы высокого уровня типа HTTP и FTP;

  • сохраняет полную информацию о сессии передачи данных как низкого, так и высокого уровня;

  • возможен запрет доступа к некоторым сетевым сервисам;

  • есть возможность управления пакетами данных;

  • есть сокрытие внутренних адресов и топологии сети, так как proxy является фильтром;

  • остается видимость прямого соединения сетей;

  • proxy может перенаправлять запросы сетевых сервисов на другие компьютеры;

  • есть возможность кэширования http-объектов, фильтрации URL и установления подлинности пользователей;

  • возможно создание подробных отчетных записей для администратора.

Недостатки proxy:

  • требует изменения сетевого стека на машине, где стоит firewall;

  • нельзя напрямую запустить сетевые сервисы на машине, где стоит firewall, так как proxy перехватывает работу портов;

  • неминуемо замедляет работу, потому все данные обрабатываются дважды: «родной» программой и собственно proxy;

  • так как proxy должен уметь работать с данными какой-либо программы, то для каждой программы нужен свой proxy;

  • нет proxy для UDPи RPC;

  • иногда необходима специальная настройка клиента для работы с proxy;

  • proxy не защищен от ошибок в самой системе, а его работа сильно зависит от наличия последних;

  • корректность работы proxy напрямую связана с правильностью обработки сетевого стека;

  • использование proxy может требовать дополнительных паролей, что неудобно для пользователей.

В начало В начало

Динамическая фильтрация пакетов (dynamic packet filter firewalls)

В основном этот уровень повторяет предыдущий, за двумя важными исключениями:

  • возможно изменение правил обработки пакетов «на лету»;

  • включена поддержка UDP.

В начало В начало

Уровень kernel proxy

Уровень kernel proxy возник достаточно недавно. Основная его идея — попытка поместить описанный выше алгоритм firewall программного уровня в ядро операционной системы, что избавляет компьютер от лишних затрат времени на передачу данных между ядром и программой proxy. Это повышает производительность и позволяет производить более полную проверку проходящей информации. Я не буду подробно останавливаться на этом методе, так как на данный момент разные фирмы реализуют его несколько по-разному и нет общепринятой концепции.

В начало В начало

Кратко о реализациях firewall

Как уже было сказано, firewall может быть реализован как программно, так и аппаратно. Аппаратная реализация представляет собой некий специализированный компьютер, единственной функцией которого является работа в качестве firewall. Причем эта программа зашита в его железо. Это позволяет добиваться большой производительности. Одной из ведущих фирм, производящих такие компьютеры, является Cisco (серия Cisco Access Servers). Программная реализация — это просто программа, которая исполняется на компьютере-шлюзе и выполняет описанные выше функции (например, LanGuard, Cisco IOS Software, Checkpoint). Очевидно, что для работы такой программы необходим достаточно мощный компьютер с большим объемом памяти, причем неразумно сильно загружать этот компьютер другой работой. Для примера приведу краткое описание программы LanGuard, которая имеет один из самых высоких рейтингов.

Программа написана под Windows NT и работает по четвертому, описанному выше уровню. Она бесплатна ограниченное время, после чего позволяет работать, если сеть состоит не более чем из пяти компьютеров. Программа выполняет следующие функции:

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

  • отслеживает программы sniffer;

  • отслеживает количество проходящей по сети информации;

  • отслеживает использование Интернет и конкретную связь с сайтами, позволяя вводить правила, например запрет использования каких-либо сайтов;

  • отслеживает вирусы типа троянских коней;

  • может создавать подробные отчеты об использовании сети;

  • выдает предупреждения администратору.

Ниже на рисунках представлено несколько экранов, наглядно демонстрирующих LanGuard.

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

Наиболее подробная информация о программах, документации и поддержке firewall имеется на сайте http://www.firewall.com.

КомпьютерПресс 7'2000