Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Глава 17. Применение брандмауэров proxy с использованием Squid
Глава 21. Использование оболочки Secure Shell и сетей VPN
Введение в технологию брандмауэров
Пакетные фильтры
Какой тип использовать?
Подобный материал:
1   ...   55   56   57   58   59   60   61   62   ...   101

Заключение


В данной главе я рассказал вам о том, что такое TCP Wrappers и как эта программа используется на практике. Вы узнали о гибкости ее конфигурации, а также о том, что частично эта гибкость достигается за счет использования параметров времени компиляции. Вы также узнали о том, какие из параметров были использованы при компиляции версии tcpd, которая вошла в состав OpenLinux. Вы узнали о том, как можно поставить ловушку и как можно отправить сообщение обратно клиенту.

Я также рассказал вам о том, как выполняется тестирование набора правил с использованием утилит tcpdchk и tcpdmatch, которые прилагаются к программе tcpd.


Часть III
Брандмауэры и специальное программное обеспечение



Глава 16. Применение брандмауэров, фильтрующих пакеты

Глава 17. Применение брандмауэров proxy с использованием Squid

Глава 18. Маскировка IP и перенаправление портов

Глава 19. Безопасность Samba

Глава 20. Установка и запуск web-сервера Apache

Глава 21. Использование оболочки Secure Shell и сетей VPN


16Применение брандмауэров, фильтрующих пакеты

В данной главе рассматриваются следующие вопросы:

- построение брандмауэров, фильтрующих пакеты, в рабочей среде Linux;

- настройка ядра для брандмауэра;

- построение простого брандмауэра с использованием ipchains;

- что будет внутри ядер 2.4.x;

а введение в iptables.

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

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

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

Введение в технологию брандмауэров


В среде Linux можно использовать две базовых разновидности брандмауэров. Брандмауэры в среде Linux делятся на пакетные фильтры (packet filters) и брандмауэры рroху. Каждая из этих двух базовых разновидностей обладает двумя под-разновидностями. Пакетные фильтры могут быть пересылающими (forwarding), то есть принимающими решение о том, передавать ли пакет из сети в сеть или нет, и маскирующими (masquerading), то есть модифицирующими адрес-источник и адрес-приемник. Брандмауэры proxy могут быть стандартными (standard), которые иногда называют непроницаемыми (opaque), в которых клиент подключается через специальный порт, а передаваемые данные перенаправляются в другой порт, или прозрачными (transparent), в которых клиент не использует специальный порт, а программное обеспечение брандмауэра перенаправляет пакеты из сети в сеть прозрачно для пользователей.

В данной главе в основном речь пойдет о пакетных фильтрах. В следующей главе рассказывается о брандмауэрах proxy, в особенности тех, которые основаны на использовании Squid. Далее я познакомлю вас с технологией маскировки IP (IP Masquerading), которую часто называют трансляцией сетевых адресов (Network Address Translation, NAT).

Пакетные фильтры

Функционирование брандмауэров фильтрации пакетов основано на принципе, что вся информация, которая необходима для принятия решения о том, что делать с пакетом, содержится в заголовке этого пакета. В заголовке пакета содержатся сведения об адресе-источнике, адресе-приемнике, TTL (time to live — время жизни пакета) и многие другие. Здесь же содержится контрольная сумма заголовка, благодаря которой можно определить, был ли заголовок поврежден или нет, а также размер полезной нагрузки. Всего в заголовке IP-пакета содержатся 13 отдельных полей информации, некоторые из этих полей содержат несколько разных кусков информации.


ПРИМЕЧАНИЕ

Подробная информация о заголовке IP-пакета содержится в документе RFC 791.


ПРИМЕЧАНИЕ

Протокол IP не выполняет каких-либо проверок полезной нагрузки, за исключением проверки корректности размера полезной нагрузки. За целостность полезной нагрузки пакета несет ответственность протокол TCP (Transport Control Protocol).


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

Программа ipchains позволяет применять в отношении пакетов набор различных критериев. Эта программа может осуществлять анализ входящих пакетов, исходящих пакетов, а также пакетов, передаваемых через брандмауэр (forwarded packets). Решения могут приниматься на основании адреса, откуда исходят пакеты, адреса, куда они направляются, а также на основании номера порта, для которого они предназначены. Различные правила могут применяться в зависимости от того, является ли пакет пакетом TCP, UDP или ICMP. Наконец, если некоторый тип пакетов не определен явно в рамках набора правил брандмауэра, в его отношении будет применяться определяемая вами политика по умолчанию.

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

Модель OSI (Open Source Interconnect) является популярной (хотя и не совсем точной, однако вполне удобной теоретической парадигмой) моделью, используемой для описания, каким образом пакеты перемещаются с прикладного уровня (Application layer) на физический уровень (Physical layer). В рамках OSI для объяснения, каким образом работает сетевое программное обеспечение, используется семь уровней. Для целей данной книги важно лишь отметить, что разные программы работают на разных уровнях модели OSI и что это одна из отличительных характеристик между брандмауэрами proxy и пакетными фильтрами. Однако эта разница чрезвычайно важна. Брандмауэры proxy создают большую нагрузку на систему, так как тщательно анализируют полное содержимое пакетов (иначе говоря, они выполняют инспекцию в зависимости от состояния — stateful inspection). Кроме того, брандмауэры proxy сложнее настроить.


ПРИМЕЧАНИЕ

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

Какой тип использовать?

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

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

Как правило, решение о том, какую разновидность брандмауэров использовать, формируется на основании индивидуального выбора и опыта, которым вы обладаете. Если ранее вы уже работали с proxy и обладаете необходимым опытом, для вас наверняка будет привычнее использовать брандмауэр на основе proxy. Если вы используете брандмауэр одной разновидности, это не запрещает вам использовать брандмауэр другой разновидности. Некоторые proxy, предназначенные для работы с web-трафиком (http), могут успешно дополнять собой механизм фильтрации пакетов. В частности, Squid очень удобно использовать для блокирования конкретных web-узлов и рекламных баннеров, это намного проще, чем заниматься формированием наборов правил для фильтрации пакетов, исходящих из бан-нерных web-узлов. Напротив, правила ipchains могут быть созданы в основном для документирования сведений о трафике. Наборы правил ipchains могут использоваться совместно с proxy для того, чтобы следить за специальными разновидностями трафика. Таким образом, для вас лучшим вариантов может быть использование комбинации различных брандмауэров — все зависит от целей, которые вы ставите перед собой.

С точки зрения безопасности ни один из типов брандмауэров нельзя назвать лучшим. Однако существует ситуация, в которой, возможно, удобнее использовать ipchains. Эта ситуация, в которой вы хотите модифицировать поле Type of Service (TOS) для того, чтобы оптимизировать передачу трафика. Например, если у вас есть несколько систем, использующих брандмауэр, а также несколько пользователей, обращающихся к нему в одно и то же время, вы можете использовать поле TOS в качестве флага очередности, чтобы назначить пакетам HTTP более высокий приоритет по сравнению с пакетами FTP. Дело в том, что при просмотре Web пользователям, как правило, удобнее, если страницы загружаются через сеть как можно быстрее, в то же время при загрузке FTP-файлов время реакции сети менее важно.


СОВЕТ

При помощи ipchains вы можете модифицировать TOS таким образом, чтобы указать один из следующих параметров: минимальная задержка (minimum delay), максимальная устойчивость (maximum reliability), максимальный объем данных, переданный через канал (maximum throughput), или минимальные затраты (minimum cost).