Обеспечение безопасности локальной сети

advertisement
Обеспечение безопасности локальной сети
В целом средства обеспечения защиты компьютерной информации в зависимости от
способа реализации можно разделить на группы:
1. Программные средства включают программы для фильтрации трафика, системы
обнаружения вторжений, антивирусные программы, средства анализа защищености
(такие, как сетевые сканеры и анализаторы пакетов), программы для идентификации
пользователей и контроля доступа, шифрования информации и т.д. Многие современные
программные средства представляют собой целые комплексы, сочетающие несколько
перечисленных функций.
К этой категории также можно отнести заплаты к операционным системам и
приложениям, которые закрывают бреши в системе безопасности.
2. Программно-аппаратные средства
К ним, относятся, например, аппаратные брандмауэры и системы обнаружения
вторжений; устройства для чтения смарт-карт для аутентификации при загрузке;
биометрические устройства аутентификации, например сканеры отпечатков пальцев или
сетчатки глаза; USB-устройства для хранения ключей безопасности и т.д.
3. Организационные средства – складываются из организационно-технических
(подготовка помещений с компьютерами, прокладка кабельной системы с учетом
требований ограничения доступа к ней и др.) и организационно-правовых (национальные
законодательства и правила работы, устанавливаемые руководством конкретного
предприятия).
По степени распространения и доступности выделяются программные средства, поэтому
далее они рассматриваются более подробно. Другие средства применяются в тех случаях,
когда требуется обеспечить дополнительный уровень защиты информации.
Перечень методов, которые можно использовать для обеспечения безопасности
локальной сети.
1) Защита от вирусов, червей и троянских программ с помощью специализированного ПО
2) Своевременная установка обновлений для операционной системы и прикладных
программ
3) Периодическая проверка сети с помощью сканера уязвимостей и устранение найденных
уязвимостей
4) Меры по обеспечению безопасности, специфичные для беспроводной сети
5) Установка и настройка брандмауэра (firewall)
6) Установка и настройка IDS (системы обнаружения вторжений)
7) Настройка аутентификации, прав доступа и групповых политик безопасности (для
Windows-систем)
8) Ведение лог-файлов (аудит)
9) В случае необходимости – шифрование трафика, применение ЭЦП, технологии VPN
10) Запрет загрузки с внешних носителей/отключение USB портов
11) Применение функции Port Security на коммутаторах
12) Использование VLANs (Virtual Local Networks)
13) Органичение физического доступа к сетевому оборудованию; использование паролей
при доступе к консоли управления оборудованием
14) Резервное копирование особо важных данных/применение дублирующего сервера
Брандмауэры (firewalls)
Брандмауэром называют программное или программно-аппаратное средство,
выполняющее анализ и фильтрацию трафика, для обеспечения безопасности сети или
отдельного компьютера. Также встречаются общепринятые названия межсетевой экран и
firewall.
Прежде чем термин “firewall” был принят экспертами по сетевой безопасности, его как
профессиональный термин употребляли строители. Брандмауэром называется огнеупорный
барьер, разделяющий отдельные блоки в многоквартирном доме. При попадании огня в один
блок брандмауэр предотвращает его распространение в другие блоки - в сущности,
позволяет локализовать проблему. Межсетевой экран работает примерно так же: он помогает
избежать риска повреждения систем или данных в локальной сети из-за проблем, вызванных
взаимодействием с другими сетями. Межсетевой экран осуществляет это, пропуская
разрешенный трафик и блокируя остальной.
Общий принцип функционирования брандмауэра следующий. В брандмауэре задается
набор правил. Каждое правило содержит в себе ряд критериев, а также действие, которое
необходимо выполнить с пакетом, если он соответствует этим критериям. Правила
выполняются по порядку сверху вниз. Если пакет не подпадает под критерии, указанные в
первом правиле – он передается второму правилу, и так далее до конца. Если пакет не
попал под действие ни одного из правил, то к нему применяется т.н. правило по
умолчанию («все разрешено» или «все запрещено», выбор конкретного варианта
отпределяется политикой безопасности организации).
По способу применения брандмауэры можно разделить на две большие группы.
Брандмауэры на основе хоста. Они устанавливаются на отдельном компьютере и
защищают его как от внешних угроз (исходящих из Интернета), так и от внутренних угроз
(исходящих из локальной сети). Такие брандмауэры также называют персональными.
Сетевые брандмауэры. Они устанавливаются на шлюзе локальной сети и защищают ее от
внешних угроз (исходящих из Интернета). Также могут контролировать и разграничивать
доступ пользователей локальной сети в Интернет. Могут применяться для разграничения
внутренних подсетей корпоративной сети организации.
Сетевые брандмауэры, как правило, дороже персональных брандмауэров, что объясняется
их большей сложностью и расширенной функциональностью. Сетевые брандмауэры
предназначены для работы с гораздо большими объемами трафика и поддерживают
больше протоколов и одновременных соединений, чем персональный брандмауэр. В
большинстве из них используются сложные инструменты управления: удаленное
администрирование, централизованное администрирование нескольких брандмауэров,
ведение отчетов и создание журналов.
Компьютер, на котором установлен такой брандмауэр, должен иметь 2 или более сетевых
интерфейсов.
Firewall
Internet
Программные и программно-аппаратные брандмауэры
Программно-аппаратный брандмауэр приобретается как единый модуль: аппаратное
обеспечение с предварительно установленным программным обеспечением брандмауэра.
Большинство аппаратных брандмауэров работает на базе специализированных
операционных систем, хотя на некоторых устройствах брандмауэры работают под Linux
или BSD.
Конфигурирование аппаратного брандмауэра и управление им может осуществляться
через Web-интерфейс, либо через специальную утилиту, поставляемую вместе с
брандмауэром. Также возможен консольный доступ через telnet или ssh.
Аппаратные брандмауэры имеют и достоинства, и недостатки. Использование
оптимизированных операционных систем без каких-либо лишних сервисов позволяет
обеспечить высокую производительность и безопасность. Однако аппаратные
брандмауэры сложнее модернизировать. Кроме того, программно-аппаратный брандмауэр
будет стоить дороже, чем его программный аналог.
Программный брандмауэр - это продукт, устанавливаемый на базе одной или нескольких
различных операционных систем и аппаратных платформ.
Как и аппаратный брандмауэр, программный брандмауэр имеет свои достоинства и
недостатки. Важное преимущество состоит в возможности легко модернизировать
аппаратную базу. Можно дополнительно установить новый процессор или больший объем
памяти, что обойдется относительно недорого. Программный брандмауэр стоит дешевле
аппаратного; во многих случаях можно скачать демонстрационную версию программного
брандмауэра и испытать его перед покупкой. Недостатки программных брандмауэров
заключаются в том, что они обычно работают медленнее, чем аппаратные, и поскольку
они работают на базе стандартных операционных систем, эти операционные системы без
правильно заданных настроек безопасности могут быть более уязвимыми для атак, чем
специализированные операционные системы.
Разновидности брандмауэров (в зависимости от того, на каком уровне модели OSI
осуществляется фильтрация)
1) Пакетный фильтр
Первым типом брандмауэров стал так называемый пакетный фильтр (packet filter), или
фильтрующий маршрутизатор, принимающий решение о пропуске или отбрасывании
пакета на основе анализа заголовка сетевого и транспортного уровня.
Фильтрация может осуществляться по IP-адресам (источника и назначения), по
используемому протоколу (TCP, UDP, ICMP), по номерам портов (источника и
назначения) либо типу сообщения ICMP, по параметрам соединения протокола TCP
(флаги, номера Sequence Number и Acknowledgement Number), по MAC адресу источника
пакета.
Кроме того, важны не только сведения, содержащиеся в самом пакете, — имеет значение и
интерфейс, по которому он прибывает. Например, если фильтр получает пакет по
интерфейсу, подключенному к внешней сети, а адрес отправителя соответствует локальной
сети, этот пакет должен быть отброшен фильтром, поскольку такое сочетание для обычных
пакетов невозможно.
2) Шлюз уровня приложений
Пакетному фильтру приходится принимать решения только на основе информации в
заголовке сетевого и транспортного уровня. К сожалению, иногда этого бывает
недостаточно. Например, пакетный фильтр может определить, что пакет предназначен для
какого-то протокола, скажем, FTP. Но он не в состоянии распознать, какой это запрос - get
(получить) или put (передать). При этом не исключено, что запросы одного типа окажутся
вполне допустимыми, а запросы другого типа для данного узла должны будут блокироваться.
Другой пример – передача на корпоративный Web-сервер компании HTTP-запроса из
Интернета, который может содержать злонамеренные данные (например, код Javascript для
осуществления межсайтового скриптинга). Пакетный фильтр не в состоянии обнаружить и
блокировать эти данные, поскольку они расположены либо в заголовке прикладного уровня,
либо в поле данных пакета.
Шлюз уровня приложений (application gateway), или proxy-сервер (application proxy) - это
брандмауэр, который перехватывает вызовы клиентских приложений и передает их
удаленным сервисам, выступая в роли посредника между ними. Преимущество такого
подхода состоит в том, что ргоху-сервер может фильтровать все входящие и исходящие
пакеты на прикладном уровне модели OSI. Например, администратор может запретить
конкретному пользователю скачивать файлы на конкретный компьютер с помощью FTP
или разрешить пользователю размещать файлы через FTP на том же самом компьютере.
Это возможно потому, что, в зависимости от того, получает ли пользователь файлы с
сервера или размещает их там, используются различные команды в заголовке прикладного
уровня. Также возможно разграничивать доступ пользователей локальной сети к внешним
Web-ресурсам на основе доменного имени сайта (которое передается в http-заголовке),
ограничивать доступ к данным определенного типа (.mp3, .avi, .exe…) и так далее.
Кроме того, шлюз уровня приложений способен выполнять аутентификацию
пользователей по именам, что позволяет эффективно разграничить доступ в Интернет.
3) Многоуровневый брандмауэр
Он сочетает в себе пакетный фильтр и шлюз приложений, проверяя содержимое
принимаемых пакетов на трех уровнях модели OSI: сетевом, транспортном и прикладном.
Брандмауэры такого типа очень распространены на сегодняшний день.
Дополнительные свойства брандмауэров
В результате конкуренции среди производителей межсетевых экранов и их попыток
усовершенствовать свой продукт брандмауэры наделялись новыми свойствами. Поскольку
межсетевой экран стоит на границе сети и служит как бы воротами во внешний мир, он должен
выполнять множество задач (в том числе и не связанных с обеспечением безопасности). Вот
некоторые из дополнительных функций, которые имеются в современных брандмауэрах:
 трансляция сетевых адресов (NAT)
Технология, позволяющая клиентам локальной сети иметь доступ в Интернет с
использованием одного внешнегоIP-адреса.
 кэширование (caching)
Во многих случаях пользователи постоянно посещают одни и те же Web-сайты и
просматривают одни и те же страницы. Web-кэширование предоставляет способ
уменьшения сетевого трафика благодаря сохранению постоянно запрашиваемых данных
в кэше брандмауэра.

антивирусная проверка и фильтрация контента
 публикация серверов (перенаправление портов, port mapping)
Предположим, что в сети имеется Web-сервер с внутренним IP-адресом, который
необходимо сделать доступным извне. Можно сделать это с помощью т.н. port mapping.
При этом брандмауэр настраивается таким образом, что запросы, поступающие на его
внешний интерфейс и на 80 порт, переадресовываются внутреннему серверу.
Аналогично можно публиковать и другие сервера (почтовые, баз данных и проч).
Иногда перенаправление портов применяется для повышения эффективности работы
p2p приложений типа Bittorrent.
 VPN сервер
Некоторые брандмауэры способны функционировать как VPN-сервера, предоставляя
удаленным пользователям возможность иметь защищенный доступ к ресурсам
локальной сети, или объединяя две локальные сети между собой.
 Системы обнаружения/предотвращения вторжений (IDS/IPS)
Многие брандмауэры имеют встроенную систему IDS/IPS, способную распознать
попытку атаки определенного типа и выполнить заранее заданные действия.
Основные угрозы, от которых может защитить брандмауэр
Межсетевой экран не гарантирует абсолютную защиту сети, и его нельзя рассматривать в
качестве единственного средства обеспечения безопасности. Необходимо понимать, как именно
выполняет брандмауэр свои функции по защите сети. В равной степени важно знать, от чего он
не может обезопасить. В общем случае правильно сконструированный межсетевой экран
способен защитить сеть от следующих угроз:
1. Сканирование портов
Для предотвращения сканирования портов на клиентских машинах – необходимо
запрещать все входящие соединения с ними (блокировать пакеты с установленным
флагом SYN при отсутствии флага ACK).
Для предотвращения сканирования портов на серверах – необходимо запрещать входящие
соединения со всеми портами, кроме тех, которые используются для нормальной работы
сервера и (возможно) его удаленного администрирования: 80 – для Web сервера, 53 – для
DNS и т.д.
Данные действия должны осуществляться на сетевом брандмауэре (защищающем всю
сеть или сегмент сети).
2. Взлом уязвимых сервисов.
Если сетевой сервис содержит уязвимость, взломщик может использовать ее для
проведения атаки. Брандмауэр помогает справиться с этой проблемой, закрывая
неиспользуемые порты в системе (либо предупреждая пользователя о попытке доступа на
тот или иной порт).
3. Несанкционированный доступ к приложениям
В качестве примера рассмотрим доступ злоумышленника к приложениям,
предназначенным для удаленного управления (SSH, Radmin). Как правило, инструменты
удалённого управления системой используют различные методы аутентификации по
паролю или ключу. Однако этого может быть недостаточно (злоумышленник может
использовать Brute force или какую-либо уязвимость). Брандмауэр понизит вероятность
несанкционированного доступа к сервису до минимума, ограничив список адресов, с
которых разрешено инициировать соединения с данным приложением.
4. Неконтролируемый доступ пользователей локальной сети в Интернет
На брандмауэре может выполняться разграничение доступа пользователей в Интернет по
различным критериям: по имени пользователя или группе, к которой принадлежит
пользователь, по используемому прикладному протоколу (HTTP, FTP, почтовые
протоколы и т.д.), по доменным именам Web-сайтов, типам содержимого и проч.
Контроль доступа в Интернет помогает более эффективно организовать рабочее время
сотрудников и минимизировать расход трафика. Кроме того, это повышает общий уровень
безопасности сети: уменьшается угроза заражения пользовательского компьютера
вирусом или троянским приложением в результате посещения злонамеренного ресурса
или закачки злонамеренного файла.
5. Троянские приложения
Троянское приложение может устанавливаться на зараженном компьютере как сервис и
ожидать запроса на установку соединения на какой-либо порт от своей клиентской части
(как правило, в целях получения команд от злоумышленника). Для защиты необходимо
закрыть возможность установления соединения на все порты, кроме разрешенных (а в
случае клиентского компьютера – вообще на все порты). В этом случае троянская
программа никогда не дождётся запроса на соединение от клиентской части.
В некоторых случаях троянская программа на зараженном компьютере работает как
клиент: она иницирует соединение изнутри локальной сети с серверной частью,
расположенной на компьютере злоумышленника. Для защиты можно заблокировать
брандмауэром исходящие соединения на все порты, кроме используемых (HTTP, FTP,
DNS и т.д.). Однако ничто не мешает серверной части троянской программы принимать
запросы на соединение, используя один из таких портов. Кроме того, многие троянские
приложения передают ворованную информацию, пересылая ее на почту или обращаясь на
Web сайт злоумышленника. В этом случае защититься с помощью брандмауэра не
удастся.
5. (D)DoS атаки
На брандмауэре необходимо сконфигурировать функции анти-спуфинга, которые
заключаются в том, чтобы блокировать исходящий из сети трафик, если адрес источника
не является внутренним адресом сети, т.е. был заменен. Такая фильтрация не позволит
злоумышленнику проводить DoS-атаки на чужие сети с использованием подмены адреса
источника.
Также брандмауэр может распознавать злонамеренную сетевую активность (например,
большое количество однотипных ICMP, UDP пакетов, запросов TCP SYN) и блокировать
их. Для этого в состав брандмауэра должен входить специальный модуль IDS (Intrusion
Detection System).
6. Некоторые атаки на прикладном уровне
Брандмауэр может распознавать вирусы, черви, троянские приложения и другие
вредоносные коды. Кроме того, брандмауэр может блокировать загрузку Web страниц,
содержащих нежелательный контент; блокировать загрузку файлов определенных типов
(например .exe, .mp3), и т.д.
Хороший брандмауэр является эффективным средством нейтрализации многих типов
угроз, но ни один брандмауэр не может гарантировать стопроцентную безопасность сети.
Хакеры всегда имеют возможность создать бреши в системе безопасности сети, например
с помощью социальной инженерии, которая позволяет обойти защиту, обеспечиваемую
брандмауэром. Поэтому важен настоящий многоуровневый подход к безопасности, в том
числе обучение пользователей, разработка политик и правил для сотрудников компании и
т.д.
Разработка внутренней политики безопасности
Перед настройкой брандмауэра необходимо определить внутреннюю политику безопасности
сети. Для этого следует определить, какие возможности должны быть доступны
пользователям. Как правило, эти возможности включают в себя:




доступ по протоколу HTTP к внешним Web-серверам (плюс к этому, возможно,
развертывание Web-сервера внутри сети компании, с обеспечением доступа к нему
извне);
доступ по протоколам SMTP, POP3 к внешним email серверам (или развертывание
почтового сервера внутри сети компании, с обеспечением доступа к нему извне);
доступ по протоколу FTP для обмена файлами (например, исследовательская группа
может обмениваться файлами с коллегами, либо клиенты могут иметь анонимный
FTP-доступ к файлам или документации);
удаленный доступ к определенным компьютерам сети (например, для
администрирования) посредством служб Radmin, Remote Desktop и тому подобных.
Далее необходимо определить политику по умолчанию. Есть два основных варианта
политики по умолчанию:


разрешить все действия, не запрещенные специально;
запретить все действия, не разрешенные специально.
Наиболее безопасной и более удобной является вторая стратегия. Почему? Рассуждая логически,
гораздо проще определить небольшой список разрешенных действий, чем намного больший
перечень запрещенных. Кроме того, поскольку новые протоколы и службы
разрабатываются достаточно часто, не придется постоянно добавлять новые правила, чтобы
предотвратить появление дополнительных проблем. Ведь может случиться так, что
необходимость внесения дополнительных запретов станет ясна лишь тогда, когда в
результате несанкционированного доступа сети будет нанесен значительный ущерб.
Сетевой брандмауэр Iptables
Брандмауэр Iptables представляет собой пакетный фильтр, входящий в состав ОС Linux.
Данный брандмауэр является свободно распространяемым (некоммерческим); его
конфигурирование осуществляется путем редактирования файла со сценарием
(добавления в него переменных и правил).
Iptables может работать как на локальном компьютере, так и на шлюзе локальной сети. В
последнем случае с его помощью можно также выполнять NAT преобразования адресов.
На основе анализа информации, содержащейся в заголовке пакета, брандмауэр
принимает решение, следует ли переслать пакет на узел назначения, удалить пакет, не
предпринимая никаких дополнительных действий, либо вернуть передающему
компьютеру сообщение об ошибке. Правила, определяющие судьбу пакетов, учитывают
IP-адреса источника и назначения, номера портов TCP и UDP, флаги TCP-соединений,
типы ICMP-сообщений и т.д.
Брандмауэр iptables выделяет 3 типа пакетов:
входящие (поступают на внешний или внутренний интерфейс и предназначены
программному обеспечению на шлюзе);
 исходящие (пакеты, сгенерированные программным обеспечением шлюза и
отправляемые через внешний или внутренний интерфейс в сеть);
 транзитные (проходящие через шлюз – с внешнего интерфейса на внутренний (из
внешней сети в локальную), или с внутреннего на внешний (из локальной сети во
внешнюю).

Процессы фильтрации входящих, исходящих и транзитных данных управляются
различными наборами правил, которые принято называть цепочками.
Каждая цепочка представляет собой набор правил, заданных явным образом, и политику
по умолчанию. Пакет проверяется на соответствие каждому из явно указанных правил;
правила выбираются из списка последовательно до тех пор, пока не будет обнаружено
соответствие пакета одному из них. Если пакет не удовлетворяет ни одному из явно
заданных правил, предпринимаются действия, определенные политикой по умолчанию.
Порядок прохождения таблиц и цепочек в брандмауэре iptables
Все цепочки (то есть наборы правил) в iptables распределены по таблицам. Существует 3
таблицы:
Mangle - обычно эта таблица используется для внесения изменений в заголовок пакета. В
нее входят следующие цепочки:





PREROUTING
POSTROUTING
INPUT
OUTPUT
FORWARD
Nat - эта таблица используется для трансляции сетевых адресов. В нее входят следующие
цепочки:



PREROUTING
POSTROUTING
OUTPUT
Filter – в этой таблице производится основная фильтрация трафика. В нее входят
следующие цепочки:



INPUT
OUTPUT
FORWARD
Далее будет приведен порядок прохождения входящих, исходящих и транзитных пакетов
через эти цепочки, а также описание назначения каждой из цепочек.
Рассмотрим
порядок
движения
пакета,
предназначенного
локальному
процессу/приложению. Когда пакет приходит на брандмауэр, то он сперва попадает на
сетевую карту, перехватывается соответствующим драйвером и далее передается в ядро.
Далее пакет проходит ряд таблиц и затем передается локальному приложению (или
уничтожается). Порядок следования пакета приводится ниже:
Шаг Таблица
1
2
3
mangle
Цепочка
PREROUTING
4
nat
PREROUTING
5
mangle
INPUT
6
7
filter
INPUT
Примечание
Кабель
Входной сетевой интерфейс (например, eth0)
Здесь может производиться внесение изменений в
заголовок пакета.
Преобразование адресов (Destination Network Address
Translation).
Здесь может производиться внесение изменений в
заголовок пакета.
Здесь производится фильтрация входящего трафика.
Локальный процесс/приложение (т.е., программа-сервер
или программа-клиент).
Рассмотрим порядок движения пакета, исходящего от локального процесса/приложения.
Пакет, сгенерированный приложением, сперва обрабатывается брандмауэром, проходя
ряд таблиц и цепочек, а затем передается в сеть (или уничтожается). Порядок следования
пакета приводится ниже:
Шаг Таблица
1
Цепочка
2
Mangle
OUTPUT
4
Nat
OUTPUT
5
6
Filter
Mangle
OUTPUT
POSTROUTING
7
Nat
POSTROUTING
Примечание
Локальный процесс (т.е., программа-сервер или
программа-клиент).
Здесь может производиться внесение изменений в
заголовок пакета.
Эта цепочка используется для трансляции сетевых
адресов (NAT) в пакетах, исходящих от локальных
процессов брандмауэра.
Здесь фильтруется исходящий траффик.
Здесь может производиться внесение изменений в
заголовок пакета.
Здесь выполняется Source Network Address
Translation.
Сетевой интерфейс (например, eth0)
Кабель
8
9
Рассмотрим порядок движения транзитного пакета. , исходящего от локального
процесса/приложения. Когда пакет приходит на брандмауэр, то он сперва попадает на
сетевую карту, перехватывается соответствующим драйвером и далее передается в ядро.
Далее пакет проходит ряд таблиц и затем передается на другой интерфейс (или
уничтожается). Порядок следования пакета приводится ниже:
Шаг Таблица
1
2
3
mangle
4
nat
6
mangle
7
Filter
8
mangle
9
nat
10
11
Цепочка
Примечание
Кабель (например Интернет)
Сетевой интерфейс (например, eth0)
PREROUTING Здесь может производиться внесение изменений в
заголовок пакета.
PREROUTING Эта цепочка используется для трансляции сетевых
адресов (Destination Network Address Translation).
Source Network Address Translation выполняется
позднее, в другой цепочке.
FORWARD
Здесь может производиться внесение изменений в
заголовок пакета.
FORWARD
В цепочку FORWARD попадают только те пакеты,
которые идут на другой хост Вся фильтрация
транзитного трафика должна выполняться здесь.
POSTROUTING Здесь может производиться внесение изменений в
заголовок пакета.
POSTROUTING Эта цепочка предназначена в первую очередь для
Source Network Address Translation. Здесь же
выполняется и маскарадинг (Masquerading).
Выходной сетевой интерфейс (например, eth1).
Кабель (пусть будет LAN).
Как видно из таблицы, пакет проходит несколько этапов, прежде чем он будет
передан далее. На каждом из них пакет может быть остановлен.
Рисунок ниже более наглядно демонстрирует три различных варианта
прохождения пакетов:
Далее рассмотрим более подробно назначение каждой из таблиц и цепочек.
1) Таблица Mangle
Как уже упоминалось выше, эта таблица предназначена, главным образом для внесения
изменений в заголовки пакетов (mangle - искажать, изменять), например, для изменения
параметра TTL (Time To Live). Применяется она достаточно редко, поэтому в этом курсе
рассмотрена не будет. За дополнительной информацией можно обратиться к
соответствующей документации.
2) Таблица Nat
Эта таблица используется для выполнения преобразований сетевых адресов NAT (Network
Address Translation). Для этой таблицы характерны действия:
 DNAT
 SNAT
 MASQUERADE
Действие DNAT (Destination Network Address Translation) производит преобразование
адресов назначения в заголовках пакетов. Другими словами, этим действием производится
перенаправление пакетов на другие адреса, отличные от указанных в заголовках пакетов.
DNAT часто применяется тогда, когда необходимо переправить пакет, пришедший на
внешний интерфейс брандмауэра и на определенный порт, внутреннему серверу сети
(порт маппинг).
SNAT (Source Network Address Translation) используется для изменения исходных адресов
пакетов. С помощью этого действия можно скрыть структуру локальной сети, а заодно и
разделить единственный внешний IP адрес между компьютерами локальной сети для
выхода в Интернет. В этом случае брандмауэр, с помощью SNAT, автоматически
производит прямое и обратное преобразование адресов, тем самым давая возможность
выполнять подключение к серверам в Интернете с компьютеров в локальной сети.
Маскировка (MASQUERADE) применяется в тех же целях, что и SNAT. Отличие состоит
в том, что MASQUERADE каждый раз запрашивает адрес внешнего интерфейса, в то
время как для SNAT IP адрес указывается непосредственно. Однако, благодаря такому
отличию, MASQUERADE может работать в случаях с динамическим IP адресом, т.е. когда
подключение к Интернету осуществляется через DHCP.
3)Таблица Filter
Как следует из названия, в этой таблице должны содержаться наборы правил для
выполнения фильтрации пакетов. Пакеты могут пропускаться далее, либо отвергаться
(действия ACCEPT, DROP, REJECT), в зависимости от их содержимого.
Построение правил
Каждое правило - это строка, содержащая в себе критерии, определяющие, подпадает ли
пакет под заданное правило, и действие, которое необходимо выполнить в случае
выполнения критерия. В общем виде правила записываются примерно так:
iptables [-t table] command [match] [target/jump]
1) Если в правило не включается спецификатор [-t table], то по умолчанию предполагается
использование таблицы filter, если же предполагается использование другой таблицы, то
это требуется указать явно. Спецификатор таблицы так же можно указывать в любом
месте строки правила, однако более или менее стандартом считается указание таблицы в
начале правила.
2) Далее, непосредственно за именем таблицы, должна стоять команда. Если
спецификатора таблицы нет, то команда всегда должна стоять первой. Команда
определяет действие iptables, например: вставить правило, или добавить правило в конец
цепочки, или удалить правило и т.п.
Список команд:
-A (add) добавить правило в конец
-I (insert) вставить правило в начало или вставить под указанным номером
-D (delete) удалить правило с указанным номером
-L (list) показать правила (указанной цепочки)
-P назначить политику по умолчанию.
Политика по умолчанию определяет действие, применяемое к пакетам, не попавшим под
действие ни одного из правил в цепочке. В качестве политики по умолчанию допускается
использовать DROP и ACCEPT.
3) Раздел match задает критерии проверки, по которым определяется подпадает ли пакет
под действие этого правила или нет. Здесь можно указать самые разные критерии - IPадрес источника пакета или сети, IP-адрес места назначения, порт, протокол, сетевой
интерфейс и т.д. Существует множество разнообразных критериев.
4) Раздел target указывает, какое действие должно быть выполнено при условии
выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую
цепочку правил, "сбросить" пакет и забыть про него, выдать на источник сообщение об
ошибке и т.п.
Критерии построения правил
1. Общие критерии
-p, --protocol
iptables -A INPUT -p tcp
Этот критерий используется для указания типа протокола – например, TCP, UDP и ICMP.
Можно передавать ключевое слово ALL. В качестве протокола допускается передавать
число - номер протокола, так например, протоколу ICMP соответствует число 1, TCP - 6 и
UDP – 17.
-s, --src, --source
iptables -A INPUT -s 192.168.1.1
IP-адрес(а) источника пакета. Адрес источника может указываться так, как показано в
примере, тогда подразумевается единственный IP-адрес. А можно указать адрес в виде
address/mask, например как 192.168.0.0/255.255.255.0, или более современным способом 192.168.0.0/24. Символ !, установленный перед адресом, означает логическое отрицание,
т.е. --source ! 192.168.0.0/24 означает любой адрес, кроме адресов 192.168.0.x.
-d, --dst, --destination
IP-адрес(а) получателя. Имеет синтаксис схожий с критерием --source, за исключением
того, что подразумевает адрес места назначения. Точно так же может определять как
единственный IP-адрес, так и диапазон адресов. Символ ! используется для логической
инверсии критерия.
-i, --in-interface
iptables -A INPUT -i eth0
Интерфейс, с которого был получен пакет. Использование этого критерия допускается
только в цепочках INPUT, FORWARD и PREROUTING.
-o, --out-interface
iptables -A FORWARD -o eth0
Задает имя выходного интерфейса. Этот критерий допускается использовать только в
цепочках OUTPUT, FORWARD и POSTROUTING.
-f, --fragment
iptables -A INPUT –f
Правило распространяется на все фрагменты фрагментированного пакета, кроме первого,
сделано это потому, что нет возможности определить исходящий/входящий порт для
фрагмента пакета, а для ICMP-пакетов определить их тип. С помощью
фрагментированных пакетов могут производиться атаки на брандмауэр, так как
фрагменты пакетов могут не отлавливаться другими правилами.
2. TCP и UDP критерии
Этот набор критериев работает только с TCP или UDP пакетами. Чтобы использовать их,
потребуется в правилах указывать тип протокола --protocol tcp. Иногда нужно указать –m
tcp
--sport, --source-port
iptables -A INPUT -p tcp --sport 22
Исходный порт, с которого был отправлен пакет. В качестве параметра может указываться
номер порта или название сетевой службы. При указании номеров портов правила
отрабатывают несколько быстрее, однако это менее удобно при разборе листингов
скриптов.
Номера портов могут задаваться в виде интервала из минимального и максимального
номеров, например --source-port 22:80. Как и раньше, символ ! используется для инверсии.
Так критерий --source-port ! 22 подразумевает любой порт, кроме 22. Инверсия может
применяться и к диапазону портов, например --source-port ! 22:80.
--dport, --destination-port
iptables -A INPUT -p tcp --dport 22
Порт или диапазон портов, на который адресован пакет. Аргументы задаются в том же
формате, что и для --source-port.
--tcp-flags (только для TCP)
iptables -p tcp --tcp-flags SYN,FIN,ACK SYN
Определяет маску и флаги tcp-пакета. Пакет считается удовлетворяющим критерию, если
из перечисленных флагов в первом списке в единичное состояние установлены флаги из
второго списка. Так для вышеуказанного примера под критерий подпадают пакеты, у
которых флаг SYN установлен, а флаги FIN и ACK сброшены. В качестве аргументов
критерия могут выступать зарезервированные идентификаторы ALL и NONE. ALL - значит
ВСЕ флаги и NONE - НИ ОДИН флаг. Так, критерий --tcp-flags ALL NONE означает -"все флаги в пакете должны быть сброшены". Как и ранее, символ ! означает инверсию
критерия. Важно: имена флагов в каждом списке должны разделяться запятыми, пробелы
служат для разделения списков.
--syn (только для TCP)
iptables -p tcp --syn
Критерий --syn является по сути реликтом, перекочевавшим из ipchains (версия пакетного
фильтра, предшествующая iptables). Критерию соответствуют пакеты с установленным
флагом SYN и сброшенными флагами ACK и FIN. Этот критерий аналогичен критерию -tcp-flags SYN,ACK,FIN SYN. Такие пакеты используются для открытия соединения TCP.
Заблокировав такие пакеты, можно надежно заблокировать все входящие запросы на
соединение.
3. ICMP критерии
Этот протокол используется, как правило, для передачи сообщений об ошибках. Главное
свойство этого протокола заключается в типе заголовка, который содержит информацию о
том, что это за пакет. Например, когда мы пытаемся соединиться с недоступным хостом,
то мы получим в ответ сообщение ICMP host unreachable.
Существует только один специфичный критерий для ICMP пакетов:
--icmp-type
iptables -A INPUT -p icmp --icmp-type 8
Тип сообщения ICMP определяется номером или именем.
4. Явные критерии (модули расширения для которых надо подгружать явно, с помощью
ключа –m или --match; они не подгружаются автоматически)
Критерий MAC
MAC (Ethernet Media Access Control) критерий используется для проверки исходного
MAC-адреса пакета. Модуль расширения должен подгружаться явно ключом -m mac.
Расширение -m mac, на сегодняшний день, предоставляет единственный критерий, но
возможно в будущем он будет расширен и станет более полезен.
--mac-source
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
MAC адрес сетевого узла, передавшего пакет. MAC адрес должен указываться в форме
XX:XX:XX:XX:XX:XX. Как и ранее, символ ! используется для инверсии критерия,
например --mac-source ! 00:00:00:00:00:01, что означает - "пакет с любого узла, кроме
узла, который имеет MAC адрес 00:00:00:00:00:01" . Этот критерий имеет смысл только в
цепочках PREROUTING, FORWARD и INPUT и нигде более.
Критерий Multiport
Расширение multiport позволяет указывать в тексте правила несколько портов и
диапазонов портов. Модуль расширения должен подгружаться явно ключом -m multiport.
--source-port
iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
Служит для указания списка исходящих портов. С помощью данного критерия можно
указать до 15 различных портов. Названия портов в списке должны отделяться друг от
друга запятыми, пробелы в списке не допустимы. Данное расширение может
использоваться только совместно с критериями -p tcp или -p udp. Главным образом
используется как расширенная версия обычного критерия --source-port.
--destination-port
iptables -A INPUT -p tcp -m multiport --port 22,53,80,110
Данный критерий проверяет как исходящий так и входящий порт пакета. Формат
аргументов аналогичен критерию --source-port и --destination-port. Обратите внимание
на то что данный критерий проверяет порты обеих направлений, т.е. если вы пишете -m
multiport --port 80, то под данный критерий подпадают пакеты, идущие с порта 80 на
порт 80.
Нельзя использовать стандартную проверку портов и расширение -m multiport (например
--sport 1024:63353 -m multiport --dport 21,23,80) одновременно. Подобные правила будут
просто отвергаться iptables.
Критерий State
Критерий state позволяет получать информацию о состоянии соединения. Данное
расширение необходимо загружать явно, с помощью ключа -m state.
--state
iptables -A INPUT -m state --state RELATED,ESTABLISHED
Признак NEW сообщает о том, что пакет является первым для данного соединения.
Например, если получен SYN пакет, являющийся первым пакетом для данного
соединения, то он получит статус NEW. Однако, пакет может и не быть SYN пакетом и
тем не менее получить статус NEW (например, когда таймаут соединения уже истек, но
само соединение не было закрыто).
Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. Для
перехода в состояние ESTABLISHED необходимо чтобы узел сети передал пакет и
получил на него ответ от другого узла (хоста). После получения ответа состояние
соединения NEW или RELATED будет изменено на ESTABLISHED.
Состояние RELATED одно из самых "хитрых". Соединение получает статус RELATED
если оно связано с другим соединением, имеющим признак ESTABLISHED. Это
означает, что соединение получает признак RELATED тогда, когда оно инициировано из
уже установленного соединения, имеющего признак ESTABLISHED. Хорошим
примером соединения, которое может рассматриваться как RELATED, является
соединение FTP-data, которое является связанным с портом FTP control, а так же DCC
соединение, запущенное из IRC.
Признак INVALID говорит о том, что пакет связан с неизвестным соединением и,
возможно содержит ошибку в данных или в заголовке. Поэтому он не может быть
идентифицирован и не может иметь определенного статуса. Наилучшим вариантом
является применение действия DROP к таким пакетам.
Критерий Limit
Должен подгружаться явно ключом -m limit. Задает условие, позволяющие ограничить
частоту тех или иных событий. Такая возможность весьма полезна для организации
записи о событиях в системные журналы. Можно делать запись в журнал не для каждого
случая совпадения с заданными условиями, а лишь ограничиваться заданной в правиле
iptables частотой таких событий. Это позволяет снизить размер журнальных файлов и
сделать их более читаемыми.
Более наглядно этот критерий можно представить себе как некоторую емкость с
выпускным отверстием, через которое проходит определенное число пакетов за единицу
времени (т.е. скорость "вытекания"). Скорость "вытекания" определяет величина –limit
(указывается в формате значение/суффикс. Значение определяет число событий, а
суффикс - единицу времени (/s или /second - секунда, /m или /minute- минута, /h или /hour час, /d или /day - сутки). По умолчанию используется пороговая частота 3 пакета в час..
Величина --limit-burst задает общий "объем емкости". По умолчанию для параметра burst
используется значение 5.
Предположим наличие правила
iptables -A INPUT -m limit --limit 3/hour --limit-burst 5 -j LOG
Информация о первых пяти пакетах, переданных правилу, будет записана в журнальный
файл, поскольку значение счетчика не достигло пика. После этого, в течение 20 минут (1/3
часа) записи производиться не будут, независимо от частоты поступления пакетов
(емкость наполнена до краев). В конце этого интервала значение счетчика уменьшится на
1, и в журнал будет записан еще один пакет (попадет в емкость). Если пакеты перестали
поступать (нет входящего трафика), то за 100 минут (20*5) емкость освободится. Когда
вновь пойдет входящий трафик, то первые 5 пакетов будут записаны в журнал, и т.д.
Возможные действия над пакетом, подпадающим под определенное правило
Если над пакетом выполняется действие ACCEPT, то пакет прекращает движение по
цепочке и считается принятым (то есть пропускается). Действие задается с помощью
ключа -j ACCEPT.
В процессе работы брандмауэр iptables может также запретить пакет (DROP), либо
отказать пакету в прохождении (REJECT). На первый взгляд эти действия могут показаться аналогичными, однако между ними есть существенное различие. Отвергнутый
(REJECT) пакет удаляется, а отправителю возвращается ICMP-пакет с сообщением об
ошибке. Запрещенный (DROP) пакет также удаляется, но отправитель не оповещается об
этом.
В большинстве случаев запрет пакета считается более приемлемым решением, чем отказ
в прохождении. Во-первых, отправка сообщения об ошибке увеличивает сетевой трафик, в
то время как подавляющее большинство пакетов, подлежащих удалению, представляет
собой не ошибочное обращение к отсутствующей службе, а злонамеренную попытку
незаконного проникновения в систему. Во-вторых, любой ответ предоставляет
злоумышленнику дополнительную информацию.
Существует единственный ключ, управляющий поведением команды REJECT.
--reject-with
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
Указывает, какое сообщение необходимо передать в ответ, если пакет совпал с заданным
критерием. При применении действия REJECT к пакету сначала на хост-отправитель
будет отослан указанный ответ, а затем пакет будет "сброшен". Допускается использовать
следующие типы ответов: icmp-net-unreachable, icmp-host-unreachable, icmp-portunreachable, icmp-proto-unreachable, icmp-net-prohibited и icmp-host-prohibited.
По-умолчанию передается сообщение port-unreachable. В заключение укажем еще один
тип ответа - tcp-reset, который используется только для протокола TCP. Если указано
значение tcp-reset, то действие REJECT передаст в ответ пакет TCP RST, пакеты TCP
RST используются для закрытия TCP соединений.
LOG - действие, которое служит для журналирования отдельных пакетов и событий. В
журнал могут заноситься заголовки IP пакетов и другая интересующая администратора
информация. Информация из журнала может быть затем прочитана с помощью dmesg или
syslogd либо с помощью других программ. Журналирование представляет полезное
средство для отладки правил: например, на период отладки вместо действия DROP можно
использовать действие LOG, чтобы до конца убедиться, что все правила работают
корректно. Также существует действие ULOG, которое позволяет выполнять запись
журналируемой информации не в системный журнал, а в базу данных MySQL и т.п.
Действие LOG имеет пять ключей, которые перечислены ниже.
--log-level
iptables -A FORWARD -p tcp -j LOG --log-level debug
Используется для задания уровня журналирования (log level). Обычно можно задать
следующие уровни: debug, info, notice, warning, warn, err, error, crit, alert, emerg и panic.
Ключевое слово error означает то же самое, что и err, warn - warning и panic - emerg.
Приоритет определяет различия в том как будут заноситься сообщения в журнал.
--log-prefix
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
Ключ задает текст (префикс), которым будут предваряться все сообщения iptables.
Сообщения со специфичным префиксом затем легко можно найти, к примеру, с помощью
grep. Префикс может содержать до 29 символов, включая и пробелы.
--log-tcp-sequence
iptables -A INPUT -p tcp -j LOG --log-tcp-sequence
Этот ключ позволяет заносить в журнал номер TCP Sequence пакета. Номер TCP Sequence
идентифицирует каждый пакет в потоке и определяет порядок "сборки" потока.
--log-tcp-options
iptables -A FORWARD -p tcp -j LOG --log-tcp-options
Этот ключ позволяет заносить в системный журнал различные сведения из заголовка TCP
пакета. Такая возможность может быть полезна при отладке. Этот ключ не имеет
дополнительных параметров, как и большинство ключей действия LOG.
--log-ip-options
iptables -A FORWARD -p tcp -j LOG --log-ip-options
Этот ключ позволяет заносить в системный журнал различные сведения из заголовка IP
пакета. Во многом схож с ключом --log-tcp-options, но работает только с IP заголовком.
Пример настройки iptables для шлюза
#!/bin/sh
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
IPTABLES="/sbin/iptables"
#внешний IP адрес шлюза
INET_IP="192.168.1.1"
#внешний интерфейс шлюза (имя)
INET_IFACE="eth0"
INET_BROADCAST="192.168.1.255"
#внутренний IP адрес шлюза
LAN_IP="192.168.0.1"
#диапазон адресов внутренней сети
LAN_IP_RANGE="192.168.0.0/24"
#внутренний интерфейс шлюза (имя)
LAN_IFACE="eth1"
#локальный (loopback) интерфейс
LO_IFACE="lo"
LO_IP="127.0.0.1"
echo "1" > /proc/sys/net/ipv4/ip_forward
#Политики по умолчанию
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#NAT
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
#Создание пользовательской цепочки bad_tcp_packets. В ней будут отлавливаться
#поврежденные (некорректные) пакеты (и уничтожаться).
$IPTABLES -N bad_tcp_packets
#цепочка bad_tcp_packets
#Некорректными являются пакеты, которые имеют статус NEW и при этом в них
#установлен “лишний” флаг ACK (вместе с SYN)
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state -state NEW -j REJECT --reject-with tcp-reset
#Некорректными являются пакеты, которые имеют статус NEW, но при этом в них
#отсутствует флаг SYN
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG -log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#цепочка INPUT
#В цепочке INPUT фильтруются пакеты, предназначенные локальному приложению.
#Все пакеты сначала отправляются в цепочку bad_tcp_packets для проверки на
#корректность.
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#Разрешаем все входящие пакеты из ЛС
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
#Обратная петля
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
#Разрешаем пакеты из уже установленного соединения из Интернета
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED, RELATED j ACCEPT
#Разрешаем установку соединения со шлюзом из Интернет (разрешается
устанавливать #соединение по протоколу TCP на порты 80, 443, и 21 подразумевается, что на #шлюзе запущен Web-сервер и FTP-сервер)
$IPTABLES -A INPUT -p TCP -i $INET_IFACE
--syn
--dport 21 -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE
--syn
--dport 80 -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE
--syn
--dport 443 -j ACCEPT
#Разрешаем
и
пакеты
ICMP
Echo
Request
Time
Exceeded
(для
возможности
производить #трассировку)
# ICMP Echo Request
$IPTABLES -A INPUT -p ICMP - --icmp-type 8 -j ACCEPT
# Time Exceeded
$IPTABLES -A INPUT -p ICMP --icmp-type 11 -j ACCEPT
#Все отброшенные пакеты логируются
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --loglevel DEBUG --log-prefix "IPT INPUT packet died: "
#Цепочка Forward
#В цепочке FORWARD, предназначенной для транзитных пакетов, пропускаем все
#пакеты из локальной сети в Интернет, а также все пакеты, являющиеся частью
уже #установленного или связанного соединения.
#Все пакеты сначала отправляются в цепочку bad_tcp_packets для проверки на
#корректность.
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#Пропускаем пакеты из ЛС
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
#Пропускаем все пакеты из уже установленного соединения
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#Логируем все отброшенные пакеты
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --loglevel DEBUG --log-prefix "IPT FORWARD packet died: "
#Цепочка Output
#Все пакеты сначала отправляются в цепочку bad_tcp_packets для проверки на
#корректность.
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#Разрешаем весь трафик от шлюза, как в Интернет, так и в локальную сеть.
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
#Логируем все отброшенные пакеты
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --loglevel DEBUG --log-prefix "IPT OUTPUT packet died: "
Сетевой брандмауэр ISA Server
Помимо Iptables, на сегодняшний день широко распространен сетевой брандмауэр от
компании Microsoft
- MS ISA Server (Internet Security and Acceleration),
функционирующий на базе серверных операционных систем семейства MS Windows.
Данный брандмауэр распространяется на коммерческой основе и обладает
полнофункциональным графическим интерфейсом.
Корни ISA Server изначально были в Microsoft Proxy Server 2.0. Далее был выпущен ISA
Server 2000 (декабрь 2000). Основная обновленная версия ISA Server была выпущена в
мае 2004 и была названа ISA Server 2004. ISA Server 2006 был выпущен в августе 2006.
Есть две версии сервера ISA Server 2006. Это:


ISA Server 2006 Standard Edition (стандартная версия)
ISA Server 2006 Enterprise Edition (корпоративная версия)
ISA 2006 Standard Edition (стандартная версия) нацелена на небольшие и средние
компании с количеством пользователей от 75 до 500. Брандмауэр ISA 2006 Enterprise
Edition (корпоративная версия) спроектирован для средних и крупных компаний, в
которых несколько брандмауэров расположено в основном офисе и потенциально
множество брандмауэров ISA расположены в дочерних офисах по всему миру,
обслуживая 500-100,000 пользователей.
ISA Server Enterprise Edition позволяет запускать сервер ISA как в режиме выделенного
(standalone) сервера, так и в режиме логического объединения нескольких серверов ISA в
один массив. Конфигурация в виде массива поддерживает корпоративные
административные политики, т. е. изменения, сделанные на одной из систем массива,
распространяются на все системы массива, так что отпадает необходимость вносить такие
же изменения на каждой системе. Enterprise Edition интегрируется с Active Directory (AD)
и сохраняет конфигурационные данные массива серверов ISA в AD, в отличие от
выделенного сервера ISA, конфигурация которого сохраняется в системном реестре.
Когда Enterprise Edition устанавливается в сети, где отсутствует AD, сервер ISA
становится выделенным сервером. Enterprise Edition масштабируется на любое число
процессоров. ISA Server Standard Edition поддерживает не более четырех процессоров.
Основные возможности ISA Server 2006
1. Обеспечение доступа в Интернет
Посредством NAT-маршрутизации или proxy-сервера.
2. Брандмауэр сетевого уровня (проверка заголовков IP, TCP, UDP, ICMP)
Особенностями ISA Server являются:
- Наличие большого количества встроенных, изначально заданных правил фильтрации,
определяющих политику брандмауэра по умолчанию (для разрешения доступа сервера
ISA к DNS и DHCP серверу, серверу каталогов Active Directory, возможность выполнения
пинга для проверки связи и проч.).
- Использование только одного правила для отслеживания трафика в обоих направлениях
Например, для того, чтобы разрешить доступ клиентов локальной сети к внешнему вебсерверу Интернет, доcтаточно создать только одно правило – обратный трафик,
являющийся ответом на сделанный запрос, будет пропускаться автоматически. В случае
применения, например, Iptables необходимо создать два правила, одно из которых будет
пропускать трафик из локальной сети в интернет, в второе – пропускать ответы веб-
сервера в локальную сеть (причем ответы веб-сервера должны проверяться на отсутствие
в них признака установки соединения – флага SYN).
- Большой список прикладных протоколов и служб
При построении правил можно выбирать прикладной протокол из обширного списка,
содержащего более 100 наименований. Если требуемого протокола нет в списке, то его
можно добавить вручную, указав транспорт (TCP/UDP/ICMP) и номера используемых им
портов.
3. Фильтрация на прикладном уровне (проверка заголовков прикладных
протоколов, а также самих данных)
Существенным достоинством ISA Server является его способность анализировать данные и
заголовки протоколов прикладного уровня. Эта способность является очень полезной в том
случае, когда нужно ограничивать доступ пользователей локальной сети к нежелательным
ресурсам Интернет. Фильтрация трафика может проводиться по доменным именам либо
URL-адресам ресурсов Интернет и по типам содержимого (можно ограничивать закачку
файлов определенных типов, к примеру, видео, музыки или исполняемых файлов).
Также ISA Server может проводить дополнительную фильтрацию HTTP трафика (по
методам протокола HTTP, по длине запроса, по наличию заранее определенных сигнатур
в запросе). Это помогает защитить внутренний веб-сервер компании от возможных атак
на него.
Еще одна важная возможность, поддерживаемая ISA Server - применение политик
доступа, базирующихся на именах и группах пользователей. Учетные записи
пользователей могут храниться как в Active Directory, так и в локальной базе данных
учетных записей на сервере ISA. Для разграничения доступа по именам необходимо,
чтобы на каждом компьютере-клиенте было установлено специальное программное
обеспечение ISA Server Firewall Client (поставляется вместе с ISA Server), либо настроен
так называемый клиент Web Proxy (для этого в настройках Web-браузера пользователя в
качестве proxy-сервера указывается адрес или имя сервера ISA).
Также можно организовать доступ пользователей в сеть по определенному расписанию
(указать дни и часы).
4. Встроенная система обнаружения вторжений (IDS)
5. Публикация серверов (port mapping)
6. Кэширование информации
Когда пользователь из корпоративной сети запрашивает Web-страницу, ISA Server 2006
помещает эту Web-страницу в Web-кэш. ISA Server хранит эту информацию, и когда
другой пользователь совершает запрос к той же самой странице, эта Web-страница
достается из Web-кэша и передается пользователю. В результате мы экономим время и
трафик, а у пользователя появляется возможность более быстрого доступа к информации.
7. VPN сервер
Сервер VPN позволяет внешним пользователям подключаться к корпоративной сети с
ноутбука или рабочей станции из любого места в мире. После того, как пользователь
создает безопасное VPN соединение, компьютер этого пользователя может иметь доступ к
информации, хранящейся на любом сервере внутри корпоративной сети. Поддерживается
Remote Access VPN и site-to-site VPN.
Интерфейс брандмауэра ISA Server 2006 (вкладка «Политики межсетевого экрана»)
Интерфейс брандмауэра ISA Server 2006 (вкладка «Наблюдение», «Ведение журнала»)
Типы клиентов ISA Server 2006
Сервер ISA поддерживает три типа клиентов: Secure Network Address Translation
(SecureNAT), клиент брандмауэра и клиент Web Proxy.
Клиент SecureNAT
Для клиентов SecureNAT сервер ISA играет роль устройства NAT, т. е. устройства,
принимающего пакеты из внутренней сети и выполняющего трансляцию сетевых адресов
при их передаче вовне. В пакетах, предназначенных для передачи за пределы внутренней
сети, сервер ISA изменяет IP-адрес системы-отправителя на внешний IP-адрес сервера
ISA. Весь процесс незаметен для клиента и не требует какого-либо дополнительного
программного обеспечения на клиентской системе. По этой причине такой клиент
работает на системах с любыми типами сетевых операционных систем. Единственное
требование — необходимо настроить на клиентской системе адрес шлюза по умолчанию
так, чтобы это был адрес внутреннего сетевого интерфейса сервера ISA. Если клиенты
настроены на получение IP-адреса через DHCP, то можно настроить DHCP-сервер на
выдачу клиентам корректного адреса шлюза по умолчанию.
Клиент SecureNAT не запускает какого-либо специального программного обеспечения, и
поэтому сервер ISA не может определить, какие пользователи запрашивают внешние
соединения, так что в этом случае нельзя применять на сервере ISA политики
безопасности, основанные на именах пользователей. Если настроить сервер ISA так,
чтобы он требовал авторизации, все запросы клиентов SecureNAT будут запрещены.
Клиент брандмауэра
Клиент брандмауэра должен запускать специальное программное обеспечение, ISA Server
Firewall
Client.
Во
время
установки
сервера
ISA
создается
каталог
\%programfiles%\microsoft isa server\clients, содержащий все программные и
конфигурационные файлы, необходимые для установки клиента. Клиент принимает все
запросы от приложений, использующих сокеты, и передает их на систему с запущенным
на ней сервером ISA. В результате все приложения во внутренней сети, использующие
сокеты, работают так, как будто они непосредственно подключены к Internet.
Запрос клиента брандмауэра содержит имена пользователей, поэтому можно применять
политики доступа, базирующиеся на именах пользователей. Однако запросы выполняются
в контексте текущего пользователя, и клиентское программное обеспечение не имеет
механизма для запроса у пользователей другого имени и пароля, если имя и пароль
зарегистрированного пользователя неправильны. Поэтому, если запретить пользователю
выход за пределы сетевого экрана, попытка выйти в Internet приведет к ошибке без
предложения ввести другое имя и пароль.
Поддерживается только на платформе Windows.
Клиент Web Proxy
Чтобы его настроить, необходимо в настройках Web-браузера пользователя в качестве
proxy-сервера указать адрес или имя сервера ISA. При этом можно использовать разные
типы аутентификации, например Basic, при которой клиенту выдается форма на ввод
имени пользователя и пароля, Digest, или Integrated.
Однако приложения, в настройках которых нельзя прописать адрес и порт proxy-сервера, с
этим типом клиента работать не будут.
Web-proxy и FWC можно применять совместно.
Таким образом, достоинствами брандмауэра ISA Server является его расширенная
функциональность (включающая VPN сервер, встроенную систему IDS, возможность
проводить фильтрацию на прикладном уровне и аутентификацию пользователей по
именам), и удобный полнофункциональный графический интерфейс. Iptables этих
возможностей не предоставляет, поскольку является исключительно пакетным фильтром.
Основное преимущество Iptables - это отсутствие затрат на его приобретение и
обновление. В том случае, когда дополнительные функции все же необходимы, можно
воспользоваться открытым ПО, свободно загружаемым из Интернета (прокси-сервер
Squid, VPN сервер OpenVPN) и применять их совместно с Iptables.
Технология VPN
VPN (Virtual Private Network) - это объединение локальных сетей и отдельных
компьютеров в единую защищенную сеть через открытую внешнюю среду передачи.
VPN позволяет обеспечить:
1)
2)
3)
4)
Секретность (конфиденциальность) передаваемых данных
Аутентификацию (установление подлинности) взаимодействующих сторон
Неизменность (целостность) передаваемых данных
Защиту от повтора сообщения
Существуют следующие типы VPN:
Remote Access VPN позволяет удаленному пользователю обращаться к ресурсам сети
через Интернет, чтобы пользователь мог работать так, как будто он находится в офисе.
Это бывает полезно для надомных работников, администраторов, сотрудников,
находящихся в командировке; для партнеров и клиентов, которым нужен доступ к какимлибо ресурсам корпоративной сети.
Site-To-Site VPN: позволяет объединить несколько территориально удаленных друг от
друга сетей (чтобы пользователи одной сети могли обращаться и пользоваться ресурсами
другой сети, и наоборот). Часто устанавливается между сетями филиала и центрального
офиса. При этом компании избегают расходов на организацию или аренду прямых
соединений: например, каналов E1, ISDN, frame relay. Взамен всего этого можно
использовать имеющийся у компании канал в Internet. Лишь небольшие
административные затраты требуются для соединения расположенных в любых точках
планеты офисов компании при помощи защищенного канала.
Intranet VPN: позволяет установить защищенное соединение между компьютерами,
расположенными в одной ЛС. Пример – обеспечение безопасного выхода в Internet через
VPN.
Типы протоколов


РРТР (Point-to-Point Tunneling Protocol, сквозной туннельный протокол)
L2TP/IPSec (Layer Two Tunneling Protocol/Internet Protocol Security, протокол
туннелирования второго уровня модели OSI/протокол безопасности IP)
Для соединения с VPN-сервером можно использовать любое клиентское программное
обеспечение, поддерживающее протоколы РРТР или L2TP/IPSec. Хорошим выбором
может служить VPN-клиент Microsoft, входящий в состав всех версий ОС Windows.
Протокол РРТР
PPTP — это протокол, поддержка которого впервые была реализована в операционных
системах Windows NT 4.0 и Windows 98. Протокол PPTP является расширением протокола
PPP (Point-to-Point Protocol — протокол «точка-точка»). PPP обладает несколькими
преимуществами по сравнению со своим старшим собратом Serial Line Internet Protocol
(SLIP). В качестве примера можно привести аутентификацию с использованием CHAP и
сжатие данных. В набор PPP входят протокол Link Control Protocol (LCP), ответственный
за конфигурацию, установку, работу и завершение соединения точка-точка.
1 этап - аутентификация пользователя.
Для аутентификации пользователей PPTP может задействовать любой из протоколов,
применяемых для PPP, которые перечислены ниже.






CHAP
Microsoft CHAP
Microsoft CHAP Version2
SPAP (Shiva Password Authentication Protocol)
Unencrypted password (PAP)
EAP (Extensible Authentication Protocol), вариант MD5-Challenge или Smart Card or
Other Certificate
Лучшими считаются протоколы MSCHAP версии 2 и Transport Layer Security (EAP-TLS),
поскольку они обеспечивают взаимную аутентификацию, т. е. VPN-сервер и клиент
идентифицируют друг друга. Во всех остальных протоколах только сервер проводит
аутентификацию клиентов.
CHAP (Challenge Handshake Authentication Protocol) — широко распространённый
алгоритм проверки подлинности, предусматривающий передачу не самого пароля
пользователя, а косвенных сведений о нём. При использовании CHAP сервер удаленного
доступа отправляет клиенту строку запроса. На основе этой строки и пароля пользователя
клиент вычисляет хеш-код MD5 (Message Digest-5) и передает его серверу. Хеш-функция
является алгоритмом одностороннего (необратимого) шифрования, поскольку значение
хеш-функции для блока данных вычислить легко, а определить исходный блок по хешкоду с математической точки зрения невозможно за приемлемое время. Сервер, которому
доступен пароль пользователя (и который помнит отправленную им строку запроса!),
выполняет те же самые вычисления и сравнивает результат с хеш-кодом, полученным от
клиента. В случае совпадения учётные данные клиента удалённого доступа считаются
подлинными.
MS-CHAP (протокол, разработанный корпорацией Microsoft) генерирует запрос и ответ с
помощью алгоритма хеширования MD4 (Message Digest 4) и алгоритма шифрования DES
(Data Encryption Standard); предусмотрены также механизмы возврата сообщений об
ошибках подключения и возможности изменения пароля пользователя.
MS-CHAP v2 обеспечивает двустороннюю проверку подлинности, называемую также
взаимной проверкой подлинности; также он является более безопасным.
PAP (Password Authentication Protocol) — протокол простой проверки подлинности,
предусматривающий отправку имени пользователя и пароля на сервер удаленного доступа
открытым текстом (без шифрования). Протокол PAP крайне ненадежен, поскольку
пересылаемые пароли можно легко читать в пакетах PPP, которыми обмениваются
стороны в ходе проверки подлинности. Обычно PAP используется только при
подключении к старым серверам удаленного доступа на базе UNIX, которые не
поддерживают никакие другие протоколы проверки подлинности.
EAP
Операционные системы семейства Windows Server 2003 поддерживают два типа EAP:


EAP-MD5 CHAP (аналог протокола проверки подлинности CHAP);
EAP-TLS (применяется для проверки подлинности на основе сертификатов
пользователей). В ходе процесса проверки подлинности клиент удаленного доступа
отправляет сертификат пользователя, а сервер удаленного доступа отправляет свой
сертификат компьютера. Если хотя бы один из этих сертификатов не будет передан
или окажется недействительным, подключение разрывается.
Структура заголовка PPTP
Если рассмотреть структуру пакетов, станет очевидно, что PPTP (как и L2TP)
основываются на протоколе Point-to-Point Protocol (PPP). Данные верхних уровней модели
OSI сначала инкапсулируются в PPP, а затем протоколы PPTP и L2TP выполняют
шифрование данных и собственную инкапсуляцию.
Кадр PPP (IP-, IPX- или Appletalk-датаграмма) заключается в оболочку с заголовком GRE
(Generic Routing Encapsulation) и заголовком IP. В заголовке IP-адреса источника и
приемника соответствуют VPN-клиенту и VPN-серверу.
Клиенты PPTP используют порт назначения 1723 для создания управляющего туннелем
соединения. В дополнение к управляющему соединению PPTP, обеспечивающему
работоспособность канала, создается соединение для пересылки по туннелю данных.
В заключение PPTP добавляет заголовок канального уровня и окончание.
Этап 2 – шифрование данных
Кадр PPP зашифровывается по протоколу MPPE (Microsoft Point-to-Point Encryption) с
использованием ключей шифрования, созданных в процессе проверки подлинности по
протоколу MS-CHAP, MS-CHAP v2 или EAP-TLS. Это единственные протоколы проверки
подлинности, генерирующие собственные начальные ключи шифрования. MPPE требует
использования общих ключей клиента и сервера, создаваемых указанными алгоритмами
проверки подлинности.
Для собственно шифрования используется поточный шифр RC4 c 40- или 128-битным
симметричным ключом.
Протокол L2TP
L2TP появился в результате объединения протоколов PPTP и Layer 2 Forwarding (L2F) от
фирмы Cisco.
Как правило, в сетях VPN используют комбинацию L2TP и IPSec, она называется
L2TP/IPSec.
Протокол L2TP и метод IPSec должны поддерживаться как на VPN-клиенте, так и на VPNсервере. Клиентская поддержка L2TP встроена в клиент удаленного доступа Windows XP,
а поддержка L2TP VPN-серверами — в операционные системы семейства Windows
Server 2003 (появилась в Windows 2000).
Применение IPSec гарантирует:



целостность, т. е. что данные при передаче не были искажены, потеряны или
продублированы;
аутентичность, т. е. что данные были переданы тем отправителем, который
доказал, что он тот, за кого себя выдает;
конфиденциальность, т. е. что данные передаются в форме, предотвращающей их
несанкционированный просмотр.
L2TP поверх IPSec обеспечивает аутентификацию на уровнях «пользователь» и
«компьютер», а также выполняет аутентификацию и шифрование данных.
1) На первом этапе аутентификации клиентов и серверов VPN, L2TP поверх IPSec
использует локальные сертификаты, полученные от службы сертификации. Клиент и
сервер обмениваются сертификатами и создают защищенное соединение ESP SA (security
association). В процессе проверки подлинности по протоколу IPSec генерируются
симметричные ключи шифрования, которые будут применяться в дальнейшем для
шифрования данных.
Также можно проводить проверку подлинности с помощью предварительных ключей, что
не рекомендуется.
2) После того как L2TP (поверх IPSec) завершает процесс аутентификации компьютера,
выполняется аутентификация на уровне пользователя. Протокол L2TP использует
стандартные методы проверки подлинности на базе PPP, такие как EAP, MS-CHAP, MSCHAP v2, CHAP, SPAP и PAP.
Для аутентификации можно задействовать любой протокол, даже PAP, передающий имя
пользователя и пароль в открытом виде. Это вполне безопасно, так как L2TP поверх IPSec
шифрует всю сессию. Однако проведение аутентификации пользователя при помощи
MSCHAP, применяющего различные ключи шифрования для аутентификации
компьютера и пользователя, может усилить защиту.
3) В отличие от PPTP, L2TP на серверах под управлением Windows Server 2003 не
использует метода MPPE (Microsoft Point-to-Point Encryption) для шифрования датаграмм
PPP. L2TP использует средства шифрования, предоставляемые методом IPSec.
L2TP поверх IPSec обеспечивает более высокую степень защиты данных, чем PPTP, так
как использует алгоритм шифрования Triple Data Encryption Standard (3DES). 3DES был
разработан для защиты особо секретных данных, и его применение разрешено только в
Северной Америке. Если столь высокий уровень защиты не нужен, можно использовать
алгоритм DES с одним 56-разрядным ключом, что позволяет снизить расходы на
шифрование (3DES использует три 56-разрядных ключа).
В основе обеспечения целостности и аутентификации данных также лежит один из
приемов шифрования — шифрование с помощью односторонней функции, называемой
также хэш-функцией или дайджест-функцией.
Эта функция, примененная к шифруемым данным, дает в результате значение-дайджест,
состоящее из фиксированного небольшого числа байт. Дайджест передается в IP-пакете
вместе с исходным сообщением. Получатель, зная, какая односторонняя функция
шифрования была применена для составления дайджеста, заново вычисляет его,
используя исходное сообщение. Если значения полученного и вычисленного дайджестов
совпадают, это значит, что содержимое пакета во время передачи не было подвергнуто
никаким изменениям.
L2TP обеспечивает аутентификацию данных при помощи алгоритма Hash Message
Authentication Code (HMAC) Message Digest 5 (MD5). Для аутентификации данных этот
алгоритм создает хеш длиной 128 разрядов.
Структура заголовка L2TP
Инкапсуляция пакетов L2TP/IPSec выполняется в два этапа.
1) Инкапсуляция L2TP
Кадр PPP (IP-пакет или IPX-пакет) заключается в оболочку с заголовком L2TP и
заголовком UDP.
2) Инкапсуляция IPSec
Затем полученное L2TP-сообщение заключается в еще одну оболочку с заголовком и
трейлером (окончанием): заголовком IPSec ESP (Encapsulating Security Payload), который
помогает расшифровать сообщение на приемной стороне, и трейлером проверки
подлинности IPSec, обеспечивающим целостность сообщения и проверку подлинности
(электронно-цифровая подпись). Далее к пакету добавляется внешний IP-заголовок,
содержащий внешний адрес VPN-сервера.
Компьютер-получатель принимает данные и убирает внешний заголовок IP. При помощи
трейлера проводится проверка подлинности и целостности IP пакета, а ESP-заголовок
IPSec помогает расшифровать пакет. Далее все дополнительные заголовки удаляются, и на
компьютер-получатель поступает исходный IP-пакет.
ESP-заголовок IPSec содержит следующие параметры:
- SPI (индекс параметра безопасности) указывает на контекст безопасности.
Контекст безопасности (SA, Security Association) – это набор параметров IPsec соединения
(используемый режим, протокол, алгоритмы шифрования, ключи). Для каждого
соединения создается свой контекст безопасности, идентифицируемый уникальным
номером – SPI. Контексты безопасности хранятся в специальной базе данных SAD
(Security Association Database, БД ассоциаций безопасности).
- Последовательный номер пакета позволяет защититься от повторов сообщения
Заключение
Хотя PPTP обеспечивает достаточную степень безопасности, но все же L2TP поверх IPSec
надежнее. С помощью шифрования виртуальные частные подключения на основе PPTP
обеспечивают конфиденциальность данных — перехваченные пакеты невозможно
интерпретировать, не имея ключа шифрования. Однако виртуальные частные
подключения на основе PPTP не обеспечивают ни целостность данных (доказательство
того, что данные не были изменены при передаче), ни проверку подлинности источника
данных (доказательство того, что данные были отправлены авторизованным
пользователем). С помощью IPSec VPN-подключения L2TP/IPSec обеспечивают
конфиденциальность и целостность данных, а также проверку подлинности их источника.
Политика брандмауэра, применяемая к соединениям VPN-клиентов
Как правило, не следует предоставлять неограниченный доступ к корпоративным
ресурсам пользователям, если они соединяются с помощью VPN-соединения удаленного
доступа. Такой подход объясняется тем, что эти пользователи могут подключаться с
компьютеров, находящихся вне сферы вашего контроля и не удовлетворяющих
требованиям корпоративной политики безопасности, либо они устанавливают соединения
с компьютеров, находящихся в ненадежных сетях, таких, как сети отелей, и нет способа
проверить, не представляют ли они угрозу для вашей сети.
В VPN-политике следует особо оговорить, что только пользователям с широкими
полномочиями (highly-trusted), подключающимся с известных высоконадежных машин,
размещенных в известных заслуживающих доверия сетях, разрешен свободный доступ к
корпоративной сети по VPN-каналу удаленного доступа. К числу таких пользователей с
гарантированным полным доступом относятся администраторы сети и брандмауэра и,
возможно, некоторые руководители высокого ранга. Всех остальных пользователей,
подключающихся по VPN-каналу, следует ограничить, предоставив им доступ только к
подмножеству сетевых ресурсов, необходимых для выполнения их работы.
Download