WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 11 | 12 || 14 |

«А TV AODISON WESLEY СЕТЕВЫЕ СРЕДСТВА РОДЕРИК В. Смит Сетевые средства Linux Advanced Linux Networking W. Smith A TT ADDISON-WESLEY Boston • San Francisco • New York • Toronto • Montreal ...»

-- [ Страница 13 ] --

f /usr/sbin/named => (0x40017000) => (0x40000000) # cp /opt/chroot/lib Глава 23. Создание поддерева chroot На этом этапе можно снова проверить функционирование сервера.

# chroot /opt/chroot # host awl.com localhost awl.com A Если сервер не работает, убедитесь в том, что в системе выполняется только один эк земпляр named, и проверьте, все ли файлы вы скопировали в каталог поддерева chroot.

Обеспечив нормальную работу сервера, измените сценарий запуска BIND (в системе Debian это так, чтобы сервер запускался посредством команды chroot. Безусловно, вы можете запретить выполнение сценария SysV и запустить сервер имен другим способом. Многие сценарии SysV используют вспомогательные программы (в Debian это и ndc). Данные программы могут создавать файлы в каталоге поэтому вам надо создать в поддереве chroot нужные каталоги и скопировать файлы программ.

# -p # ср /usr/sbin/ndc # ср /opt/chroot/sbin При редактировании сценария запуска SysV перед каждым вхождением start stop-daemon и ndc надо добавить последовательность символов chroot /opt/ chroot. Однако на этом работа не заканчивается, поскольку start-stop-daemon об ращается к файловой системе которая не доступна из поддерева chroot. Чтобы обеспечить доступ к ней, необходимо внести изменения в файл stab — скопи ровать строку, содержащую и изменить ее на /opt/chroot/proc. Затем вы должны вызвать команду mount -а, чтобы смонтировать в поддереве chroot.

ВНИМАНИЕ Поскольку файловая система предоставляет контроль над компьютером, дублировать ее нежелательно. Лучше отредактировать сценарий запуска SysV так, чтобы он не использовал start-stop-daemon, либо отказаться от сце нария SysV и организовать запуск сервера другим способом.

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

# start # host awl.com localhost awl.com A Если вы хотите удостовериться в том, что сервер выполняется в среде поддерева chroot, вам надо удалить исполняемый файл сервера из каталога и конфи гурационные файлы из каталога /etc/bind, а потом перезапустить сервер. Если сервер работает, то выполняться он может только в рамках поддерева chroot.

Вместо того чтобы запускать сервер BIND посредством утилиты chroot, вы можете использовать опцию -t программы named, которая разрешает вызов функции chroot сервером имен. Соответствующая команда имеет следующий вид:

# /usr/sbin/named -t /opt/chroot Данный подход намного проще описанного выше, так как при этом вам придется ко пировать в каталоги поддерева chroot гораздо меньше файлов, в частности, вы можете оставить программу named и библиотеки в тех каталогах, в которых они были записаны при инсталляции. Скопировать конфигурационные файлы необходимо, поскольку сервер 590 Часть IV. Средства защиты и маршрутизации имен читает их уже после вызова chroot При использовании опции упроща ется подготовка сервера для запуска посредством сценария так как при нет необходимости дублировать файловую систему Детали подготовки сервера к выполнению в рамках поддерева chroot зависят от типа сервера и версии Linux, однако общий ход процедуры остается прежним. Возможно, вам придется немного модифицировать среду поддерева chroot, например, изменить права доступа к каталогам или настроить сервер для запуска от имени пользователя, отличного от root.

Поддержка среды chroot Поддерево chroot представляет собой чрезвычайно полезный инструмент, однако требует выполнения действий по поддержке. Ниже перечислены вопросы, которым администратор должен уделять внимание при поддержке поддерева chroot.

• Ротация. Во всех версиях Linux реализован механизм ротации файлов протоколов.

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

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

• Обеспечение доступа к файлам. Если ваш сервер использует файлы с данными, вы должны разместить их в поддереве chroot. Обычно при копировании таких файлов не возникает проблем. Вам необходимо лишь следить за тем, чтобы права доступа к файлам были установлены в соответствии с используемой вами схемой защиты.

• Использование новых программ поддержки. В некоторых случаях может возник нуть необходимость разместить в каталогах поддерева chroot новые программы поддержки. например, если Web-сервер обеспечивает работу сценариев CGI, ему может потребоваться интерпретатор нового языка. Наряду с размещением но вых программ поддержки в поддереве chroot необходимо удалять файлы, не ис пользуемые сервером. Этим вы устраните неоправданный риск при работе сервера.

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

Глава 23. Создание поддерева chroot Резюме Ограничение сферы действия сервера поддеревом chroot позволяет уменьшить риск, связанный с работой этого сервера. Такой подход приемлем в основном для серверов, об ращающихся в процессе выполнения к ограниченному набору файлов. Для того чтобы обеспечить функционирование сервера в рамках поддерева, надо продублировать в под дереве chroot некоторые каталоги и файлы системы Linux. В ряде случаев приходится копировать в каталог поддерева и исполняемый файл сервера. Некоторые серверы само стоятельно вызывают функцию chroot а для запуска других приходится применять программу chroot. Независимо от способа запуска, сервер не может обращаться за пре делы поддерева. Корневой каталог поддерева chroot он воспринимает как корневой ка талог всей файловой системы. При подготовке сервера к выполнению в рамках поддерева chroot следует выяснить, какие файлы нужны для его выполнения и с какими вспо могательными программами он должен взаимодействовать в работе. Соответствующие файлы надо скопировать в каталоги поддерева chroot. Чтобы сервер мог выполняться в поддереве chroot, необходимо также модифицировать стандартную процедуру его за пуска. Среда chroot требует поддержки, но для выполнения соответствующих действий администратору приходится затрачивать не слишком много времени.

Глава Расширенные средства маршрутизации Несмотря на то что Linux считается операционной системой общего назначения, коли чество специальных применений Linux постоянно увеличивается. Известны даже случаи использования данной системы в устройствах PDA и видеомагнитофонах. Одним из спе циальных (хотя и не столь экзотических) применений Linux является маршрутизация.

Маршрутизаторы не относятся к числу общеизвестных устройств, многие пользователи даже не знают об их существовании, однако они жизненно необходимы для нормальной работы Internet. К маршрутизаторам относятся как простые и недорогие устройства, пред назначенные для подключения небольшой сети к Internet, так и высокопроизводительные средства, обеспечивающие передачу пакетов, поступающих по высокоскоростным маги стралям. Linux можно без труда настроить для работы в качестве низкоуровневого марш рутизатора. Если же в сети насчитывается несколько десятков компьютеров, необходимо применять расширенные средства маршрутизации. Эти средства позволяют использовать при доставке пакетов систему приоритетов и взаимодействовать с другими компьютерами.

Если вы собираетесь создавать на базе Linux, вам следует ознакомиться с материалом, изложенным в следующей главе.

, Базовая конфигурация маршрутизатора на базе Linux устанавливается достаточно про сто, но при использовании расширенных средств маршрутизации могут возникнуть про блемы. В данной главе приведены лишь общие сведения о способах маршрутизации и об инструментальных средствах, используемых для этого. Дополнительную информацию вы найдете в документации на конкретные инструменты. Кроме того, вопросы, рассматрива емые в данной главе, подробно изложены в книге Лебланка и др. Linux Routing (New Riders, 2002).

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

# echo "1" > /proc/sys/net/ipv4/ip_forward При наличии нескольких сетей для организации доставки пакетов достаточно простой таблицы маршрутизации.

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

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

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

594 Часть IV. Средства защиты и маршрутизации Расширенные опции ядра В ядре 2.4.x предусмотрены расширенные опции маршрутизации. Они располагаются в меню Networking Options. Многие из них являются опции IP: Advanced Router;

чтобы активизировать подопции, надо активизировать саму опцию IP: Advanced Router. Расширенные опции маршрутизации позволяют задавать особенности маршру тизации пакетов: способы назначения приоритетов, обработку приоритетов, указанных в принятых пакетах, поддержку типов пакетов и т. д. Чтобы активизировать опцию, надо установить переключатель в положение Y (или М, если вы хотите, чтобы средства под держки этой опции были реализованы в виде модуля). Многие опции требуют настройки посредством специальных утилит. Некоторые из них достаточно сложны, поэтому в дан ном разделе приведены лишь общие сведения о соответствующих инструментах.

В различных версиях ядра наборы опций могут различаться: некоторые из них разделяются на отдельные опции, другие объединяются в одну. В данном разделе описаны опции ядра 2.4.17. В других версиях ядра опции могут отличаться от описанных здесь.

Политика маршрутизации Одна из опций, определяющих использование расширенных средств маршрутизации Linux, называется IP: Policy Routing. Она поддерживает следующие способы маршрути зации.

• Фильтрация на основе маркеров. Пакеты, передаваемые по сети, могут содержать специальные данные — маркеры. В случае необходимости можно организовать пе редачу пакетов, помеченных такими маркерами, по специальным маршрутам. Филь трацией на базе маркеров управляет опция IP: Use Netfilter MARK Value as Routing Key. Если вы собираетесь активизировать эту опцию, надо установить также опцию Packet Filtering, находящуюся в том же меню.

• Быстрое Средства NAT позволяют "спрятать" компьютеры сети так, чтобы они были невидимы для остальных узлов При этом всю сеть представляет один компьютер, а единственный IP-адрес, выделенный для этого компьютера, используется для организации работы всей сети. Если вы хотите, чтобы ваша система функционировала как вы можете установить опцию IP: Fast NAT, однако это не обязательное условие NAT-маршрутизации.

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

Тип сервиса В IP-пакетах предусмотрено специальное поле под названием TOS — тип сервиса). Это поле позволяет компонентам сети определять, какие из пакетов тре буют специальной обработки. В результате подобной обработки для некоторых клиентов и серверов реализуются более быстрые и надежные соединения по сравнению с другими.

Глава 24. Расширенные средства маршрутизации Для того чтобы разрешить обработку этого поля, надо активизировать опцию ядра IP:

Use TOS Value as Routing Key.

Данная опция также используется при работе пакета В поле содер жится числовое значение. Большинство маршрутизаторов игнорирует поле TOS, поэтому чаще всего его содержимое не влияет на качество соединения.

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

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

Если же в таблицу будет включено еще одно правило для сети 10.201.0.0/16, то пакет будет обработан посредством того правила, которое первым встретится маршрутизатору.

При активизации опции ядра IP: Equal Cost система будет вести себя сле дующим образом. Если пакет соответствует нескольким правилам маршрутизации, то правило, применяемое для обработки пакета, будет выбрано случайным образом. Такой алгоритм можно рассматривать как примитивный способ распределения нагрузки меж ду различными соединениями. Более конкретному правилу отдается предпочтение перед более общим.

Протоколирование работы маршрутизатора Опция IP: Verbose Route Monitoring управляет выводом сведений о маршрутизации в файл протокола. В обычных условиях ядро не протоколирует ход маршрутизации паке тов. Если данная опция установлена, регистрируются сведения о пакетах, корректность которых вызывает сомнения.

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

Однако процедура регистрации требует дополнительных ресурсов, и если нагрузка на маршрутизатор велика, то его производительность может уменьшиться. Кроме того, при выполнении протоколирования маршрутизатор становится более уязвимым для атак с це лью вывода серверов из строя. (При организации такой атаки злоумышленник передает в сеть большое количество пакетов, намереваясь создать такую нагрузку на сервер или маршрутизатор, с которой тот не сможет справиться, либо вызвать переполнение диска.) Использование больших таблиц маршрутизации Обычно ядро Linux настраивается для работы с таблицами маршрутизации, содержа щими не больше 64 записей. Если этих записей не хватает для того, чтобы задать требу емую конфигурацию маршрутизатора, вам надо активизировать опцию IP: Large Routing Tables. Эта опция позволяет использовать таблицы маршрутизации большего размера.

596 Часть IV. Средства защиты и маршрутизации Поддержка группового вещания Как правило, в Internet-взаимодействии участвуют два компьютера, например, кли ент обращается к Web-серверу, а Web-сервер возвращает клиенту ответ на его запрос.

При этом пакет, передаваемый по сети, предназначен только получателю. Суще ствует также широковещательная передача данных, когда передаваемый пакет адресован узлам локальной сети. Для широковещательной передачи в пределах локальной сети используется адрес получателя 255.255.255.255, который определяет все компьюте ры, подключенные к этой сети. Если широковещательный пакет направляется в другую сеть, адрес получателя формируется путем замены части адреса, соответствующего уз лу сети, на число, состоящее из единиц. Например, широковещательный адрес для сети 192.168.34.0/24 будет иметь вид 192.168.34.255. Широковещательный адрес используют клиенты DHCP для обращения к серверу DHCP. Кроме того, широковещательная передача применяется при работе некоторых других протоколов.

При групповом вещании пакеты адресуются одновременно нескольким получате лям (но не всем узлам сети). Такой способ передачи информации применяется для трансляции аудио- и видеоданных. Для организации группового вещания предназна чена система Multicast Backbone (MBONE;

Данная система реализует групповое вещание в преде лах Internet. Существуют также средства группового вещания с ограниченными возмож такой тип группового вещания называется локальными связями Эти средства не нашли широкого распространения, но иногда используются при взаимодей ствии маршрутизаторов.

Если вы хотите, чтобы ваш маршрутизатор поддерживал групповое вещание, уста новите опцию IP: Multicast Routing. Кроме того, для управления групповым вещанием также предусмотрены две подопции данной опции: IP: Version 1 Support и IP:

PIM-SM Version 2 Support. Они управляют передачей сообщений группового вещания по сетям с ограниченной пропускной способностью.

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

PIM-SM Version 2 Support, вам понадобится программа pimd Качество сервиса В большинстве случаев средства маршрутизации Linux обрабатывают пакеты по прин ципу "первый обработан" Такая процедура дает хорошие результаты в тех случаях, когда пропускная способность линий достаточна для передачи всех пакетов с минимальной задержкой и когда нет необходимости предостав лять некоторым пакетам более высокий приоритет по сравнению с остальными. Если нагрузка на маршрутизатор велика, приходится использовать другие способы обработки пакетов, которые позволяют уменьшить поток данных на некоторые узлы или гарантиро вать своевременную доставку информации определенным пользователям или приложе Глава 24. Расширенные средства маршрутизации Для установки подобных режимов маршрутизации в системе Linux предусмотрен ряд опций. Они объединены в подменю QoS and/or Fair Queueing, которое вызывается с помощью одноименного пункта меню Networking Options.

Активизация опций меню QoS and/or Fair Queueing сама по себе не приведет к изме нению работы системы. Подобно другим опциям, которые управляют средствами расши ренной маршрутизации, эти опции предполагают использование пакета Если вы не уверены в том, что данные средства понадобятся вам, скомпилируйте компоненты ядра, предназначенные для их поддержки, в виде модулей. В результате соответствующие компоненты не будут занимать ресурсы компьютера, но вы всегда сможете воспользо ваться ими.

ВНИМАНИЕ Перед компиляцией ядра внимательно ознакомьтесь с документацией. В яд ре 2.4.17 опция, реализующая алгоритм CSZ, работает некорректно. Активиза ция этой опции может привести к ненадежной работе маршрутизатора.

Использование iproute Пакет входит в состав многих дистрибутивных пакетов Linux. Часто он поставляется под именем Вы можете скопировать данный пакет с FTP-узла, предназначенного для его поддержки, обратившись по адресу Пакет содержит несколько программ, две из которых (ip и tc) рассматриваются в данной главе.

Использование ip Программа ip предназначена для управления таблицами маршрутизации, в частности, правилами, определенными в них. Выполнение данной программы зависит от значений некоторых подопций опции IP: Advanced Router. Программа ip вызывается следующим образом:

ip команда [list | add I del] селектор действие В утилите ip предусмотрено несколько команд. Наиболее важная из них — команда rule. Она позволяет добавлять (add), удалять (del) правила маршрутизации или отобра жать информацию о существующих правилах (list). Правила определяются с помощью селектора, который имеет структуру [from адрес] [to адрес] [tos [dev [pref Элементы и to определяют IP-адреса, а элемент tos задает тип сервиса (тип сервиса представляет собой число, например 4). Элемент dev определяет имя сетевого устройства (например, ethO), a pref задает номер предпочтения. Набор элементов со общает Linux о том, как идентифицируются пакеты, к которым должно быть применено данное правило. Действие, указываемое в команде, задается в следующем формате:

[table [nat адрес] [prohibit I reject I unreachable] Идентификатор таблицы — это число, которое идентифицирует таблицу маршрути зации, элемент nat позволяет задать для пакета новый адрес источника, a prohibit, 598 Часть IV. Средства защиты и маршрутизации reject и — это коды, определяющие различные варианты отказа от пакета.

Пример реальной команды ip приведен ниже.

ip rule add from dev ethO table Правило, определяемое с помощью данной команды, указывает системе на то, что для обработки трафика с адреса 172.20.24.128 через ethO должна использоваться таблица маршрутизации 2. У вас, вероятно, возникнет вопрос, что значит таблица маршрутиза ции 2? В системе Linux для заполнения таблицы маршрутизации используется команда route. Расширенные средства маршрутизации позволяют работать с несколькими табли цами, создаваемыми посредством команды ip route. При обработке различных типов трафика можно быстро переключаться между разными таблицами. Приведенная выше команда сложнее обычной команды route, но она предоставляет возможности, которые не может обеспечить route. Вы можете использовать ip route так же, как и route, единственное отличие состоит в том, что вам необходимо задать номер таблицы. Напри мер, для добавления маршрута в таблицу 2 можно использовать следующую команду:

ip route add dev table Если не принимать во внимание имя программы ip и элемент table 2, то данная команда эквивалентна команде route. Она сообщает системе о том, что все данные, адресованные в сеть 10.201.0.0/16, должны передаваться через интерфейс ethl.

Использование tc Утилита tc использует средства ядра, которые активизируются посредством опций меню QoS and/or Fair Queueing. Данная программа управляет исходящим трафиком, в частности, не позволяет одному типу трафика монополизировать пропускную способ ность линии связи. В качестве примера рассмотрим следующую ситуацию. Предполо жим, что в организации имеются две подсети;

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

Программа вызывается следующим образом:

[опции] объект команда Ниже описаны элементы, передаваемые программе • опции. При вызове tc могут быть заданы опции -statistics (или -details (или -d) и -raw (или • Данный параметр может принимать значение qdisc, class или Значение qdisc определяет порядок обслуживания, или дисциплину очереди, class задает набор пакетов, принадлежащих той или иной категории либо классу (в данном примере признаком принадлежности к классу является принадлежность к одной из a генерирует правило фильтрации.

• команда. Команда — это набор параметров, которые определяют, какие действия программа tc должна выполнить с объектом. Состав команды зависит от объекта.

Глава 24. Расширенные средства маршрутизации С помощью вы можете сгенерировать набор правил, описывающих сети, подклю ченные к компьютеру, и определяющих принцип выделения пропускной способности линии для каждой из этих сетей. Предположим, что вы хотите распределить пропускную способность линии, равную 100 Мбод, поровну между двумя подсетями, обслуживаю щими офисы. Предположим также, что ваш компьютер подключен к Internet посредством устройства ethO, а данные в обе подсети передаются через устройство одна из подсетей имеет IP-адрес 192.168.1.0/24, а другая — 192.168.2.0/24. Процесс настройки следует начать с определения порядка обслуживания очереди для ethl.

t tc qdisc add dev ethl root handle 10: cbq bandwidth \ Данную команду можно условно разделить на несколько частей.

• add dev ethl. Данный компонент команды сообщает системе о том, что вы до бавляете дисциплину очереди для • root. В некоторых случаях дисциплины могут составлять деревья. Этот параметр указывает на создание корневого узла нового дерева.

• handle Этот компонент команды определяет метку (handle) для дисциплины.

• cbq. Вам необходимо сообщить системе, какой метод организации очереди должен быть использован. Метод CBQ — очередь на базе классов) применяется чаще всего. Данный параметр отражается в имени одной из опций ядра в меню and/or Fair • bandwidth С помощью данного компонента вы сообщаете системе о пропускной способности линии. Если различные интерфейсы маршрутизатора подключены через линии с разной пропускной способностью, задается наименьшее значение.

• avpkt По сети могут передаваться пакеты различного размера, но, для того, чтобы планировать использование линии, система должна иметь хотя бы прибли зительное представление о том, какими могут быть размеры пакетов. Конкретное значение данного параметра может отличаться от указанного здесь.

Теперь надо определить классы для сети и для каждой из подсетей. Для этого исполь зуются команды наподобие следующей:

# tc class add dev ethl parent 10:0 classid cbq \ bandwidth lOOMbit rate lOOMbit allot 1514 weight \ prio 8 20 avpkt Эта команда похожа на предыдущую, но она создает класс, определяющий одну из двух сетей. Обратите внимание на то, что данный класс задается для использования всей доступной пропускной способности. Впоследствии этот ресурс будет разделен между подсетями. В отличие от предыдущей команды, некоторые параметры изменены, кроме того, в состав этой команды входят дополнительные компоненты.

• class. Если в предыдущей команде был задан объект qdisc, то здесь присутствует объект определяющий класс.

600 Часть IV. Средства защиты и маршрутизации • parent Этот компонент команды задает корень дерева. К метке, опреде ленной в предыдущей команде, добавляется значение 0.

• classid Данный компонент задает идентификатор конкретного класса.

• allot 1514. С помощью этого параметра указывается значение MTU для сети (оно на несколько байт превышает реальное значение).

• weight Данный параметр используется для настройки. Возможно, для конкретной сети необходимо специально подобрать значение.

• prio 8. Этот компонент команды задает приоритет правила. Чем больше значение, тем выше приоритет.

Правила для подсетей задаются с помощью команд, подобных рассмотренной выше.

# tc class add dev parent 10:1 classid 10:100 cbq \ bandwidth rate allot 1514 weight \ prio 5 maxburst 20 1000 bounded # tc class add dev ethl parent 10:1 classid 10:200 cbq \ bandwidth lOOMbit rate allot 1514 weight \ prio 5 maxburst 20 avpkt 1000 bounded Эти команды различаются только значением classid. Обе ссылаются на корневой класс, и каждая выделяет соответствующей подсети 50 Мбод пропускной способности линии. (Вы можете задать разные значения для каждой подсети, например 60 Мбод и 40 Мбод.) Параметр bounded указывает на то, что система не должна выделять классу часть пропускной способности линии, превышающую указанное значение. Часто такое ограничение бывает нежелательным, поскольку если из одной сети данные не пе редаются, другая сеть не сможет использовать остальную часть пропускной способности линии. Отказавшись от параметра bounded, вы обеспечите большую гибкость при ра боте через линии связи, в частности, предоставите офисам возможность "занимать" друг у друга пропускную способность линии. Если же обоим офисам потребуется передавать данные, этот ресурс будет распределен поровну.

Теперь необходимо связать дисциплину очереди с каждым из двух классов.

# tc qdisc add dev ethl parent 10:100 sfq quantum 1514b \ perturb # tc qdisc add dev ethl parent sfq quantum 1514b \ perturb Данные команды аналогичны рассмотренной ранее команде, определяющей порядок обслуживания очереди. Они сообщают Linux о том, что для планирования трафика внут ри подсети каждого офиса должна использоваться дисциплина SFQ (Stochastic Fairness — стохастическая организация очереди, обеспечивающая равный доступ). Эта дисциплина популярна, так как для ее реализации не требуется много ресурсов процес сора. Если понадобится, можете задать другую дисциплину.

Команды, которые мы уже рассмотрели, не предоставляли ядру информацию, поз воляющую разделить трафик, соответствующий различным подсетям (192.168.1.0/24 и 192.168.2.0/24). Поэтому необходимо выполнить следующие команды:

Глава 24. Расширенные средства маршрутизации # tc filter add dev ethl parent protocol ip prio 100 \ match ip dst flowid 10: # tc filter add dev ethl parent protocol ip prio 100 \ match ip dst flowid 10: В отличие от предыдущих, в этих командах указан объект Данные команды задают правила, которые связывают трафик подсети с соответствующим классом. Обоим правилам назначены одинаковые приоритеты и задан алгоритм работающий с бло ками IP-адресов.

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

Использование протоколов маршрутизации Главная задача маршрутизатора — определить способ передачи пакетов. Предположим, например, что от маршрутизатора к целевому узлу ведут два маршрута. С помощью спе циальных инструментов, например программы ip, входящей в состав пакета iproute2, вы можете сообщить маршрутизатору, какой из путей следует выбрать. Маршрутизатор, настроенный подобным образом, будет применять для маршрутизации пакетов одни и те же правила до тех пока вы не измените их с помощью ip. Подобное поведение марш рутизатора допустимо лишь в простых статических средах. В реальных условиях сетевое окружение постоянно изменяется: вводятся в строй новые линии связи, а существующие линии внезапно прекращают работу. Подобные изменения могут происходить далеко от вашей сети, и сведения о них не всегда будут поступать к вам. Иногда может возник нуть необходимость сообщить другим маршрутизаторам об изменениях в вашей сети, например, о появлении новой подсети с определенным IP-адресом. Для решения подоб ных задач предназначены протоколы маршрутизации, рассмотрению которых посвящен данный раздел.

Принцип действия протоколов маршрутизации Ранее в этой главе был описан процесс настройки маршрутизатора, реализованного в системе Linux, для обработки пакетов в зависимости от адреса назначения, содержимого и других характеристик пакета. Протоколы маршрутизации предоставляют возможность учитывать состояние сетевой среды. Они позволяют получить информацию о том, дости жима ли требуемая сеть и какова стоимость передачи пакета в эту сеть. Здесь понятие стоимости не связано с деньгами. Под стоимостью обычно понимают число узлов, кото рые должен посетить пакет, прежде чем он попадет на целевой узел. В роли стоимости также могут выступать другие характеристики сети, определяющие ее производитель ность. Стоимость передачи пакета по сети называется метрикой. Если маршрутизатор соединен с другими сетями посредством двух сетевых соединений, стоимость доставки пакета на целевой узел, или метрика пути к целевому узлу, зависит от того, посредством какого соединения будет передан этот пакет. Рассмотрим в качестве примера сетевую среду, условно показанную на рис. На этом рисунке изображено пять сетей, 602 Часть IV. Средства защиты и маршрутизации Сеть Сеть физического факультета факультета 172.22.0.0/ 172.23.0.0/ Рис. 24.1. Протоколы маршрутизации позволяют маршрутизаторам обмениваться информацией и определять наиболее короткий маршрут для передачи пакета лежащих пяти факультетам университета. В каждой сети работает свой маршрутизатор, который соединен с двумя другими маршрутизаторами.

В данном примере описывается несколько сетей, соединенных между собой;

та кая структура называется internet (со строчной буквы). Аналогичные принципы ЗАМЕТКУ используются и при выполнении маршрутизации во Internet (с прописной буквы).

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

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

Глава 24. Расширенные средства маршрутизации route IP routine table Flags Ref 192.168.1.0 0.0.0.0 U О О 127.0.0.0 0.0.0.0 255.0.0.0 U О О 192.168.1.25» 0.0.0.0 1 0 ethO I Рис. 24.2. Значение в поле Metric определяет стоимость передачи пакета по данному маршруту Для решения данной задачи используется понятие метрики. Значение метрики, опре деляющее стоимость передачи пакета по сети, содержится в стандартной таблице марш рутизации Linux, заполняется с помощью команды route. На рис. 24.2 показа но содержимое простой таблицы маршрутизации (на реальных маршрутизаторах размер таблицы гораздо больше, но ее формат остается неизменным). Обратите внимание на столбец под названием Metric. В нем указано, что число маршрутизаторов, которые па кет посетит по пути следования в сети 127.0.0.0/8 (localhost) и (локальная сеть), равно нулю, а оставшийся маршрут проходит через один маршрутизатор. Данный пример чрезвычайно прост. Для маршрутизаторов, показанных на рис. 24.1, в таблице маршрутизации содержалась бы информация о разных маршрутах, отличающихся зна чениями в поле Metric. К сожалению, стандартные средства маршрутизации системы Linux игнорируют значение метрики;

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

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

Протоколы маршрутизации используют следующие алгоритмы.

• Дистанционно-векторный алгоритм. Этот алгоритм отслеживает число марш рутизаторов, находящихся между текущим маршрутизатором и узлом назначения.

При передаче пакета в некоторую сеть выбирается такой путь, на котором число маршрутизаторов будет минимальным. Данный алгоритм используется при работе протокола RIP (Routing Information Protocol — протокол маршрутной информации).

• Алгоритм маршрутизации по состоянию канала. Данный алгоритм связывает информацию о стоимости передачи пакета с каждым соединением. Маршрутиза тор, использующий такой алгоритм, выбирает путь к целевой сети, для которого значение стоимости минимально. Стоимость не обязательно должна быть равна числу маршрутизаторов, при ее определении могут также учитываться различия в быстродействии сетевых соединений. Данный алгоритм используется при работе протокола OSPF (Open Shortest Path First — первоочередное открытие кратчайших маршрутов).

604 Часть IV. Средства защиты и маршрутизации Использование routed В системе UNIX традиционно используется протокол RIP. В Linux он реализуется демоном routed, входящим в состав одноименного пакета. Маршрутизаторы, поддер живающие RIP, обмениваются адресами сетей (например, и связанными с ними метриками (в качестве метрики принимается число маршрутизаторов между маршрути затором, который должен отправить пакет, и целевой Значения метрики могут лежать в пределах от 0 до Если на пути к целевой сети лежит больше марш рутизаторов, длина маршрута считается бесконечной и информация об этом маршруте удаляется из таблицы. При работе протокола RIP используется дистанционно-векторный алгоритм, а значение метрики оценивается очень грубо. Протокол RIP в основном приме няется в небольших и средних сетях;

для управления передачей данных по магистралям Internet он не используется.

Когда маршрутизатор получает информацию от другого маршрутизатора, он либо до бавляет запись о маршруте в таблицу, либо заменяет существующую запись с более высоким значением метрики, либо удаляет маршрут, если полученное значение метрики, увеличенное на единицу, превышает При использовании программы routed в системе Linux обычно не возникает про блем. Для ее запуска применяются средства, рассмотренные в главе 4. Работой сервера управляет конфигурационный файл /etc/gateways, в котором содержится список на чальных маршрутов. Пример записи в файле /etc/gateways приведен ниже.

net gateway 172.22.7.1 metric active В данном примере определяется маршрут по умолчанию (net для которо го задан шлюз Метрика маршрута равна Ключевое слово active указывает на то, что этот маршрут может быть обновлен. Если вы хотите, чтобы маршрут сохранялся в таблице в неизменном виде, надо заменить ключевое слово active на passive. Для работы routed можно использовать файл /etc/gateways, поставляемый в составе пакета. В процессе работы демон routed может, передавая широковещательные запро сы, находить другие маршрутизаторы, использующие протокол RIP. После обнаружения маршрутизатора с ним начинается обмен информацией о маршрутах.

Использование Несмотря на то что протокол RIP традиционно используется в системе UNIX, область его применения ограничена. Одно из ограничений связано с тем, что пакет не может быть передан по маршруту, насчитывающему больше маршрутизаторов;

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

В версии 2 протокола RIP была добавлена поддержка маски подсети. Для хранения данных о маске использовалось поле, которое в исходном варианте RIP было зарезервировано. Протокол реализован в программе GateD Глава 24. Расширенные средства маршрутизации net). Работой GateD управляет конфигурационный файл conf. Для из менения конфигурации GateD используется утилита gdc, которая поставляется в составе того же пакета. Настройка GateD не требует много усилий. В процессе выполнения про грамма взаимодействует с другими маршрутизаторами, поддерживающими протокол RIP или и модифицирует содержимое таблицы маршрутизации. Подобно другим де монам, GateD запускается с помощью сценария SysV либо локального сценария запуска.

Помимо RIP и GateD также поддерживает протокол маршрутизации OSPF.

Другие средства маршрутизации, например Zebra, также поддерживают несколько прото колов.

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

• RIP. Zebra поддерживает протоколы RIP и а также версию RIP для IPv6, которая называется Для взаимодействия по протоколам RIP и исполь зуется сервер ripd, а поддержка RIPng реализована в программе ripngd.

• OSPF. Для работы по протоколу OSPF используется программа ospfd, а вариант OSPF для IPv6 реализован в программе 6d. Подобно RIP, OSPF применяет ся для маршрутизации пакетов в сетевых структурах, насчитывающих несколько локальных сетей.

• BGP (Border Gateway Protocol — пограничный протокол) широко исполь зуется в Internet. Для поддержки данного протокола предназначен сервер Общее управление работой пакета осуществляет программа zebra. Серверы, щие в состав пакета, используют ее для обновления таблицы маршрутизации.

zebra выполняется как сервер;

обратиться к ней можно с помощью клиентской програм мы telnet.

Каждый из демонов маршрутизации выполняется независимо от других. Например, ес ли вам нужно обеспечить поддержку RIP или вы можете запустить только мы zebra и ripd. Работой каждого сервера управляет отдельный файл, расположенный в каталоге /etc или Имя файла совпадает с именем соответствующего демона. Например, содержимое файла определяет конфигурацию сервера ospfd. Все конфигурационные файлы строятся по единому принципу. Символы ! и # являются признаками комментариев. Опции, исполь зуемые для определения конфигурации, перечислены ниже.

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

• password. Программа zebra использует пароль для управления доступом систем и серверов. Пароль необходимо задать в каждом конфигурационном файле.

Этот пароль предоставляет ограниченный доступ к серверу.

• enable password. Данная опция позволяет задать специальный ный пароль, используемый программой zebra. Этот пароль надо задать в, том случае, если вам изменить конфигурацию сервера.

606 Часть IV. Средства защиты и маршрутизации • router протокол. Конфигурационные файлы серверов требуют указания прото кола. Так, в файле указывается router rip, в файле conf — router ospf, а в файле — router bgp системы. (Номера автономных систем назначаются подобно IP-адресам. Если вы хотите применить BGP только в своей локальной сети, вам надо использовать номер автономной системы в диапазоне 64512-65535.) В процессе работы программы zebra вы можете изменить ее конфигурацию, обра тившись к ней с помощью клиентской программы telnet. При обращении указывается порт Пример вызова telnet приведен ниже.

$ telnet После ввода пароля надо задать одну из следующих команд: enable (получение до ступа к командам настройки), (изменение конфигурации) или show (отобра жение сведений о текущей конфигурации). На каждом этапе работы вы можете получить информацию о доступных командах и опциях;

для этого надо ввести символ ?. Если вы работали с маршрутизаторами Cisco, то команды Zebra знакомы вам.

Резюме На каждом компьютере, подключенном к сети, в том числе и на рабочей станции, должна содержаться таблица маршрутизации, которая дает возможность направлять се тевой трафик по требуемому маршруту. Стандартные сетевые утилиты Linux, например ig и route, подходят для заполнения таблицы маршрутизации на рабочей стан ции, сервере и даже на низкоуровневом маршрутизаторе. Если же маршрутизатор выпол няет сложные действия по управлению пакетами, на компьютере должны присутство вать расширенные средства маршрутизации. Linux подобные средства на нескольких уровнях. Поскольку за маршрутизацию отвечает ядро Linux, ряд инструмен тов, предназначенных для настройки маршрутизатора, требуют, чтобы некоторые опции ядра, ответственные за маршрутизацию, были активны. Популярный пакет iproute предоставляет инструменты маршрутизации, в частности, позволяет работать с несколь кими таблицами маршрутизации или сформировать схему QoS с тем, чтобы обеспечить некоторому пользователю или сети возможность использовать определенную часть про пускной способности линии. Протоколы маршрутизации обеспечивают взаимодействие маршрутизаторов, позволяют обмениваться информацией о маршрутах и определять на основании полученных данных оптимальный путь к целевой сети.

Глава Настройка средств обработки с помощью iptables Средства ядра Linux, реализующие стек протоколов TCP/IP, получают данные от при ложения, оформляют их в виде информационных пакетов и передают по сети. Из прини маемых пакетов извлекается содержащаяся в них информация и передается приложению.

Считается, что ядро не должно изменять данные, за исключением тех преобразований, которые предусмотрены протоколами TCP/IP, однако это правило не всегда выполняется.

Утилита iptables позволяет сконфигурировать ядро Linux так, что оно будет фильтро вать и даже преобразовывать пакеты данных на основании различных критериев. Такими критериями могут быть адрес источника и адрес назначения, указанные в пакете. Способ ность организовать процесс фильтрации пакетов позволяет использовать iptables для реализации брандмауэров и преобразователей NAT (Network Address Translation — пре образование сетевых адресов). В данной главе рассматриваются создание брандмауэров и NAT-преобразователей, а также вопросы перенаправления портов и протоколирования хода обработки пакетов. Все решения, о которых идет речь в этой главе, в основном направлены на обеспечение безопасности локальных сетей или отдельных компьютеров.

Средства iptables позволяют реализовать простые брандмауэры и другие инстру менты фильтрации пакетов. Если же брандмауэр, предназначенный для защиты вашей сети, должен выполнять сложные функции, то для его создания вам понадобится до полнительная информация. Необходимые сведения вы можете получить в книге Зиглера (Ziegler) Linux Firewalls, 2nd Edition (New Riders, 2001), а также в книге Сонненрейча (Sonnenreich) и Йетса (Yates) Building Linux and OpenBSD Firewalls (Wiley, 2000). Вто рая из рекомендованных книг в основном ориентирована на применение инструмента который использовался для создания брандмауэров до появления iptables.

Что такое iptables Для обработки сетевых пакетов ядро 2.4.x использует процедуру, подобную той, кото рая условно изображена на рис. В начале обработки ядро выясняет, предназначен ли пакет для локального компьютера или должен быть перенаправлен на другой узел сети.

В зависимости от ответа на этот вопрос, пакет передается одной из двух цепочек: INPUT Часть IV. Средства защиты и маршрутизации Входящие данные Исходящие данные Рис. 25.1. Для обработки информационных пакетов сетевое ядро Linux использует несколько цепочек или FORWARD. Эти цепочки могут обрабатывать информацию различными способами, но по умолчанию они не изменяют данные. Цепочка INPUT передает информацию локаль ным процессам. В роли локальных процессов могут выступать клиентские программы (например, Netscape, telnet и др.) или серверы (Apache, и др.). В большин стве случаев эти программы выполняются как пользовательские процессы, но они могут быть и процессами ядра. Примерами приложений, которые выполняются как процессы ядра, являются средства поддержки NFS, реализованные в ядре, и Web-сервер kHTTPd.

Как информация, генерируемая локальными процессами, так и выходные данные цепочки FORWARD предаются для обработки с помощью цепочки OUTPUT.

Информационный пакет не обязательно должен проходить весь цикл обработ НА ки, показанный на рис. Некоторые пакеты могут быть блокированы одной ЗАМЕТКУ из цепочек;

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

Каждая из цепочек, показанных на рис. предоставляет возможность обрабаты вать пакеты. Фильтрация пакетов осуществляется на основании анализа таких данных, как IP-адрес источника и назначения, порт источника и назначения, а также интерфейс, через который передаются пакеты. Каждая из цепочек представляет собой набор пра вил, на соответствие которым проверяются пакеты. Если пакет соответствует условию правила, над ним выполняются действия, предусмотренные в правилах. При создании брандмауэров используются идентификаторы, определяющие действия. К ним относят ся ACCEPT (принять пакет для обработки), DROP (игнорировать пакет), QUEUE (передать пакет пользовательскому процессу) и RETURN (прекратить обработку и вернуться к Глава 25. Настройка средств обработки пакетов с помощью цепочке). Некоторые действия требуют активизации опций ядра. К ним относятся (отвергнуть пакет, сообщив об этом MASQUERADE (используется при организации и LOG (применяется для протоколирования хода фильтрации).

Цепочки объединяются в таблицы. Цепочки, показанные на рис. составляют таблицу которая используется для обработки стандартных типов трафика. Стан дартными таблицами также являются nat (она используется при построении разователей) и mangle (с ее помощью осуществляются некоторые типы преобразования пакетов). Вы можете поместить в таблицу новые цепочки и вызвать их из существующих цепочек. Это позволяет реализовать сложные процедуры фильтрации.

Таблицы и цепочки являются средствами ядра Linux, a iptables — это программа, которая выполняется как пользовательский процесс и предоставляет возможность управ лять таблицами и цепочками. Программу iptables можно использовать для добавления правил к любой из цепочек, показанных на рис. а также к другим цепочкам. Напри мер, вы можете включить в цепочку INPUT правила, блокирующие все пакеты, в заго ловке которых указан определенный порт назначения, или добавить в цепочку OUTPUT правила, запрещающие передавать пакеты системе, взаимодействие с которой по каким либо причинам запрещено. С помощью этих и других цепочек вы можете реализовать брандмауэр, или другое средство защиты системы.

Изменения, вносимые утилитой iptables, носят временный характер;

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

Альтернативные средства Программа iptables была создана для работы с ядром 2.4.x. С ранними версиями ядра использовались другие инструменты. Например, для с соответ ствующими средствами ядра 2.2.x применялась программа для рабо ты с ядром — программа Смена инструментов отражает изменения в структуре ядра. Программа дает возможность работать такими средства ми ядра 2.4.x, которые отсутствовали в ядре 2.2.x. Например, она позволяет выполнять проверку пакетов с учетом состояния packet inspection), при которой учитыва ются характеристики соединения. Проверка пакетов с учетом состояния предоставляет дополнительные возможности по организации защиты компьютеров.

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

610 _ Часть IV. Средства защиты и маршрутизации взаимодействия с ядром 2,4,х, но надо образом ядро системы. Программы и решать те же решаются при работе с версиями 2.0.x и 2.2.x, но вы не воспользоваться новыми возможностями, предоставляемыми ядром 2.4.x.

правил фильтрации пакетов, реализуемые I возможности TCP Wrappers, контроля ступа к отдельным серверам. Все эти инструменты ограничить возможность взаимодействия с серверами на основе анализа IP-адресов. и то же может быть реализовано несколькими инструментами, я рекомендую не использованием одного из них. одновременном применении нескольких последствия в конфигурации или в коде из программ г устранены другими программами. По сравнению с прочими инструментами назначения iptables реализует средства более низкого уровня, поэтому ограничения, накладываемые с помощью этой охватывают большее число протоколов и Например, если xinetd защищает запускаемые с помощью, iptables позволяет ограничить доступ ко всем серверам.

Конфигурация ядра для работы с iptables Для того чтобы использовать iptables, необходимо активизировать соответствую щие средства ядра. В версии ядра 2.4 все необходимые для этого опции сосредоточены в меню Networking Options и некоторых его подменю. Опции, которые необходимо акти визировать, перечислены ниже.

• Network Packet Filtering. Данная опция расположена в меню Networking Options.

• Connection Tracking. Эта опция находится в подменю Netfilter Configuration меню Networking Options. Данная опция используется при создании NAT-преобразовате лей. (Все последующие опции также расположены в подменю Netfilter Configura tion.) • FTP Protocol Support. При работе NAT-преобразователя особые трудности связаны с поддержкой протокола FTP. В системе Linux для этой цели создан специальный модуль ядра.

• IP Support. Данная опция также необходима для работы NAT-преобразо вателя. При выборе этой опции становится доступным большое число подопций, соответствующих различным типам проверки. Чтобы обеспечить наибольшую гиб кость, желательно выбрать все подопций. Особенно важна Connection State Match Support, поскольку она используется для проверки пакетов с учетом состояния.

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

Глава 25. Настройка средств обработки пакетов с помощью iptables • REJECT Target Support. Данная опции Packet Filtering добавляет прави ло, которое может быть использовано при создании брандмауэров. Поэтому имеет смысл активизировать эту опцию.

• Full NAT. Средства, включаемые с помощью данной опции, требуются для реализа ции многих возможностей NAT, включая те, которые описаны в данной главе.

• MASQUERADE Target Support. Данная подопция опции Full NAT необходима для реализации IP-маскировки — разновидности которая будет описана ниже. В справочной информации, вызываемой после щелчка на кнопке Help, сказано, что опция MASQUERADE Target Support нужна только при исполь зовании динамических внешних IP-адресов, однако это не так. Данная опция тре буется при выполнении IP-маскировки, независимо от того, являются ли внешние IP-адреса динамическими.

• Packet Mangling. Средства ядра, включаемые с помощью данной опции, нужны, если вы собираетесь использовать таблицу mangle. Я рекомендую вам активизи ровать опцию Packet Mangling.

• LOG Target Support. Если вы хотите протоколировать работу брандмауэра или маршрутизатора, данная опция позволит вам сделать это.

• ipchains Support. Если вы хотите использовать сценарии брандмауэра, ориентированные на работу с ipchains, вам необходимо активизировать дан ную опцию. Для выполнения этих сценариев вам также потребуется программа ipchains.

• ipfwadm Support. Если вы хотите использовать сценарии брандмауэ ра, предназначенные для работы с ipfwadm, вам необходимо активизировать дан ную опцию. Для выполнения этих сценариев вам также потребуется программа ipfwadm.

СОВЕТ Опции, включающие поддержку ipchains и ipfwadm, являются взаимоис и не совместимы с опциями IP Tables Support и Connection Track ing. Поэтому нельзя одновременно включать опции, предназначенные для рабо ты с iptables и более старыми инструментами подобного назначения. Однако вы можете скомпилировать все необходимые средства как модули и загружать тот или иной модуль по мере необходимости. Такая конфигурация оправдана в том случае, если вы применяете один из старых инструментов, но планируете переходить на использование iptables. Во многих дистрибутивных пакетах ядро скомпилировано подобным образом по умолчанию.

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

612 Часть IV. Средства защиты и Проверка текущей конфигурации iptables Перед тем как приступать к решению каких-либо задач, предполагающих использо вание iptables, необходимо проверить текущую конфигурацию. В составе некоторых дистрибутивных пакетов поставляются инструменты для создания брандмауэров, и не исключено, что к данному моменту они уже были запущены. Чтобы проверить конфи гурацию системы, надо указать при вызове iptables опцию -L. Добавив опцию имя-таблицы, вы сможете получить информацию о состоянии конкретной таблицы.

(Чаще всего проверяется состояние таблицы но вы можете также указать при вызове iptables таблицу nat или mangle.) При запуске с использованием опции -L программа iptables выведет данные, подобные приведенным ниже.

# iptables -L -t filter Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Данные, отображаемые при вызове этой программы, указывают на то, что в стан дартной таблице правила отсутствуют. Если правила, определяющие действия брандмауэра, уже заданы, вам необходимо выяснить, какой сценарий создает их, и запре тить его выполнение. (Часто для установки правил используется сценарий содержа щийся в файле или сценарий с другим подобным именем.) Для того чтобы исключить правила из цепочки, надо использовать опцию -F.

iptables -F INPUT -t filter Подобные команды для цепочек, содержащихся в таблице и в других табли цах, часто включают в начало сценария брандмауэра. Это гарантирует, что вновь опреде ляемые правила не будут конфликтовать с правилами, созданными ранее.

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

Что такое брандмауэр Обычно, когда говорят о брандмауэре, имеют в виду компьютер, расположенный меж ду двумя сетями и управляющий доступом из одной сети в другую. Несмотря на то что маршрутизатор также управляет обменом пакетами между различными сетями, эти инструменты существенно отличаются друг от друга. Брандмауэр может блокировать до Глава 25. Настройка средств обработки пакетов с помощью iptables ступ компьютеров одной сети к некоторым службам другой сети. Например, брандмауэр может запретить обращения по протоколу Telnet из Internet к компьютерам локальной сети. Маршрутизатор не выполняет подобных действий. Брандмауэр, в свою очередь, также осуществляет не все операции, выполняемые маршрутизатором. Так, например, брандмауэры, выступающие в роли proxy-серверов, частично обрабатывают запросы, на правленные другим системам, преобразуют их так, что они выглядят как сформированные самим брандмауэром, и перенаправляют ответы системам, от которых были получены за просы. Брандмауэры, выполняющие функции proxy-серверов, представляют собой мощ ные средства защиты. Они позволяют даже защитить компьютеры от вирусов, встроенных в программы Java и JavaScript.

В данном разделе рассматриваются брандмауэры, выполняющие фильтрацию пакетов.

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

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

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

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

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

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

614 Часть IV. Средства защиты и маршрутизации Допустимое обращение Бранд Локальная сеть Рис. 25.2. Брандмауэры, выполняющие фильтрацию пакетов, позволяют блокировать некоторые типы обращений к локальной сети Как видно на рис. для того, чтобы обеспечить фильтрацию пакетов в системе Linux, надо настроить цепочки INPUT, FORWARD и OUTPUT. Назначение каждой из этих цепочек кратко описано ниже.

• Цепочка INPUT защищает локальные процессы. Эту цепочку используют как бранд совмещенные с маршрутизаторами, так и брандмауэры, установленные на рабочих станциях и серверах.

• Цепочка FORWARD принимает непосредственное участие в маршрутизации пакетов.

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

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

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

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

# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP В данном примере задается политика по умолчанию для трех стандартных цепочек, содержащихся в таблице В качестве политики по умолчанию может быть ука зано любое из описанных ранее действий (ACCEPT, DROP, QUEUE, RETURN и т. д.).

Наиболее часто используются действия ACCEPT, DROP и REJECT. ACCEPT указывает Linux на то, что все пакеты должны передаваться, a DROP заставляет систему игнори ровать все пакеты. REJECT, подобно DROP, также указывает на то, что пакеты должны отвергаться, но при этом Linux оповещает источник о том, что пакет не принят (подобное сообщение источник получает и в том случае, если в системе нет ни одного ожи дающего обращения через порт, указанный в заголовке пакета). Если брандмауэр должен обеспечивать высокую степень защиты, в качестве политики по умолчанию указывается DROP или REJECT, однако при этом все пакеты, передача которых не разрешена явным образом, будут отвергнуты. Если задана политика по умолчанию ACCEPT, то необходимо явно запретить все типы пакетов, которые не должны быть пропущены через брандмауэр.

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

Определение правил Для создания правил используется опция (или -А) программы iptables.

После этой опции задается один или несколько критериев, затем указывается опция (или -j), за которой следует действие ACCEPT, DROP или REJECT. Вызов iptables, предназначенный для создания действия, выглядит следующим образом:

# iptables CHAIN действие Сокращенно та же команда может быть записана так:

# iptables -A CHAIN -j действие Вместо при вызове iptables могут быть указаны следующие опции.

• или -D. Эта опция удаляет правило из существующей цепочки.

• или -I. С помощью данной опции вы можете включить правило в се редину цепочки. При этом необходимо задать номер правила. Если номер не ука 616 Часть IV. Средства защиты и маршрутизации зан, iptables включит правило в начало цепочки (при использовании опции правило помещается в конец цепочки).

• или -R. Эта опция дает возможность заменить правило. Задавая дан ную опцию, следует указать номер заменяемого правила.

• или -L. Данная опция отображает все правила в цепочке.

Для утилиты iptables предусмотрены также другие опции. Информацию о них вы можете получить на страницах справочной системы, посвященных iptables. В сле дующем разделе рассматривается формирование критериев выбора, передаваемых iptables. В одной команде можно задать несколько критериев, например, вы може те ограничить доступ по номеру порта и по IP-адресу.

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

Использование номеров портов при выполнении фильтрации При выполнении фильтрации пакетов могут анализироваться порты источника и на значения. Например, брандмауэр, находящийся на компьютере, на котором выполняется почтовый сервер, можно настроить для передачи пакетов, в которых указан порт назначе ния 25. Для этого используется опция Аналогичных результатов можно добиться, используя опцию в качестве значения которой указывается тип протокола (tcp, udp, icmp или all). Опция выполняет подобные действия, но задает порт источника. Команды, опреде ляющие правила фильтрации на основе номеров портов, выглядят следующим образом:

# -A INPUT -p tcp 25 -j ACCEPT # iptables -A OUTPUT -p tcp 25 -j ACCEPT Эти команды обеспечивают прием пакетов, направленных серверу, который ожидает поступление запросов через порт 25, и передачу пакетов, возвращаемых сервером в ответ на запрос (в них указан порт источника 25). В результате, даже если политика по умол чанию отвергает пакеты, сервер сможет получить почту от внешних серверов. Заметьте, если в качестве политики по умолчанию указано действие DROP или вы должны включить в цепочку INPUT правило, разрешающее принимать пакеты, направленные сер веру, а в цепочку OUTPUT — правило, разрешающее передавать пакеты, сгенерированные данным сервером. Для этого при определении правила для цепочки INPUT задается оп ция а при определении правила для цепочки OUTPUT — опция Если вы забудете создать одно из правил, то сервер сможет получать запросы, но не сможет генерировать ответы на них, либо, наоборот, через брандмауэр будут пропускаться только данные, сгенерированные сервером, а информация, направ ленная серверу, будет отвергаться. Для брандмауэра, совмещенного с маршрутизатором, надо также включить в цепочку FORWARD правила, созданные с использованием опций Глава 25. Настройка средств обработки пакетов с помощью iptables и в противном случае данные через бранд мауэр передаваться не будут. Вы можете использовать в качестве условий номера портов в сочетании с IP-адресами. Это позволит не только ограничить обмен определенным ти пом протокола, но и разрешить его лишь для отдельных компьютеров. Так, например, вы сможете создать правила, согласно которым взаимодействовать с внешними узлами по протоколу SMTP будет иметь право только почтовый сервер.

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

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

• Разрешите доступ к непривилегированным портам компьютеров вашей сети. Но мера непривилегированных портов лежат в диапазоне В опциях и указываются границы диапазона, раз деленные двоеточием, например 1024 : Для принимае мых пакетов вы можете указать также опцию ! syn. Правилам, в которых указана опция соответствуют только пакеты, содержащие запросы на установление соединений, а символ ! означает отрицание, т. е. заданному правилу будут удо влетворять только пакеты, которые были переданы серверами в ответ на запросы клиентов.

Использование IP-адресов при выполнении фильтрации При создании правил могут указываться IP-адреса или блоки IP-адресов. IP-адрес ис точника задается с помощью опции а IP-адрес назначения — посред ством опции Например, если вы хотите запретить взаимодействие с компьютерами сети 172.24.0.0/16, вам надо создать правила, которые отвергали бы па кеты, переданные из указанной сети, а также пакеты, адресованные компьютерам этой сети. Соответствующие команды имеют следующий вид:

# iptables -A INPUT -s -j DROP # iptables -A OUTPUT -d -j DROP Опции -s и -d часто используются вместе с опциями, определяющими номера пор тов. Таким образом, вы можете сформировать правила, согласно которым взаимодейство вать по сети будут иметь право только определенные компьютеры, обращающиеся по определенным портам. Предположим, например, что вы создаете брандмауэр для защиты локальной сети, но хотите при этом разрешить удаленным пользователям, работающим в сети 10.34.176.0/24, обращаться к серверам SSH локальной сети (серверы SSH ожидают обращения через порт 22). Для этого надо определить следующие команды:

618 Часть IV. Средства защиты и маршрутизации # iptables -A FORWARD -s -р tcp \ 22 -j ALLOW t iptables -A FORWARD -d -p tcp \ 22 -j ALLOW Поскольку в данном примере модифицируется только цепочка FORWARD, пользова телям не предоставляется доступ к серверу SSH компьютера, на котором выполняется брандмауэр (если такой сервер имеется на этой машине). Возможно, вы захотите создать правила, которые разрешали бы обращаться к этому серверу с компьютеров локальной се ти. Если адрес вашей локальной сети то соответствующие команды будут выглядеть так:

# iptables -A INPUT -s -р tcp \ 22 -j ALLOW # iptables -A OUTPUT -d -p tcp \ 22 -j ALLOW Использование информации об интерфейсах при выполнении фильтрации При создании правил фильтрации можно указывать сетевой интерфейс, например рррО или Данный подход в основном используется на компьютерах с несколькими интерфейсами, выполняющих функции маршрутизаторов. Применение в составе правила сведений об интерфейсе позволяет противодействовать фальсификации адресов, в част ности, включению в заголовки пакетов, приходящих извне, адресов компьютеров локаль ной сети. Правила, в которых интерфейс задается с помощью опции асе (-i), как правило, помещаются в цепочки INPUT и FORWARD, а правила, создаваемые с использованием опции обычно предназначены для вклю чения в цепочки FORWARD и OUTPUT. Предположим, что адрес вашей локальной сети 192.168.9.0/24, маршрутизатор, совмещенный с брандмауэром, подключен к ней с по мощью интерфейса ethl, а соединение маршрутизатора с осуществляется по средством интерфейса ethO. Правила, препятствующие фальсификации адресов, имеют следующий вид:

# iptables -A INPUT -s -i ethO -j DROP # iptables -A FORWARD -s -i ethO -j DROP # iptables -A FORWARD -s -i ethl -j DROP # iptables -A OUTPUT -s -i ethl -j DROP Первые две команды отвергают поступающие извне (через интерфейс ethO) паке ты, адресованные маршрутизатору или компьютерам локальной сети, в которых указано, что они отправлены из локальной сети. Последние две команды блокируют пакеты, на правленные в Internet (поступающие через интерфейс ethl), в которых указан IP-адрес источника, не совпадающий с адресами компьютеров локальной сети.

Проверка пакетов с учетом состояния Одна из самых новых возможностей фильтрации пакетов, реализованных в систе ме Linux, позволяет учитывать при проверке пакетов состояние соединения. Средства, рассмотренные ранее в этой главе, позволяли обрабатывать отдельные пакеты, незави симо от того, являлись ли они частью соединения или были специально сгенерированы для организации атаки. (Ранее уже встречалась опция позволяющая определить Глава 25. Настройка средств обработки пакетов с помощью iptables пакет, содержащий запрос на установление соединения. Существуют средства, которые предоставляют возможность включить свои пакеты в набор пакетов, передаваемых в рам ках действующего соединения. Такое включение пакетов называется перехватом TCP соединения.) Средства проверки пакетов с учетом состояния определяют принадлеж ность пакетов к текущему соединению, анализируя последовательные номера, IP-адреса, указанные в заголовках, и другие характеристики пакетов. Правила, реализующие та кую проверку, позволяют отвергать посторонние пакеты, включенные в состав данных, которые передаются в рамках существующего соединения.

Для включения средств проверки пакетов с учетом состояния используется опция предваряемая опцией -т состояние. Для опции можно задать одно или несколько значений. Если вы указываете несколько значений, они должны раз деляться запятыми. Символ ! перед опцией изменяет ее действие на обратное.

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

• NEW. Пакет пытается установить новое соединение.

• ESTABLISHED. Пакет соответствует существующему соединению.

• RELATED. Пакет не является частью существующего соединения, но его присут ствие допустимо (например, это может быть сообщающий об ошибке).

Опция ! INVALID эквивалентна опции NEW, Рассмотрим пример проверки с учетом состояния. Предположим, что, настраивая брандмауэр на отдельном компьютере, вы задали политику по умолчанию DROP или REJECT, но хотите разрешить взаимодействие с сервером HTTP через порт 80. Вы мо жете задать поверку с учетом состояния, в ходе которой будут отвергаться пакеты, не предназначенные для установления соединений, не принадлежащие к существующим соединениям и не относящиеся к пакетам, присутствие которых допустимо. Команды, предназначенные для создания правил, имеют следующий вид:

# iptables -A INPUT state tcp 80 \ -j ACCEPT # iptables -A OUTPUT -m state -p tcp 80 \ -j ACCEPT Эти правила включают проверку входящих и исходящих пакетов. Для проверки па кетов, передаваемых с компьютера, значение NEW опции не задано, так как новое соединение может устанавливаться только по инициативе клиента. Эти правила препятствуют перехвату существующих соединений с Web-сервером.

Проверка пакетов с учетом состояния может осуществляться только в тех си стемах, в которых используется версия ядра 2.4.x. Предыдущими версиями ядра такая возможность не поддерживается. Это может стать одним из стимулов пе рехода к использованию iptables.

620 Часть IV. Средства защиты и маршрутизации Использование дополнительных опций Программа iptables поддерживает большое количество опций, которые могут быть использованы для создания брандмауэров. Например, посредством опции (-N) можно создать новую цепочку, указав опцию (-f), можно создать правило, которое будет применяться ко второму и к последующим фрагментам тированного пакета, а опция дает возможность организовать проверку на присутствие флагов в составе TCP-пакета. Дополнительную информацию об этих и о дру гих опциях вы можете получить на страницах справочной системы Linux, посвященных iptables.

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

ВНИМАНИЕ брандмауэров, предназначенные для практического применения, со держат гораздо больший объем кода по сравнению представленным в листин ге Для удобства чтения в данном листинге при вызове iptables не указы вается путь к файлу. В реальных сценариях это недопустимо. Не указывая путь к файлу, вы создаете угрозу безопасности системы. Код, приведенный в листин ге может послужить основой для создания более сложных сценариев.

Листинг 25.1. Простой сценарий, использующий iptables для создания брандмауэра #!/bin/sh iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # Разрешить iptables -A INPUT -p 53 -j ACCEPT iptables -A OUTPUT -p udp 53 -j ACCEPT # Разрешить обмен клиентов с локальной сетью iptables -A INPUT state -p tcp 1024:65535 \ -s -j ACCEPT iptables -A OUTPUT -m state -p tcp \ ! INVALID -d -j ACCEPT # Разрешить все HTTP-соединения iptables -A INPUT -m state -p tcp 80 \ Глава 25. Настройка средств обработки пакетов с помощью iptables ! INVALID -j ACCEPT iptables -A OUTPUT -m state -p tcp 80 \ ESTABLISHED, RELATED -j ACCEPT # обращения к I из локальной сети iptables -A INPUT -m state -p tcp 22 \ ! INVALID -s ACCEPT iptables -A OUTPUT -m state -p tcp 22 \ -d -j ACCEPT # Разрешить прохождение локального через 1о iptables -A INPUT -s 127.0.0.1 -i -j ACCEPT iptables -A OUTPUT -d 127.0.0.1 -o lo -j ACCEPT Ниже описаны некоторые особенности кода, приведенного в листинге • Удаление существующих правил и установка политики по умолчанию. В пер вых шести строках программа iptables вызывается для удаления правил, присут ствующих в цепочках, и установки политики по умолчанию. В качестве политики по умолчанию задается действие DROP. Несмотря на то что компьютер не выполня ет маршрутизацию пакетов, политика по умолчанию задается также и для цепочки FORWARD. Это делается на случай, если на компьютере будет установлен еще один сетевой интерфейс.

• Взаимодействие с сервером DNS. Для того чтобы компьютер мог взаимодейство вать с сервером DNS, две строки, следующие за комментариями "Разрешить NDS предоставляют компьютеру возможность обращаться к удаленным сер верам DNS (UDP-порт 53). Возможности соединения не ограничиваются одним адресом;

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

• Обмен с клиентами локальной сети. Строки, следующие за комментариями "Раз решить обмен клиентов с локальной сетью", открывают путь трафику, связанно му с непривилегированными портами (1024-65535). В цепочки INPUT и OUTPUT включены правила проверки пакетов с учетом состояния. Заметьте, что правило в цепочке INPUT запрещает установление новых соединений, поэтому, даже если на компьютере будет находиться сервер, принимающий обращения через неприви легированные порты, другие компьютеры не смогут обратиться к нему. Цепочки и OUTPUT ограничивают взаимодействие компьютерами локальной сети.

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

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

• Трафик, связанный с сервером SSH. Правила, определяющие взаимодействие с сервером SSH, во многом напоминают правила для Web-сервера, но в них указаны IP-адреса. В результате эти правила разрешают обращение к SSH-серверу только с компьютеров локальной сети.

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

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

Что такое NAT Средства NAT позволяют изменять в процессе маршрутизации содержимое TCP- и IP пакетов. В частности, при NAT-преобразовании изменяется IP-адрес источника и назначе ния в составе пакета. Ниже описаны ситуации, в которых оправданы подобные изменения адреса.

• Установление соответствия между внешними и внутренними адресами. Воз можно, что, получив в свое распоряжение блок IP-адресов, вы не захотите пере настраивать сеть и будете использовать адреса, предназначенные для внутреннего пользования. Используя средства NAT, вы можете установить взаимно-однозначное соответствие между обычными Internet-адресами, выделенными для вашей сети, и адресами, которые реально присвоены вашим компьютерам.

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

• Распределение нагрузки. С помощью NAT можно поставить в соответствие одно му IP-адресу два компьютера внутренней сети и переключаться между ними при Глава 25. Настройка средств обработки пакетов с помощью iptables передаче запросов. Такая форма распределения нагрузки считается очень грубой, но если один сервер не справляется со своей задачей, можно использовать подобное решение. Следует, однако помнить, что существуют более совершенные способы распределения нагрузки, не связанные с использованием NAT.

• Расширение адресного пространства. Если в вашем распоряжении имеется лишь ограниченное число IP-адресов, вы можете "спрятать" несколько компьютеров за одним IP-адресом. Такая возможность обычно используется в небольших сетях, подключенных к Internet по коммутируемой линии либо через соединение с ши рокой полосой пропускания. Если провайдер выделил для сети лишь один адрес, с помощью можно обеспечить работу всех компьютеров сети.

Расширение адресного пространства является наиболее частым применением NAT.

Данная разновидность NAT-преобразования называется В этом разделе будет рассматриваться именно этот способ использования NAT.

Средства NAT применяются совместно со средствами маршрутизации. В роли марш рутизатора, поддерживающего NAT, может выступать компьютер под управлением Linux.

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

Для того чтобы лучше понять работу NAT, рассмотрим процесс преобразования адреса с помощью NAT-маршрутизатора. Взаимодействие с сервером, расположенным в Internet, начинается по инициативе клиента (например, Web-броузера), который находится в сети, защищенной с помощью NAT-маршрутизатора. Предположим, что этот клиент пытается обратиться к Web-броузеру по адресу 172.18.127.45. Он генерирует HTTP-запрос;

в па кетах, содержащих этот запрос, указывается локальный IP-адрес клиента (предположим, Клиент передает запрос компьютеру, выполняющему роль локального шлю за;

этот компьютер осуществляет NAT-преобразование. Получив пакет с запросом к Web серверу, NAT-маршрутизатор анализирует его содержимое, заменяет IP-адрес источника на свой IP-адрес (допустим, что его адрес и передает пакет по назначению.

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

NAT-преобразование, а в особенности IP-маскировка, автоматически обеспечивает за щиту компьютеров в локальной сети. Поскольку внешним компьютерам доступен только один IP-адрес, они не могут установить непосредственное соединение с внутренним ком пьютером. В локальную сеть извне передаются только ответы на запросы, отправленные 624 Часть IV. Средства защиты и маршрутизации NAT-маршрутизатор 192.168.9.32 192.168.9. Локальные компьютеры Рис. 25.3. NAT-маршрутизатор изменяет IP-адреса в пакетах ими. По этой причине продукты NAT часто называют брандмауэрами, хотя между этими инструментами имеются существенные различия.

Помимо преимуществ, NAT имеет существенные недостатки.

• Автоматически создаваемая защита затрудняет размещение сервера во внутренней сети, расположенной за NAT-маршрутизатором, и обеспечение внешнего доступа к этому серверу. Чтобы доступ к серверу извне стал возможен, надо использовать перенаправление портов.

• Не все протоколы нормально взаимодействуют с NAT. Иногда IP-адреса исполь зуются для обработки содержимого пакетов, в других случаях на обоих концах соединения могут работать серверы. Средства, реализующие NAT в системе Linux, обеспечивают поддержку некоторых протоколов, но если вы используете видеокон ференции или средства шифрования, то при обмене с Internet через NAT-маршру тизатор могут возникнуть проблемы.

• Несмотря на то что NAT защищает компьютеры локальной сети, не следует думать, что их безопасность гарантирована. Угрозу для ваших компьютеров могут представ Глава 25. Настройка средств обработки пакетов с помощью iptables также вирусы и программы типа "троянский конь", попадающие в систему по другим каналам.

Опции iptables для осуществления Средства поддержки NAT в системе Linux содержатся в таблице которая уже упоминалась выше. Подобно таблице nat содержит три цепочки: PREROUTING, и OUTPUT. Несмотря на совпадение имен, цепочка OUTPUT в таблице nat отличается от одноименной цепочки в таблице Для активизации средств NAT надо вызвать две следующие команды:

# iptables nat -A POSTROUTING -о -j \ MASQUERADE I echo > Для загрузки NAT-модуля ядра перед вызовом iptables может потребоваться выполнение команды iptable_nat.

В качестве внешнего интерфейса в первой из двух приведенных команд указывается интерфейс, посредством которого осуществляется соединение с Internet, например или Эта команда указывает Linux на то, что для всего сетевого трафика, проходяще го через маршрутизатор, надо выполнить IP-маскировку. Вторая команда разрешает ядру Linux осуществить маршрутизацию (эта команда используется также в маршрутизаторах, не поддерживающих При настройке NAT-маршрутизатора обычно включают средства фильтрации паке тов. Несмотря на то что NAT-маршрутизатор надежно защищает компьютеры локальной сети от атаки извне, вам надо защитить сам маршрутизатор, а также ограничить возмож ности компьютеров локальной сети по установлению соединений с Internet. Даже если компьютер, защищенный используете только вы, не исключено появление на нем вирусов и программ типа "троянский конь", которые могут иниции ровать нежелательные обращения к внешним узлам. Возможно, вы захотите включить проверку пакетов с учетом состояния, чтобы пресечь попытки перехвата соединений, предпринимаемые из вашей локальной сети. задаются посредством того же сценария, который используется для установки правил брандмауэра.

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

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

626 Часть IV. Средства защиты и маршрутизации решаемые с помощью перенаправления портов Перенаправление портов может потребоваться в следующих ситуациях.

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

• Если вы хотите, чтобы один и тот же сервер отвечал на обращения по разным портам. Вы можете настроить систему для перенаправления запроса с одного порта на другой. Некоторые серверы могут принимать обращение через несколько портов, в этом случае перенаправление портов не требуется.

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

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

Опции iptables для перенаправления портов Обеспечить перенаправление портов на компьютере под управлением Linux, поддер живающем NAT, можно различными способами. Один из них состоит в использовании iptables. Соответствующая команда имеет следующий вид:

# iptables nat -A -p tcp -i external-interface \ port-num -j DNAT Ниже описаны компоненты данной команды.

• Опция, определяющая таблицу NAT nat).

• Опция -A PREROUTING, указывающая на то, что изменения должны вноситься в состав пакета перед выполнением маршрутизации. Базовые средства NAT приме няются после маршрутизации, но перенаправление портов предшествует маршру тизации.

• Опция, которая задает перенаправление TCP-портов tcp).

• Правило, применяемое к пакетам, направленным через внешний интерфейс по конкретному порту порта).

• Опция - j DNAT, указывающая на то, что вместо NAT источника (SNAT) выполня ется NAT назначения (DNAT).

Глава 25. Настройка средств обработки пакетов с помощью iptables • Опция сообщающая, что пакет дол жен быть направлен на указанный адрес с использованием указанного номера порта.

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

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

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

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

В программе iptables предусмотрено специальное действие LOG, управляющее протоколированием. В отличие от других действий, действие LOG не приводит к пре кращению дальнейшей проверки;

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

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

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

• Если вы установили политику по умолчанию DENY или вы можете вклю чить правило протоколирования в конце цепочки и получать таким образом инфор мацию о пакетах, по умолчанию отвергаемых системой.

• Если в вашей системе установлена политика по умолчанию ACCEPT, вы можете по лучать информацию об отвергнутых пакетах, продублировав каждое запрещающее правило аналогичным правилом, в котором действие DENY или заменено на LOG.

В качестве примера рассмотрим следующие правила брандмауэра, для которого уста новлена политика по умолчанию ACCEPT. Эти правила предназначены для блокирования попыток обмена с сетью 172.24.0.0/16;

информация об отвергнутых пакетах записывается в файл протокола.

iptables -A INPUT LOG # iptables -A OUTPUT -d -j LOG # iptables -A INPUT -s -j DROP # iptables -A OUTPUT -d -j DROP Первые две команды совпадают с двумя последними, за исключением того, что вместо действия DROP в них указано действие LOG. Второе и третье правила можно поменять местами, при этом результаты не изменятся. Между правилами, предусматривающими действия LOG и DROP, можно включить дополнительные правила, но при этом становится менее очевидно, что данные правила связаны между собой.

В результате протоколирования в файл записываются сведе ния, подобные приведенным ниже.

18 22:13:21 kernel: IN=ethO OUT= LEN=40 TOS=OxlO PREC=OxOO DF PROTO=TCP SPT=4780 DPT=22 RES=OxOO ACK URGP= В состав записи входят следующие данные.

• Дата и время. Первый компонент записи сообщает время получения пакета.

• Имя системы. В данном примере компьютер имеет имя teela.

• Входной интерфейс. Поле IN=ethO указывает на то, что пакет был получен через интерфейс • Выходной интерфейс. Данный пакет является входным, поэтому поле OUT= отсут ствует в составе записи.

• МАС-адрес. В поле указываются два МАС-адреса: локальной и удаленной систем.

Глава 25. Настройка средств обработки пакетов с помощью iptables • IP-адреса источника и назначения. Поля SRC= и DST= содержат соответственно IP-адреса источника и назначения.

• Порты источника и назначения. Поля SPT= и DPT= содержат соответственно порты источника и назначения.

• Информация о пакете. Остальные поля предоставляют дополнительные сведения о пакете, в частности, его длину (LEN=), время жизни (TTL=) и другие данные.

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

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

Поэтому последовательность вызовов iptables организуется в виде сценария.

Глава Организация виртуальной частной сети Одна из проблем передачи данных в Internet связана с шифрованием информации. Во многих часто применяющихся протоколах, например Telnet и FTP, не предусмотрено ко дирование информации. Данные, в том числе пользовательское имя и пароль, передаются в незашифрованном виде. Такая ситуация может считаться приемлемой в локальной сети, где администратор имеет возможность контролировать действия пользователей, но в In ternet, где между передающим и принимающим узлами находится несколько маршрутиза торов, передавать важную информацию с помощью подобных протоколов недопустимо.

ВНИМАНИЕ Не следует считать, что в локальной сети информация полностью защищена. Не f исключено, что взломщик получит контроль над компьютером сети и использует его для дальнейшего сбора информации. Применение протоколов, предусматри вающих кодирование данных, позволяет исправить ситуацию. Для повышения степени защиты локальной сети можно использовать систему Kerberos, описан ную в главе 6.

Иногда у пользователей возникает необходимость обратиться к ресурсам локальной сети с удаленных компьютеров. Некоторые из них работают дома или в дороге на пор тативных компьютерах. Один из способов, позволяющих обеспечить работу удаленных пользователей, не подвергая данные существенному риску, состоит в организации вирту альной частной сети (VPN — Virtual Private Network). Такая сеть предоставляет удаленно му пользователю доступ к ресурсам так, как будто он работает в пределах локальной сети.

Клиент и сервер VPN создают виртуальные сетевые интерфейсы и связывают их через Internet, причем данные передаются в закодированном виде. Таким образом, VPN позво ляет связать удаленные компьютеры или удаленные сети с локальной сетью. В данной главе приводятся основные сведения, касающиеся конфигурации средств VPN, а также рассматриваются протоколы VPN: PPTP и обеспечивающие работу.

Глава 26. Организация виртуальной частной сети Использование VPN VPN позволяет расширить локальную сеть за счет взаимодействия с внешними ком пьютерами. Очевидно, что если локальная сеть подключена к Internet, внешние пользо ватели могут обращаться к ней без VPN. Однако VPN имеет ряд преимуществ перед обычными типами сетевого обмена.

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

• VPN обеспечивает шифрование данных, передаваемых посредством протоко лов, не предусматривающих кодирование. Если бы средства VPN не обеспечи вали шифрование данных, то виртуальную сеть, созданную с их помощью, нельзя было бы назвать частной. Кодируя информацию, передаваемую посредством таких протоколов, как NFS и Telnet, VPN существенно упрощает обмен важными данными по Internet. (Следует заметить, что такой обмен организуется чрезвычайно сложны ми средствами, простым он кажется лишь с точки зрения клиента или сервера.) Клиенты и серверы, взаимодействующие в рамках VPN, не надо настраивать спе циальным образом;

всю работу по обеспечению защиты выполняют средства VPN.

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

Настроить их проще, чем VPN.

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

Несмотря на то что на рис. 26.1 показано соединение лишь между двумя сетями, технология VPN позволяет объединить в виртуальную сеть любое количество локальных сетей.

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

Часть IV. Средства защиты и маршрутизации Рис. 26.1. VPN реализуются с помощью маршрутизаторов, которые имеют возможность кодировать данные, направленные на некоторые компьютеры или в некоторые сети Принимая решение о создании VPN, необходимо учитывать пропускную способность линий. Для подключения нескольких удаленных сетей к центральной сети необходи мо располагать линиями, обеспечивающими большую скорость передачи, способными удовлетворить запросы пользователей. Многие протоколы, которые разрабатывались для применения в локальных сетях, генерируют большие объемы данных. Они нормально работают в среде Ethernet, обеспечивающей скорость обмена 100 Мбод, но если инфор VPN-клиент Рис. 26.2. VPN позволяет подключить к сети отдельные удаленные компьютеры Глава 26. Организация виртуальной частной сети придется передавать по линии Т1 с пропускной способностью Мбод, произ водительность станет недопустимо низкой. Если же сети удаленных офисов подключены через ADSL-соединения, вам необходимо учитывать, что такие соединения асимметричны по своей природе. Если пропускная способность в одном направлении может достигать 600-1500 Кбод, то в другом направлении скорость передачи данных не будет превышать Кбод. Еще хуже обстоит дело с индивидуальными пользователями, компьютеры которых часто подключаются к Internet по коммутируемой линии, пропускная способ ность которой не превышает 56 Кбод.

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

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

предназначенные для организации VPN В настоящее время отсутствуют стандартные инструментальные средства, позволяю щие создать VPN. Стандарты, регламентирующие работу VPN, находятся в стадии разра ботки. Ниже приведены три наиболее часто употребляемых инструмента, предназначен ные для создания VPN.

• РРТР (Point-to-Point Tunneling Protocol — протокол межузлового был создан консорциумом РРТР Forum, в который входят несколько компаний, зани мающихся разработкой сетевых средств. Протокол РРТР часто используется для ор ганизации взаимодействия сотрудников, работающих дома, с сетями предприятий.

Средства поддержки РРТР входят в состав последних версий Windows. Существует также РРТР-сервер для Linux;

он называется РоРТоР com).

• Проект f посвящен созда нию VPN-инструмента для Linux. Этот инструмент распространяется в исходных кодах. Он очень популярен для организации VPN, в которые входят компьютеры под управлением Linux.

• SSH. Возможность протокола поддерживать соединений по средством других протоколов также может использоваться для создания VPN.

В данной главе будут рассматриваться первые два из описанных выше подходов к со зданию VPN. РРТР — очень популярный инструмент. Его очень удобно использовать в тех 634 Часть IV. Средства защиты и маршрутизации случаях, когда Windows-клиент должен непосредственно подключаться к VPN-маршру тизатору. Данное средство также реализовано для других операционных систем;

суще ствуют даже специальные устройства, называемые коммутаторами удаленного доступа (remote access switch). Инструмент не пользуется большой популярностью в операционных средах, отличных от Linux. Однако он часто применяется для организа ции VPN в тех случаях, когда роль VPN-маршрутизаторов выполняют компьютеры под управлением Linux.

Настройка РРТР в системе Linux Поскольку РРТР не разрабатывался специально для Linux, чтобы инсталлировать со ответствующие средства на компьютере под управлением Linux, необходимо приложить определенные усилия. Сервер РоРТоР взаимодействует с РРР-демоном pppd. Для обес печения безопасности система должна уметь шифровать данные, но соответствующие средства в программе pppd отсутствуют. Поэтому демон pppd необходимо заменить его расширенной версией. созданы как для Linux, так и для Windows;

очевидно, что они настраиваются по-разному.

Инсталляция РоРТоР Инструмент РоРТоР поставляется в составе некоторых версий Linux, например Debian и Mandrake. Соответствующий пакет чаще всего имеет имя pptpd или pptpd-server.

Пакет, поставляемый с системой Linux, обычно проще настраивать, чем универсальный пакет, распространяемый по Internet. Если в вашем дистрибутивном пакете Linux нет инструмента РоРТоР, вы можете скопировать его с Web-узла РоРТоР, расположенного по адресу По умолчанию средства РоРТоР в системе Linux не обеспечивают должного уровня защиты при организации VPN. Причина в том, что РРТР применяет специальные средства кодирования РРР, которые не поддерживаются стандартной программой pppd. В частно сти, работа РРТР базируется на использовании протокола (Microsoft Point-to-Point Encryption — межузловое кодирование Microsoft). Для поддержки кодирования вам надо инсталлировать для стандартной программы pppd и для ядра Linux.

Этот процесс будет описан далее в данной главе.

Установка конфигурации сервера РоРТоР После инсталляции пакета РоРТоР вам надо активизировать его. Для этого выполните следующие действия.

1. Отредактируйте файл /etc/ppp/options. Этот файл управляет работой про граммы pppd, которая поддерживает соединение между VPN-маршрутизатором и удаленной системой РРТР. Файл /etc/ppp/options должен содержать записи наподобие приведенных ниже.

debug name Глава 26. Организация виртуальной частной сети Большинство из этих записей необходимо для работы РРТР. Последняя строка мо жет отсутствовать;

она задает адрес, используемый VPN-маршрутизатором в ло кальной сети (192.168.1.1), и адрес, присваиваемый VPN-клиенту (192.168.1.100).

Если вы не зададите эту строку, будет использоваться IP-адрес, указанный в кон фигурации VPN-клиента. В данном случае имя сервера — это доменное имя VPN сервера.

2. Укажите в файле /etc/ppp/chap-secrets имя пользователя и пароль, которые вы хотите использовать для регистрации. В приведенном ниже примере задано имя пользователя и пароль * vpnpass * ВНИМАНИЕ Пароль хранится в файле /etc/ppp/chap-secrets в незакодированном ви | де, поэтому вам необходимо принять меры для защиты этого файла. Владельцем его должен быть пользователь root и право чтения файла должен иметь толь ко его владелец. Если злоумышленник получит контроль над сервером РоРТоР, он сможет прочитать этот файл. По этой причине на компьютере, выполняю щем функции VPN-маршрутизатора, должно присутствовать как можно меньше серверов.

3. Найдите в файле /etc/inittab ссылку на pptpd и закомментируйте соответ ствующую запись, включив в начало строки символ #. Затем введите команду telinit Q, чтобы внесенные изменения были учтены. В результате вы получите возможность вручную запустить pptpd и протестировать конфигурацию данной программы. После создания конфигурации, пригодной для работы, удалите символ комментариев из соответствующей строки файла или запустите сервер другим способом.

4. От имени пользователя root введите команду pptpd, запустив тем самым сервер.

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

ВНИМАНИЕ Несмотря на то что соединение с РоРТоР без поддержки кодирования позволя | ет проверить конфигурацию системы, это соединение нельзя использовать для реальной работы. Основная цель VPN состоит в том, чтобы обеспечить шиф рование передаваемых данных, поэтому при отключении кодирования средства VPN будут бесполезны.

Работой РРТР управляют также опции, содержащиеся в файле который обычно распо лагается в каталоге /etc или /etc/ppp. /etc/ppp. Некоторые из этих опций описаны ниже.

636 Часть IV. Средства защиты и маршрутизации • debug. Данная опция сообщает РоРТоР о том, что в файл протокола должны быть записаны дополнительные данные. Они могут понадобиться в том случае, если при установлении соединения возникают проблемы.

• localip. Клиент РРТР использует два IP-адреса: один — для локальной сети, вто рой — для удаленного клиента. Локальные IP-адреса можно задать с помощью опции localip. В качестве значения опции задается список адресов, разделенных запяты ми, или диапазон адресов. Например, опция localip 192.

задает адрес и все адреса в диапазоне от до 192.168.9.150. Убедитесь, что другие компьютеры в вашей локальной сети не ис пользуют эти адреса.

• Данная опция задает IP-адреса, используемые удаленными клиентами.

Эти адреса обычно принадлежат диапазону адресов, используемых во внутренних сетях. IP-адреса задаются в таком же формате, как и для опции localip.

• listen. Указав в качестве значения данной опции IP-адрес, связанный с одним интерфейсом, можно сообщить программе pptpd о том, что она должна прини мать обращения только через этот интерфейс. По умолчанию РоРТоР принимает обращения через все интерфейсы.

Обеспечение данных РоРТоР использует программу pppd, которая, в свою очередь, использует средства ядра. В частности, РоРТоР требует, чтобы демон pppd поддерживал кодирование, a pppd требует, чтобы средства поддержки кодирования присутствовали в ядре Linux. Поэтому для шифрования данных при работе РоРТоР необходимо дополнить как pppd, так и ядро системы.

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

• Ядро Linux. Дополненное ядро Linux содержится в файле, имя которого начинается с kernel, например. Некоторые из этих пакетов содержат двоичный код ядра, скомпилированный для конкретного типа системы, а другие — исходный код ядра. Если вы скопируете исходный код, вам надо будет сконфигурировать и скомпилировать его для вашей системы.

• Пакет ррр. Измененный пакет pppd находится в файле 8 6.

rpm или в другом файле с подобным именем. Содержимое пакета надо установить вместо файла pppd.

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

СОВЕТ Если в вашей системе не используется вы можете преобразовать форматы пакетов с помощью утилиты alien. Эта программа входит в состав Debian и поддерживает пакеты Debian и tar-архивы.

Глава 26. Организация виртуальной частной сети Дополненные программы вы также можете получить, обратившись на узел net. Здесь можно найти клиентские программы, паке ты представляющие собой программы pppd с поддержкой МРРЕ, а также модули ядра с поддержкой МРРЕ.

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

• Ядро Linux. Исходный код стандартного ядра Linux можно получить, обратившись на узел / Использовать стандартное ядро Linux предпо чтительнее, чем ядро из дистрибутивного пакета, так как последнее обычно бывает модифицировано, в результате чего внесение изменений может быть затруднено.

• Исходный код pppd. Исходный код демона РРР можно получить по адресу • OpenSSL. требуют, чтобы в вашей системе были установлены OpenSSL и файлы заголовков OpenSSL. Требуемые данные можно скопировать с уз ла • Дополнения к ядру Linux. На узле ррр-mppe/ надо найти файлы, начинающиеся с и заканчивающиеся например • Дополнения к pppd. Дополнения к программе pppd также доступны по адре су Имя соответствующих файлов начинается с ррр и заканчивается gz, например ррр- Для того чтобы исключить несоответствие версий, надо начать с файлов дополне ний, а затем подобрать соответствующие версии ядра и пакета pppd. Чтобы дополнить и использовать полученные средства, надо распаковать архивы с исходными кодами яд ра и pppd, распаковать файлы дополнений (выполнив команду дополнить исходные коды (cd patch < сконфигурировать пакеты (make или make — для ядра Linux и. — для pppd), скомпилировать пакеты (make и make modules — для ядра Linux и make — для pppd) и инсталлировать пакеты (выполнив команду make modules\_install и сконфигу рировав LILO для Linux, а также выполнив команду make install для pppd).

Независимо от используете ли вы дополненные варианты или допол нили коды и скомпилировали программы самостоятельно, для того, чтобы обеспечить поддержку кодирования, надо перезагрузить компьютер с указанием нового ядра.

Настройка РРТР-клиента Если предназначен для выполнения в системе Windows, настроить его для работы с РоРТоР несложно, так как в системе Windows предусмотрена поддержка РРТР. Для обеспечения работы РРТР-клиента в системе Linux требуется дополнительное программное обеспечение. В любом случае после установления VPN-соединения VPN 638 Часть IV. Средства защиты и маршрутизации клиент работает так, как будто он является частью локальной сети. Отличие от реаль ной работы в локальной сети состоит в том, что скорость обмена оказывается гораздо меньшей.

Использование РРТР-клиента в системе Linux РоРТоР — это РРТР-сервер, выполняющийся в системе Linux. Для чтобы обес печить взаимодействие компьютера, работающего под управлением Linux, с РоРТоР или другим РРТР-сервером, необходим дополнительный программный пакет PPTP-Linux. Его можно обратившись по адресу или На узле http:

содержатся исходные коды PPTP-Linux в виде TAR-архивов и в формате а также двоичный код для процессоров х86 и Alpha. Вам следует скопировать пакет PPTP-Linux и, если необходимо, скомпилировать его и уста новить на свой компьютер.

Подобно РоРТоР, для поддержки кодирования PPTP-Linux использует программу pppd и средства ядра. Поэтому, чтобы могли установить соединения с шифрованием передаваемых данных, вам надо внести изменения в состав pppd и ядра. Способ вне сения необходимых изменений рассматривался в предыдущем разделе. Требуемые для этого инструментальные средства содержатся на узле PPTP-Linux.

В состав пакета PPTP-Linux входит сценарий инсталляции Для уста новки PPTP-Linux необходимо выполнить следующие действия.

1. Запустите сценарий по команде pptp-command.

2. Сценарий выведет список из четырех опций: start, stop, setup и quit. Для активи зации процедуры установки введите число 3. Сценарий отобразит список из девяти пунктов, соответствующих вариантам на стройки. Введите 2, чтобы выбрать пункт Add a New CHAP secret.

4. Система запросит локальное имя вашей системы. Это имя будет присвоено системе при работе в VPN. Если VPN-маршрутизатор выполняется в системе Windows, вам надо задать имя домена NetBIOS. Например, вы можете указать arbor\\maple, в результате чего ваша система получит имя maple в домене arbor.

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

6. Система запросит пароль. Этот пароль должен совпадать с паролем, заданным при настройке РоРТоР или другого VPN-сервера.

7. Сценарий снова отобразит список из девяти пунктов, позволяющий выбрать вариант настройки. На этот раз вам надо выбрать пункт 5 Add a NEW PPTP Tunnel.

8. Система отобразит список туннелей. Вероятнее всего, этот список будет пустым;

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

Глава 26. Организация виртуальной частной сети 9. Система запросит определение туннеля, в частности имя, IP-адрес VPN-сервера и атрибуты маршрутизации. Атрибуты маршрутизации совпадают с параметрами команды route. Например, выражение add -host 172.19.87.1 gw указывает на то, что система должна использовать адрес 172.19.87.1 в качестве шлюза по умолчанию.

10. Сценарий еще раз выведет список из девяти пунктов. Выберите пункт 7 Configure resolv.conf.

Выберите конфигурацию туннеля, созданную на шаге 9. Система запросит DNS информацию, которая будет помещена в файл Введите соот ветствующие данные.

12. Список из девяти пунктов появится на экране снова. Выберите пункт 8 Select a default tunnel.

13. Система запросит имя туннеля по умолчанию. Выберите туннель, созданный на шаге 9 (или любой другой).

14. При очередном появлении списка из девяти пунктов выберите пункт 9 Quit. Это приведет к завершению программы установки.

После выполнения описанных выше действий программа готова к взаи модействию с РРТР-сервером. Для подготовки РРТР VPN-соединения используется сце нарий В списке, отображаемом на 3, надо выбрать пункт 1 (start).

Программа запросит номер туннеля. После указания этого номера подготовка РРТР VPN соединения завершится.

Проверить настройку VPN-соединения можно в таблице маршрутизации либо при подготовке к взаимодействию с сервером в системе VPN. Если VPN-сервер не досту пен, проверьте VPN-маршрутизатор с помощью утилиты ping. Вы также можете ис пользовать программу traceroute, чтобы выяснить, проходят ли пакеты через VPN соединение. Если по обычному Internet-соединению пакеты проходят, это означает, что таблица маршрутизации составлена некорректно. Если путь к VPN-системам через VPN РРР-соединение отсутствует, Linux попытайтесь направить пакеты в сеть через обычное соединение.

Использование РРТР-клиента в системе Windows Очень часто устанавливаются на компьютерах под управлением Win dows, которые используют сотрудники, вынужденные часто работать вне офиса. РРТР клиенты входят в состав систем Windows и Windows но по умолчанию они не инсталлируются. Программное обеспечение РРТР будет работать только при нали чии действующего Internet-соединения. Ниже описана процедура запуска РРТР-клиента в системе Windows Me.

1. Дважды щелкните на пиктограмме Add/Remove Programs в окне Control Panel.

В результате на экране отобразится диалоговое окно Add/Remove Programs Prop erties.

2. В окне Add/Remove Programs Properties щелкните на вкладке Windows Setup.

640 Часть IV. Средства защиты и маршрутизации Рис. 26.3. При создании VPN-соединения выби райте Microsoft VPN Adapter, а не модем, через который устанавливается соединение 3. Дважды щелкните на пункте Communications списка типов компонентов. На экране появится диалоговое окно Communications.

4. В окне Communications выберите пункт Virtual Private Networking.

Щелкните на кнопке ОК сначала в окне Communications, а затем в окне Add/Remove Programs Properties. В результате в системе Windows будет установлено программ ное обеспечение РРТР. Если вам будет предложено перезагрузить компьютер, сде лайте это.

Pages:     | 1 |   ...   | 11 | 12 || 14 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.