среда, 16 июня 2010 г.

ISSP \ Домен 05. Телекоммуникации и сетевая безопасность. Часть 7

В этой части рассмотрены следующие вопросы:
  • Офисные автоматические телефонные станции (PBX)
  • Межсетевые экраны
  • Межсетевые экраны с фильтрацией пакетов
  • Межсетевые экраны с контролем состояния
  • Прокси
  • Динамическая фильтрация пакетов
  • Прокси уровня ядра
  • Архитектура межсетевых экранов
  • "Обязанности" межсетевых экранов
  • Хост-приманка (honeypot)
  • Разделение и изоляция сетей


Телефонные компании используют технологии коммутации для передачи телефонных звонков вызываемым абонентам. В центральном офисе телефонной компании установлены коммутаторы, которые соединяют города и целые области посредством оптоволоконных колец. Так, например, если Петр звонит из своего дома, звонок сначала попадает в центральный офис местной телефонной компании, которая обслуживает Петра, а затем сответствующим образом переключает его на локальный или междугородний вызов. Офисная автоматическая телефонная станция (PBX – Private Branch Exchange, Офисная АТС) – это частный телефонный коммутатор, который находится в собственности комрании. Аналогичный коммутатор выполняет такие же задачи в центральном офисе телефонной компании. Офисная АТС имеет выделенное соединение с центральным офисом местной телефонной компании, где размещены более интеллектуальные коммутаторы.

Офисная АТС может выступать в качестве интерфейса между некоторыми типами устройств и предоставлять ряд телефонных услуг. В выделенной линии, подключенной к центральному офису телефонной компании, данные мультиплексируются (уплотняются). Рисунок 5-33 показывает, как данные из различных источников могут быть помещены в один канал Офисной АТС и отправлены на коммутаторы телефонной компании.

Рисунок 5-33. Офисная АТС объединяет различные типы данных в одном канале

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

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

Офисные АТС также уязвимы к брутфорс-атакам (полный перебор паролей) и другим типам атак, в которых фрикеры используют скрипты и словари, чтобы угадать необходимые реквизиты для получения доступа к системе. В некоторых случаях, фрикеры могут прослушивать и изменять голосовые сообщения людей.


Межсетевые экраны (firewall – фаерволлы) используются для ограничения доступа в одну сеть из другой. Большинство компаний используют межсетевые экраны для ограничения доступа из Интернет в свою сеть. Также межсетевые экраны можно использовать для ограничения доступа из одного внутреннего сетевого сегмента в другой. Например, если сетевому администратору нужно быть уверенным, что обычные сотрудники не имеют доступа в сеть Исследований и Разработки, он может установить межсетевой экран между этой сетью и всеми остальными сетями, настроив его на разрешение только одного типа трафика, который он считает приемлемым.

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

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

Часто компании устанавливают межсетевой экран для создания демилитаризованной зоны (DMZ – Demilitarized Zone), которая является сетевым сегментом, размещенным между защищенными и незащищенными сетями. С помощью DMZ реализуется буферная зона между опасным Интернетом и ценными активами внутренней сети, которые компания пытается защитить. Как показано на Рисунке 5-34, для создания DMZ обычно устанавливаются два межсетевых экрана. В DMZ обычно размещаются веб, почтовые и DNS-серверы, которые должны быть надлежащим образом защищены, поскольку они являются первой линией обороны от атак. Часто в DMZ размещают сенсоры IDS, которые выявляют нежелательное и подозрительное поведение.

Рисунок 5-34. Для создания DMZ обычно используется не менее двух межсетевых экранов (или интерфейсов одного межсетевого экрана)

Существует множество различных типов межсетевых экранов, поскольку каждая сеть может иметь уникальные требования и цели безопасности. Межсетеве экраны развиваются и эволюционируют, повышается их эффективность и функциональность. Далее мы поговорим о следующих типах межсетевых экранов:
  • С фильтрацией пакетов (packet filtering)
  • С контролем состояния (stateful)
  • Прокси (proxy)
  • С динамической фильтрацией пакетов (dynamic packet filtering)
  • Прокси ядра (kernel proxy)
Затем мы разберем три основные архитектуры межсетевых экранов:
  • Экранированный узел (screened host)
  • Двойная привязка (dual-home)
  • Экранированная подсеть (screened subnet)

Фильтрация пакетов (packet filtering) – это метод обеспечения безопасности, позволяющий контролировать, какие данные могут войти в сеть и/или выйти из нее. Пакетная фильтрация использует списки контроля доступа (ACL), настроенные на устройстве. ACL – это строки текста, называемые правилами, которые устройство применяет к каждому полученному им пакету. Эти правила четко определяют, какие пакеты могут быть разрешены, а какие должны быть отклонены. К примеру, в первой строке ACL может быть указано, что любые пакеты, приходящие с IP-адреса из диапазона 172.168.0.0, должны быть отклены; во второй строке может быть запрещен доступ в сеть для пакетов Telnet; в третьей строке может быть запрещен любой трафик на порт 443; в четвортой строке может быть указано разрешение трафика на 80-й порт, который должен при этом маршрутизироваться на определенный адрес, принадлежащий веб-серверу. При получении каждого пакета, устройство сравнивает информацию из заголовка пакета с каждой строкой в ACL. При этом, основываясь на приведенном выше примере правил, если пакет использует протокол Telnet или запрашивает соединение с портом 443, он отклоняется. Если информация в заголовке пакета указывает, что он хочет взаимодействовать через порт 80 по протоколу HTTP через TCP, пакет принимается и перенаправляется на веб-сервер.

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

Ниже приведены некоторые слабости межсетевых экранов с фильтрацией пакетов:
  • Они не могут предотвратить атаки, которые используют функции и уязвимости, относящиеся к конкретным приложениям (на прикладном уровне).
  • Функциональность журналирования в межсетевых экранах с фильтрацией пакетов ограничена.
  • Большинство межсетевых экранов с фильтрацией пакетов не поддерживают современные схемы аутентификации пользователей.
  • Многие межсетевые экраны с фильтрацией пакетов не могут выявить сетевые пакеты, в которых информация 3-го уровня модели OSI была изменена (является ложной) (spoofed).
  • Используя небольшое количество переменных при принятии решения о доступе, межсетевые экраны с фильтрацией пакетов подвержены проблемам безопасности, вызванным неправильными настройками.
Преимущества использования межсетевых экранов с фильтрацией пакетов заключаются в их масштабируемости, независимости от приложений и их высокой производительности, т.к. они не выполняют интенсивной обработки пакетов.


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

Межсетевой экран, реализующий фильтрацию пакетов с контролем состояния (stateful-inspection firewall), похож на соседа с длинным носом, который все слышит, следит – кто и что делает, постоянно встревает в разговоры. Он знает кто, что и кому сказал. Это может сильно раздражать, но если дом вдруг ограбят, помощь этого соседа будет просто неоценима. Он все знает и сможет рассказать полиции, что произошло. Аналогичным образом работает межсетевой экран с контролем состояния. Он также отслеживает, что компьютеры говорят друг другу, и хранит всю эту информацию в таблице состояний (state table), которая похожа на лист с записями чужих разговоров.

Межсетевые экраны с контролем состояния также принимают решения о разрешении или отвержении пакетов, но их функциональность находится на шаг дальше. Например, обычное устройство с фильтрацией пакетов может блокировать любые UDP-пакеты, запрашивающие сервис на 25-м порту, а устройство с фильтрацией пакетов и контролем состояния можно настроить таким образом, чтобы оно разрешало UDP-пакеты только в том случае, если они являются ответами на направленные ранее исходящие запросы. Например, Майкл отправляет запрос на компьютер в другой сети. Этот запрос записывается в таблицу состояний межсетевого экрана, который «запоминает», что компьютер Майкла сделал запрос и что ему должен прийти ответный пакет, который нужно переслать Майклу. Когда запрошенный Майклом компьютер в Интернете отвечает на его запрос, эти пакеты сравниваются с записями в таблице состояний межсетевого экрана. Поскольку в таблице состояний есть информация о предыдущем запросе Майкла, межсетевой экран принимает эти пакеты и пропускает их дальше – Майклу. С другой стороны, если Майкл не делал никаких запросов, а пакеты все же пришли из Интернет, межсетевой экран не найдет в своей таблице состояний информации о предыдущем запросе, и тогда он будет проверять эти пакеты по своей ACL, чтобы решить, следует ли пропускать эти пакеты в сеть.

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

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

Хотя контроль состояния является большим шагом вперед в безопасности, он добавляет дополнительные сложности, т.к. устройство должно теперь хранить динамическую таблицу состояний и «помнить» соединения. К сожалению, межсетевые экраны с контролем состояния подвержены многим типам DoS-атак. Многие типы атак против таких межсетевых экранов направлены на переполнение (flooding) таблицы состояний ложной информацией. Таблица состояний – это такой же конечный ресурс, как простанство жесткого диска системы, объем свободной памяти и процессорное время. Если таблица состояний полностью заполняется ложной информацией, устройство может зависнуть или перезагрузиться. Кроме того, если такой межсетевой экран перезагрузится по какой-либо причине, это приведет к потере им информации об установленных соединениях, из-за чего он будет отклонять легитимные пакеты.
Характеристики межсетевого экрана с контролем состояния. Ниже представлены некоторые важные характеристики межсетевого экрана с контролем состояния:
  • Отслеживает каждый коммуникационный канал, записывая информацию в таблицу состояний
  • Обеспечивает высокий уровень безопасности и не наносит большого ущерба производительности (по сравнению с прокси прикладного уровня)
  • Является масштабируемым и прозрачным для пользователя
  • Предоставляет данные для отслеживания протоколов без установления соединений, таких как UDP и ICMP
  • "Запоминает" и актуализирует состояние и контекст данных в пакетах
  • Считается межсетевым экраном третьего поколения

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

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

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

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

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

Существует два типа прокси: прикладного уровня (application-level) и сетевого уровня (circuit-level). Они описаны далее.
«За» и «против» прокси межсетевых экранов
«За»:
  • Анализирует информацию в пакете на всех уровнях вплоть до прикладного уровня
  • Обеспечивает лучшую безопасность, чем фильтрация пакетов
  • Разрывает соединение между доверенными и недоверенными системами
«Против»:
  • Некоторые прокси поддерживают только ограниченное число приложений
  • Снижается скорость передачи трафика
  • Программные прокси могут иметь проблемы с масштабируемостью и производительностью
  • Разрывает клиент-серверную модель, что хорошо для безопасности, но плохо для функциональности

Прокси прикладного и сетевого уровней. Прокси можно описать в виде посредника между недоверенными внешними узлами и доверенными внутренними узлами. Однако возникает ряд вопросов, когда мы рассматриваем два различных типа прокси. Прокси прикладного уровня (application-level proxy) анализируют пакет вплоть до прикладного уровня и принимают решение о доступе на основе всего содержимого пакета. Они понимают различные службы и протоколы, а также используемые ими команды. Прокси прикладного уровня может, например, различать команды FTP GET и FTP PUT и принимать решение о доступе, учитывая такой уровень детализации. При этом межсетевые экраны с фильтрацией пакетов могут разрешить или запретить команды FTP только целиком, а не на уровне конкретных команд протокола FTP.

Прокси прикладного уровня работает только для одной службы или протокола. А поскольку компьютер может иметь множество различных типов служб и протоколов (FTP, NTP, SMTP, Telnet и т.д.), требуется по одному прокси на каждый из них. Это не означает, что требуется по одному прокси на каждую службу, скорее это будет один выделенный модуль межсетевого экрана, понимающий работу определенного протокола и знающий, как правильно осуществлять в нем фильтрацию подозрительных данных.

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

Реализация функций прокси прикладного уровня может быть очень сложной задачей. Такой прокси должен полностью понимать работу определенных протоколов, знать, какие команды в этих протоколах являются легитимными. Он должен контролировать множество аспектов в процессе передачи данных. В качестве аналогии рассмотрим пункт проведения детального досмотра в аэропорту, для работы которого необходимо задействовать множество сотрудников, которые будут проводить беседы с пассажирами, перед тем, как разрешить им пройти в аэропорт и сесть в самолет. Такие сотрудники обучены задавать определенные вопросы и выявлять подозрительные ответы и действия людей, они имеют набор специальных навыков и уполномочены задерживать пассажиров, показавшихся им подозрительными. Теперь представьте, что аэропорт этот – международный, и каждый из этих сотрудников говорит на одном из иностранных языков (ведь пассажиры могут быть из различных уголков мира). Сотрудник, который говорит на немецком языке, не может понять и выявить подозрительные ответы человека из Италии, поскольку он его не понимает. То же самое относится и к прокси прикладного уровня. Каждый такой прокси – это часть программного обеспечения, спроектированная для понимания определенного протокола и выявления подозрительных данных при их передаче посредством этого протокола.
ПРИМЕЧАНИЕ. Любой тип прокси разбирает получаемые пакеты на отдельные части и анализирует каждую из таких частей на предмет подозрительной активности.
Если прокси прикладного уровня не понимает определенный протокол или сервис, он не может защитить коммуникации, выполняющиеся посредством этого протокола или сервиса. С этой точки зрения, прокси сетевого уровня обычно более полезен, поскольку он не учитывает настолько сложные вопросы. Преимущество прокси сетевого уровня заключается в том, что он может работать с более широким спектром протоколов и служб, чем прокси прикладного уровня, однако его огромным недостатком является невозможность выполнения столь детального контроля, который обеспечивает прокси прикладного уровня. Жизнь полна компромиссов.

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

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

SOCKS является примером прокси-шлюза сетевого уровня, который предоставляет безопасный канал между двумя компьютерами. Когда SOCKS-клиент посылает запрос на доступ к компьютеру в Интернете, этот запрос в действительности направляется на SOCKS-прокси сети, как показано на рисунке 5-35, который анализирует пакеты на предмет наличия вредоносной информации и проверяет соблюдение правил политики, чтобы решить, следует ли разрешать это соединение. Если пакет не содержит вредоносной информации и соответствующий тип соединений разрешен, SOCKS-прокси отправляет сообщение компьютеру-получателю в Интернете. Когда компьютер в Интернете отвечает, он также посылает свои пакеты SOCKS-прокси, который снова анализирует данные и пропускает пакеты на клиентский компьютер.

Рисунок 5-35. SOCKS-сервер обычно размещается за маршрутизатором, на каждом SOCKS-клиенте должно быть установлено программное обеспечение SOCKS

SOCKS-прокси может экранировать, фильтровать, выполнять аудит, журналировать и контролировать проходящие данные, входящие или исходящие из защищаемой сети. SOCKS-прокси достаточно популярны, поэтому многие приложения и протоколы уже настроены на работу с SOCKS, что снижает количество настроек в административных частях приложений, а различные межсетевые экраны имеют встроенное программное обеспечение SOCKS, для обеспечения защиты сетевого уровня.
Сравнение характеристик прокси межсетевых экранов прикладного и сетевого уровней. Характеристики прокси прикладного уровня:
  • Требуется наличие отдельного прокси для каждой разрешенной службы
  • Обеспечивает более сложный контроль, чем прокси сетевого уровня
  • Требует большего объема обработки для каждого пакета, поэтому медленнее, чем прокси сетевого уровня
Характеристики прокси сетевого уровня:
  • Не требуется отдельный прокси для каждой службы
  • Не обеспечивает детального управления доступом, в отличии от прокси прикладного уровня
  • Обеспечивает безопасность для широкого диапазона протоколов
Поскольку SOCKS – это прокси сетевого уровня, он не обеспечивает детального контроля, ориентированного на конкретные протоколы. Среди продуктов SOCKS серверное программное обеспечение SOCKS, которое может работать на серверах Unix, клиентские библиотеки SOCKS, поддерживающие SOCKS версии отдельных приложений и протоколов, SOCKS-оболочки для утилит, тиких как traceroute и ping.

Преимущества использования прокси прикладного уровня заключаются в следующем:
  • Имеются большие возможности для журналирования, что связано со способностью межсетевого экрана анализировать весь сетевой пакет, а не только сетевые адреса и номера портов.
  • Аутентификация пользователей производится в соответствии с имеющейся корпоративной инфраструктурой. Прокси-шлюзы прикладного уровня способны напрямую аутентифицировать пользователей, в отличие от межсетевых экранов с фильтрацией пакетов и межсетевых экранов с контролем состояния и фильтрацией пакетов, которые могут выполнять аутентификацию только систем.
  • Прокси-шлюзы прикладного уровня – это не простые устройства третьего уровня. Они могут контролировать атаки спуфинга и другие сложные атаки.
Характеристики SOCKS-прокси.Ниже приведены некоторые важные характеристики SOCKS-прокси:
  • Это прокси сетевого уровня
  • Он требует использования поддерживающих SOCKS клиентов, на которых установлено программное обеспечение SOCKS
  • Он может быть ресурсоемким
  • Он предоставляет функции аутентификации и шифрования аналогично другим VPN-протоколы, но он не является традиционным VPN-протоколом
Некоторые из недостатков использования прокси прикладного уровня приведены ниже:
  • Обычно не подходят при использовании широких полос пропускания или приложений реального времени.
  • Имеют ограничения в части поддержки новых сетевых приложений и протоколов.
  • Большинство производителей прокси-шлюзов прикладного уровня предоставляют универсальные прокси-агенты для поддержки неопределенных сетевых протоколов или приложений.
  • Использование универсальных агентов негативно влияет на преимущества архитектуры прокси-шлюзов прикладного уровня, поскольку они просто позволяют «туннелировать» трафик через межсетевой экран.

Когда системе во внутренней сети нужно установить взаимодействие с системой вне доверенной сети, она должна выбрать исходный порт, чтобы получающая система знала, как правильно ей ответить. Получающей системе нужен IP-адрес и номер порта, чтобы ее ответ смог найти дорогу к компьютеру отправителя. Порты до 1023 называются стандартными (общеизвестными) портами (well-known ports) и зарезервированы для серверных служб. Для установления соединения с другой системой, отправитель должен выбрать динамический порт с номером выше 1023. Затем межсетевой экран с динамической фильтрацией пакетов создает список контроля доступа (ACL), который позволяет внешней системе взаимодействовать с внутренней системой через выбранный порт. Если ваш межсетевой экран с фильтрацией пакетов не поддерживает такую возможность, это может стать уязвимостью при использовании портов с номерами выше 1023, т.к. клиентская сторона выбирает эти порты динамически, и межсетевой экран не будет знать точно на каком порту разрешенный, а на каком запрещенный трафик.
ПРИМЕЧАНИЕ. Стандартный порт для HTTP – 80-й. Это означает, что на сервере есть служба, которая прослушивает 80-й порт на предмет HTTP-трафика. HTTP (как и большинство других протоколов) работают с использованием клиент-серверной модели. На серверной стороне используются стандартные порты (например, FTP использует порты 20 и 21; SMTP – 25), поэтому все знают, как подключиться к нужным службам. На клиентской стороне не должны использоваться стандартные порты для собственных нужд, вместо них должны выбираться случайные порты с номерами, выше 1023.
Внутренняя система может выбрать исходный порт, например, 11111 для передачи своих сообщений внешней системе. Кадр отправляется на межсетевой экран с фильтрацией пакетов, который создает ACL, как показано на Рисунке 5-36, содержащий указание на то, что должен быть разрешен ответ от компьютера-получателя на IP-адрес и порт 11111 внутренней системы. После отправки ответа системой получателя, межсетевой экран примет его и передаст дальше – внутренней системе. Такие ACL являются динамическими по своей природе, поэтому после завершения соединения (получения пакетов FIN или RST) ACL удаляется из списка. В протоколах без установления соединения, таких как UDP, ACL удаляется по окончании времени таймаута.

Рисунок 5-36. При динамической фильтрации пакетов ACL добавляется при создании соединения

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



Прокси уровня ядра (kernel proxy firewall) называют межсетевыми экранами пятого поколения. Они отличаются от всех описанных ранее технологий межсетевых экранов, т.к. они создают динамические, соответсвующие требованиям заказчика стеки TCP/IP, когда необходимо оценивать пакеты.

Когда пакет поступает на прокси уровня ядра, создается новый виртуальный сетевой стек, который состоит из прокси только тех протоколов, которые необходимы для надлежащей проверки этого конкретного пакета. Например, если это пакет FTP, то только FTP-прокси загружается в стек. Пакет тщательно исследуется на каждом уровне стека – анализируется данные заголовков канального, сетевого, транспортного, сеансового и прикладного уровней. Если на любом из этих уровней межсетевому экрану что-то покажется небезопасным, пакет уничтожается.

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

В таблице 5-8 перечислены важные понятия и характеристики рассмотренных ранее типов межсетевых экранов. Хотя различные реальные межсетевые экраны могут предоставлять смесь этих сервисов и работать на различных уровнях модели OSI, важно понимать основные определения и функции этих типов межсетевых экранов.

Таблица 5-8. Различия между сетевыми межсетевыми экранами

Ниже приведены некоторые лучшие практики, применимые к любому типу межсетевых экранов:
  • Блокируйте перенаправление ICMP-трафика
  • ACL следует делать проще и прямолинейнее
  • Запрещайте маршрутизацию от источника
  • Закрывайте ненужные порты с потенциально опасными службами
  • Блокируйте неиспользуемые интерфейсы
  • Блокируйте направленные широковещательные IP-рассылки
  • Блокируйте входящие пакеты с внутренними адресами (это может быть признаком их подделки (спуфинга))
  • Блокируйте трафик многоадресных рассылок, если они не требуются
  • Включите журналирование
Устройства. Межсетевой экран может быть реализован в виде программного обеспечения, установленнгого на обычный компьютер и использующего обычную операционную систему, а может быть выделенным аппаратным устройством (appliance), имеющим собственную операционную систему. Второй вариант обычно более безопасен, т.к. производитель использует урезанную версию операционной системы (обычно Linux или BSD Unix). Полнофункциональная операционная система не требуется для межсетевого экрана. Повышенная сложность полнофункциональной операционной системы открывает двери для уязвимостей. Если хакер сможет воспользоваться уязвимостью и отключить межсетевой экран компании, компания будет подвержена большой опасности.

Анализ данных. Данные – это «новое золото» для большинства компаний, которое сегодня необходимо защищать для обеспечения безопасности, соблюдения требований законодательства, регуляторов, получения конкурентных преимуществ. В связи с этим были реализованы дополнительные функции и специальные продукты, которые выполняют анализ данных. Этот анализ производится на различных уровнях и в различных типах протоколов. Некоторые продукты могут анализировать только содержимое пакетов протокола SMTP, тогда как другие могут анализировать содержимое пакетов SMTP, FTP, HTTP и многих других. Содержимое пакетов контролируется на предмет подозрительных действий (вирусы, мобильный код, ActiveX и т.д.), либо на предмет наличия критичных данных, которые не должны покидать сеть компании (коммерческая тайна, конфиденциальные данные, номера банковских карт и т.п.).

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

Межсетевой экран следует устанавливать на узлах-бастионах, на которых заблокированы все сервисы, кроме необходимых для выполнения ими своих функций.

Узел-бастион. Узел-бастион (bastion host) – это просто другое название укрепленных (hardened) систем. Узел-бастион обычно открыт для внешних атак, поскольку он устанавливается на передовой линии сетевой безопасности, именно он является системой, которая видна из Интернета. Соответственно, это узел-бастион должен быть максимально защищен – на нем не должны быть запущены ненужные сервисы, неиспользуемые подсистемы должны быть заблокированы, для уязвимостей должны быть установлены соответствующие патчи, ненужные учетные записи должны быть заблокированы, а все ненужные для выполнения его функций порты должны быть закрыты. Узел-бастион не связан с программным обеспечением межсетевого экрана и его работой. Это просто система, которая надежно защищена. Любая размещенная в DMZ система должна быть установлена на узле-бастионе, поскольку она находится в непосредственной близости от Интернета и злоумышленников, которые могут нанести ей вред. Если программное обеспечение межсетевого экрана установлено не на защищенную операционную систему или узел-бастион, сам такой межсетевой экран является уязвимым.

Межсетевой экран с двойной привязкой. Двойная привязка (dual-homed) означает, что устройство имеет два интерфейса: один смотрит во внешнюю сеть, а другой – во внутреннюю. Если программное обеспечение межсетевого экрана установлено на устройство с двойной привязкой (обычно так и бывает), в его операционной системе должна быть отключена пересылка и маршрутизация сетевых пакетов, исходя из соображений безопасности. Если эти функции не отключены, к компьютеру не будут применены необходимые правила ACL и другие ограничения, применение которых требуется от межсетевого экрана. Когда пакет из недоверенной сети приходит на подключенную к ней (внешнюю) сетевую карту межсетевого экрана с двойной привязкой, в настройках операционной системы которого не отключена пересылка трафика, его операционная система просто перешлет пакет на сетевую карту, подключенную к внутренней доверенной сети, без проведения анализа пакета программным обеспечением межсетевого экрана.

Многие сетевые устройства сегодня имеют множественную привязку (multihomed), т.е. они имеют несколько сетевых карт, использующихся для подключения различных сетей. Именно на таких устройствах обычно устанавливается программное обеспечение межсетевого экрана, при необходимости обеспечения безопасности и управления передачей трафика между различными сетями. Использование обычной архитектуры межсетевого экрана с множественной привязкой позволяет компании иметь несколько DMZ. В одной DMZ могут быть размещены устройства, совместно используемые компаниями в экстрасети, в другой DMZ могут быть размещены серверы DNS и почтовые серверы компании, в третьей – веб-серверы компании и т.д. Отдельные DMZ используются по двум причинам: для управления различными видами трафика (например, чтобы обеспечить, что HTTP-трафик идет только на веб-сервера, а DNS-запросы – только к DNS-серверам), а также для обеспечения гарантии того, что если одна система в одной DMZ скомпрометирована атакующим, то системы в других DMZ ему по-прежнему недоступны.

Экранированный узел. Экранированный узел (screened host) – это межсетевой экран, который взаимодействует напрямую с маршрутизатором периметра и внутренней сетью. На Рисунке 5-37 покан такой тип архитектуры.

Рисунок 5-37. Экранированный узел – это межсетевой экран, экранированный маршрутизатором

Полученный из Интернет трафик сначала проходит фильтрацию пакетов на внешнем маршрутизаторе. Прошедший через маршрутизатор трафик отправляется на экранированный узел – межсетевой экран, который применяет дополнительные правила к трафику и уничтожает запрещенные пакеты. Затем трафик передается на узел получателя во внутренней сети. Экранированный узел (межсетевой экран) – это устройство, которое принимает трафик напрямую от маршрутизатора. Никакой внешний трафик не может пройти напрямую от маршрутизатора во внутреннюю сеть, минуя межсетевой экран.

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

Что означает в данном контексте слово «экранирование» (screening)? Как показано на Рисунке 5-37, маршрутизатор – это экранирующее устройство, а межсетевой экран – экранированный узел. Это просто означает, что существует уровень, который анализирует трафик и удаляет из него кучу «мусора» до направления этого трафика на межсетевой экран. Экранированный узел отличается от экранированной подсети, которая описана далее.

Экранированная подсеть. Архитектура экранированной подсети (screened-subnet) добавляет еще один уровень безопасности в архитектуру экранированного узла. Внешний межсетевой экран экранирует данные, входящие в сеть DMZ. Однако вместо перенаправления трафика непосредственно во внутреннюю сеть, трафик передается на внутренний межсетевой экран, который также выполняет фильтрацию трафика. Использование двух этих физических межсетевых экранов создает DMZ.

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

Рисунок 5-38. В экранированной подсети два межсетевых экрана используются для создания DMZ

На Рисунке 5-38 показан простейший пример. В реальности обычно используются значительно более сложные сети и DMZ. На Рисунках 5-39 и 5-40 показаны некоторые другие возможные архитектуры экранированных подсетей и их конфигураций.

Рисунок 5-39. Экранированная подсеть может включать в себя несколько различных сетей и нескольких различных межсетевых экранов, каждый из которых фильтрует трафик по своим правилам, закрывая определенные уязвимости

Рисунок 5-40. Некоторые архитектуры имеют разделенные экранированные подсети с различными типами серверов в каждой из них

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

Организация и настройка DMZ, сети периметра, экранированных узлов и подсетей определяются политикой безопасности компании. В политике следует ясно описывать требуемый уровень безопасности, указывать сервисы, которые должны быть доступны внутренним и внешним пользователям.
ПРИМЕЧАНИЕ. Иногда архитектуру с экранированным узлом называют однозвенной (single-tiered) конфигурацией, а с экранированной подсетью – двухзвенной (two-tiered) конфигурацией. Если с помощью трех межсетевых экранов создаются две раздельных DMZ, это называют трехзвенной (three-tiered) конфигурацией.
«Обязанности» межсетевых экранов

«По умолчанию» любой межсетевой экран должен блокировать любые пакеты, кроме разрешенных явно. Соответственно, если в правилах межсетевого экрана не указано, какие пакеты являются разрешнными, он должен блокировать все принимаемые пакеты. Любой входящий в сеть пакет, в котором в качестве адреса отправителя указан адрес узла внутренней сети, должен блокироваться. Маскарадинг (masquerading), или спуфинг (spoofing), является популярной атакой, при которой атакующий изменяет заголовок пакета, указывая в нем в качестве адреса отправителя адрес внутреннего узла, который он хочет атаковать. Такой пакет в любом случае следует считать поддельным и нелегитимным, поскольку нет причин, по которым пришедший из сети Интернет пакет имел бы в качестве адреса отправителя адрес, принадлежащий внутренней сети. Поэтому межсетевой экран должен блокировать такой пакет. То же самое относится и к исходящему трафику. Не следует разрешать исходящий из сети трафик, в пакетах которого в адресе отправителя указан адрес, не принадлежащий внутренней сети. Если межсетевой экран выявляет такие пакеты, это означает, что кто-то или что-то во внутренней сети занимается подделкой сетевых пакетов (спуфингом). C большой вероятностью, это может быть следствием работы зомби-агентов, использующихся для проведения DoS- (DDoS-) атак.

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

Многие компании устанавливают запрет на прием пакетов, содержащих информацию маршрутизации от источника (source routing), о чем мы уже говорили ранее. Наличие информации маршрутизации от источника означает, что пакет решает, как его передавть получателю, самостоятельно, без помощи маршрутизаторов между компьютерами отправителя и получателя. Маршрутизация от источника обеспечивает перемещение пакета через сеть по заранее определенному пути. При этом компьютер отправителя должен знать топологию сети и правильный маршрут для пакета. Это упрощает задачу маршрутизаторов и других устройств между отправителем и получателем, поскольку им не нужно думать, как маршрутизировать этот пакет. Однако это ведет к увеличению рисков нарушения безопасности. Когда маршрутизатор получает пакет с информацией маршрутизации от источника, он понимает, что пакет сам знает, что с ним нужно делать, и пропускает его дальше. При этом не все фильтры могут применяться к таким пакетам, а для сетевых администраторов предпочтительнее, чтобы пакеты маршрутизировались по установленным ими маршрутам, а не по маршрутам, диктуемым самими пакетами. Чтобы исключить неправильную маршрутизацию, многие межсетевые экраны настраивают на проверку наличия в пакетах информации маршрутизации от источника и отклонение пакетов, в которых она есть.

К сожалению, устанавка компанией межсетевого экрана может создать ложное чувство безопасности. Межсетевые экраны – это только часть головоломки, а для обеспечения безопасности нужно множество частей.
Характеристики архитектуры межсетевого экрана. Важно понимать следующие характеристики различных типов архитектуры межсетевых экранов:
С двойной привязкой:
  • Один компьютер с раздельными сетевыми картами, подключенными к каждой сети.
  • Используется для отделения внутренней доверенной сети от внешней недоверенной сети.
  • На компьютере должны быть отключены функции пересылки и маршрутизации пакетов, чтобы две сети были реально разделены.
Экранированный узел:
  • Маршрутизатор фильтрует (экранирует) трафик перед его отправкой на межсетевой экран.
Экранированная подсеть:
  • Внешний маршрутизатор фильтрует (экранирует) трафик перед его отправкой в подсеть. Трафик, направленный во внутреннюю сеть, проходит через два межсетевых экрана.
В следующем списке приведены некоторые недостатки межсетевых экранов:
  • В большинстве случаев необходимо использовать распределенный подход для контроля всех сетевых точек доступа, что нельзя реализовать при помощи одного только межсетевого экрана.
  • Межсетевой экран является потенциальным «бутылочным горлышком» для потока трафика.
  • Межсетевой экран может заблокировать нужные сервисы, которые могут быть необходимы пользователям (хотя, конечно, это недостаток для пользователей, а для специалистов по безопасности – преимущество).
  • Большинство межсетевых экранов не обеспечивает защиту от вирусов, которые загружаются пользователями или приходят в сообщениях электронной почты. Межсетевые экраны не имеют механизмов выявления вирусов.
  • Граничные межсетевые экраны обеспечивают низкий уровень защиты от внутренних атакующих.
  • Межсетевые экраны не обеспечивают защиты от несанкционированно установленных модемов, работающих в режиме ожидания входящих вызовов.
  • Межсетевые экраны не защищают от несанкционированно установленных беспроводных точек доступа.
Роль межсетевого экрана становится все сложнее и сложнее, она получает больше функций и обязанностей. Эти сложности работают против сетевого администратора и специалиста по безопасности, т.к. от них требуется правильное понимание и надлежащее внедрение дополнительной функциональности межсетевых экранов. Без понимания различных типов имеющихся на рынке межсетевых экранов, а также архитектур, количество «дыр» в безопасности увеличивается, открывая дорогу злоумышленникам.


Хост-приманка (honeypot) – это компьютер, который размещается обычно в экранированной подсети или DMZ и пытается привлечь внимание атакующих к себе и, соответственно, отвлечь их от реально использующихся в работе компьютеров. Чтобы сделать хост-приманку привлекательным для атакующих, администраторы могут разрешить на них наиболее часто атакуемые службы и порты. Однако администратор должен позаботиться, чтобы эта система была полностью изолированной, чтобы атакующий, скомпрометировав ее, не мог получить доступ к другим компьютерам в сети. На некоторых хостах-приманках администраторы создают эмуляцию отдельных служб, т.е. реальная служба на них не запущена, но работа программного обеспечения организована так, что для атакующего это выглядит как работающая и доступная служба. В Домене 08 мы еще раз коснемся хостов-приманок в контексте понимания разницы между заманиванием (enticement) и провокацией (entrapment). Легальные хосты-приманки могут привлечь внимание атакующих, чтобы они попытались взломать именно этот компьютер, но они не провоцируют атакующего на это. Приведенный в Домене 08 пример говорит о том, что баннер, размещенный на веб-сервере – приманке, который говорит, что на нем можно скачать бесплатно музыку в формате МР3, – это провокация. На легальном хосте-приманке просто запущены уязвимые службы, открыты порты, доступны для просмотра банеры служб – этого достаточно, чтобы злоумышленник попытался атаковать такую систему в первую очередь, но она никого не провоцирует на незаконные действия.

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


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

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

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

1 комментарий:

eagle комментирует...

- Securosis: Understanding and Selecting an Enterprise Firewall. http://securosis.com/reports/Securosis_Understanding_Selecting_EFW_FINAL.pdf