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

Вид материалаРеферат
Подобный материал:
1   ...   61   62   63   64   65   66   67   68   ...   101

Заключение


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

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


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

что такое серверы proxy;

- конфигурирование Squid;

- конфигурирование клиентов.

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

На текущий момент наиболее популярной системой proxy для Linux является программное средство Squid. Эта система является как достаточно мощной, так и в достаточной степени гибкой. Однако, как вы уже, должно быть, знаете, за мощь и гибкость, как правило, приходится платить более высоким риском. К счастью, если только squid не связывает порт с номером меньшим 1024, нет необходимости запускать эту программу от имени root. По умолчанию Squid связывает порт 3128 и работает от лица пользователя nobody. Таким образом, в подобной конфигурации вы можете не беспокоиться за безопасность данного демона.

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

Вы уже знаете, что порты с номером, меньшим 1024, должны быть связаны от имени пользователя root и что уязвимые места программ, работающих от имени root, могут стать причиной несанкционированного доступа к системе на уровне привилегий root. Чтобы предотвратить это, большинство брандмауэров не связывают какие-либо порты ниже 1024, а делают это только в отношении портов с более высокими номерами. В результате программа может работать от лица непривилегированного пользователя, благодаря чему уровень риска снижается. Возникает проблема: каким образом можно передавать соединения через брандмауэр, не выделяя при этом каждому, кто нуждается в доступе к Web, отдельной учетной записи? Сама по себе идея создания на брандмауэре каких-либо дополнительных учетных записей помимо учетной записи администратора является плохой идеей. Вообще же необходимость подключения к брандмауэру каждый раз, когда у вас возникает желание воспользоваться браузером (и проч.), создает массу неудобств. Для решения проблемы используются proxy. Большинство систем proxy работают прозрачно. Это означает, что вы не обязаны сообщать им имя и пароль для того, чтобы воспользоваться их услугами. На самом деле вам вообще не надо ничего делать, за исключением того, что вы должны перенастроить свой браузер для взаимодействия с портом proxy вместо стандартного порта службы.

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

Однако перенаправление портов — это лишь одна из задач, для решения которых можно использовать squid. На самом деле squid обладает столь большим набором функций и наделяет вас столь большим количеством возможностей, что сокращенный список связанных с ним часто задаваемых вопросов (FAQ) по объему превышает 100 печатных страниц.

Одним из преимуществ программного обеспечения proxy по сравнению с пакетными фильтрами является возможность более глубокого анализа передаваемых пакетов. Благодаря proxy вы можете анализировать не только заголовок IP, но и полезную нагрузку, содержащуюся внутри пакета. Иными словами, вы можете анализировать разделы TCP и UDP пакетов, передаваемых через брандмауэр. На основе информации, содержащейся в заголовке пакета (в разделе IP) и в его полезной нагрузке (в разделе TCP), система proxy может определить, куда направляется пакет и какой службе он предназначен. Исходя из этого брандмауэр proxy принимает решение о том, каким образом следует обработать этот пакет. В частности, благодаря такому подходу squid позволяет организовать кэширование web-страниц для того, чтобы ускорить к ним доступ для большого количества пользователей Web (благодаря этому ускоряется доступ к web-документам и экономится пропускная способность канала связи). Таким образом, squid является помимо прочего кэширующим proxy. Эта программа в течение некоторого времени хранит в своем кэше результаты запроса и использует их для обслуживания последующих аналогичных запросов.

Однако за использование кэширующего программного обеспечения приходится платить дополнительными объемами памяти. Если вы хотите использовать squid, вы должны установить на компьютере объем памяти, достаточный для того, чтобы хранить кэш этой программы. Желательно хранить в оперативной памяти как можно большую долю кэша (а лучше всего — весь кэш). Как только для работы squid становится недостаточно памяти, эта программа начинает использовать виртуальную память, то есть жесткий диск. Конечно же, чтение данных из виртуальной памяти происходит быстрее, чем прием данных через относительно медленную линию связи, однако при использовании виртуальной памяти вы ощутите существенное замедление функционирования, а также затяжные множественные обращения к жесткому диску. Старого компьютера с процессором 486 и памятью объемом 16 Мбайт (а возможно, и 32 Мбайт) будет недостаточно. Если в качестве брандмауэра вы можете использовать только подобную систему, значит, фильтрация пакетов (например, с использованием ipchains) — это лучший вариант, которым вы можете воспользоваться.

Еще одна область, в которой вы можете с успехом использовать squid, — это реализация концепции списков управления доступом (Access Control List, ACL) и списков прав на доступ (Access Rights List, ARL). Списки ACL и ARL снижают степень нецелевого использования соединений с Интернетом. Эти списки позволяют полностью запретить некоторые из соединений. Концепцию ACL и ARL можно применять в случае, если вы не хотите, чтобы ваша система использовалась для доступа к некоторым нежелательным web-узлам, например таким, которые содержат материалы, связанные с жестокостью или порнографией. Списки нежелательных web-узлов (в основном порнографических) можно загрузить опять же из Интернета. Один из них расположен, например, по адресу .com (Hong Kong Linux Center), другой можно получить по адресу arnet.com/orso (Pedro Lineu Orso List). Вы можете использовать этот список прямо через Интернет, указав на него в конфигурационном файле Squid (инструкции содержатся на web-узле).

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

Наконец, squid можно запустить от имени пользователя root и связать его со стандартным портом httpd (80) для того, чтобы перенаправлять запросы и ускорить доступ к локальному web-узлу. В данном случае вы можете использовать для обслуживания входящих извне запросов HTTP специально выделенную для этой цели изолированную систему. Эта система будет принимать поступающие запросы HTTP и перенаправлять их таким образом, чтобы возвращать клиентам web-документы, размещенные на разных внутренних узлах. Благодаря этому, во-первых, ускоряется доступ к страницам (за счет механизма кэширования squid) а во-вторых, осуществляется распределение нагрузки между несколькими системами — ни одна из них не оказывается перегруженной благодаря обилию запросов.

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