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

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

Содержание


Другие соображения
Подобный материал:
1   ...   65   66   67   68   69   70   71   72   ...   101

Другие соображения


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


ПРИМЕЧАНИЕ

Как правило, маскировка IP применяется для того, чтобы обеспечить использование в вашей внутренней сети одного из частных диапазонов IP-адресов. Частный диапазон IP-адресов — это специально зарезервированный диапазон, в который входят адреса, не предназначенные для маршрутизации через Интернет. Ни один из маршрутизаторов Интернета не будет пропускать пакеты, ассоциированные с IP-адресами из частного диапазона. Однако маскировку IP можно использовать не только совместно с частными диапазонами IP-адресов. Вы можете маскировать и маршрутизируемые IP-адреса. Все же концепция IP-маскировки в первую очередь разработана для того, чтобы расширить доступное адресное пространство IP.

Более того, до тех пор пока вы не настроите все должным образом, пользователи внутри сети, пытающиеся использовать стандартного клиента FTP (то есть не того, который встроен в Netscape), не смогут загружать файлы из Интернета. Это происходит потому, что стандартные клиенты FTP используют активный режим FTP. Для соединения с сервером FTP используется стандартный порт 21. Сервер отвечает через случайно выбранный на стадии установления соединения порт с номером выше 1024. Вы получаете возможность подключиться и даже перемещаться по каталогам. Однако как только вы попытаетесь получить содержание каталога или загрузить файл, имя и местоположение которого вам известно, вы получаете сообщение об ошибке. Причина в том, что по умолчанию сервер FTP открывает второй канал — канал данных — через порт 20 и пытается соединиться с клиентом для того, чтобы передать ему данные. (Кстати говоря, именно по этой причине серверу FTP можно приказать передать интересующий вас файл третьему лицу — изначальное соединение не используется, устанавливается второе соединение, которое может быть перенаправлено на любую другую систему, с которой может соединиться FTP-сервер, если только FTP-сервер, в частности такой, как в OpenLinux, не запрещает этого делать.)


ПРИМЕЧАНИЕ

Маскировка IP и proxy — это две разных концепции, которые можно использовать как по отдельности, так и совместно — в комбинации.


ССЫЛКА

Более подробно о proxy рассказывается в главе 17.

Проблема, которая возникает у FTP-сервера, пытающегося соединиться с обращающимся к нему клиентом, проиллюстрирована на рис. 18.4. Клиент соединяется с сервером через порт 21. Клиент (HostB с IP-адресом 192.168.0.2) соединяется с FTP-сервером в Интернете. Однако чтобы осуществить это, клиент HostB должен преодолеть шлюз HostA с IP-адресом 192.168.0.1. Когда узел HostA принимает пакеты, предназначенный для FTP-сервера, он маскирует эти пакеты таким образом, будто бы они исходят из интерфейса, связывающего узел HostA с Интернетом. Иными словами, в качестве адреса-источника пакетов подставляется IP-адрес 123.45.67.89 (адрес узла HostA в Интернете). Получив запрос на соединение, сервер FTP думает, что этот запрос исходит от узла с адресом 123.45.67.89 через порт 21. Таким образом, когда наступает время открыть второй канал, то есть канал данных, сервер пытается соединиться с клиентом по адресу 123.45.67.89 через порт 20. Однако узел HostA, которому принадлежит этот адрес, не ожидает поступления каких-либо соединений через порт 20, поэтому он отклоняет запрос на соединение. А в это время клиент, расположенный за брандмауэром, продолжает ожидание входящего соединения через порт 20, однако запрос на это соединение до него никогда не дойдет. Это потому, что узел HostA и не подозревает о том, что узел HostB ожидает входящего соединения.



К счастью, разработчики Linux хорошо знают об этой проблеме. Вы можете воспользоваться одним из двух решений. Первое решение предусматривает использование пассивного режима работы FTP. Такой режим используется браузером Netscape Navigator, который позволяет загружать файлы с FTP-сервера, в то время как обычный FTP-клиент не может этого сделать. При использовании пассивного режима FTP сервер не пытается соединиться с клиентом через отдельный канал данных, вместо этого он терпеливо ждет, пока клиент откроет соединение через изначальный канал команд (порт 21). Второе решение является более элегантным и позволяет использовать FTP через брандмауэр в активном режиме. Для этого необходимо убедиться, что ваше ядро собрано с включением в него специальных модулей маскировки IP, содержащихся в разделе Networking Options (сетевые параметры). В листинге 18.1 показана конфигурация ядра, а в листинге 18.2 -перечень модулей, собранных в соответствии с данным списком.


ССЫЛКА

Более подробно о сборке ядра Linux с поддержкой ipchains рассказывается в главе 16.


Листинг 18.1. Конфигурация ядра для модулей маскировки IP

CONFIG_IP_MASQUERADE_ICMP=y

CONFIG_IP_MASQUERADE_MOD=y

CONFIG_IP_MASQUERADE_IPAUTOFW=m

CONFIG_IP_MASQUERADE_IPPORTFW=m

CONFIG_IP_MASQUERADE_MFW=m

В листинге 18.1 показано содержимое файла /usr/src/linux/.config после того, как этот файл настроен для маскировки IP. Первая строка добавляет в маскирующий раздел ядра код, который позволяет передачу пакетов ICMP. По умолчанию ядро передает только TCP и UDP. Протокол ICMP является самостоятельным протоколом, и его передача через сеть не зависит от IP, поэтому, включив в конфигурацию ядра данную строку, вы тем самым разрешаете распознавание заголовков ICMP и передачу соответствующих пакетов через сеть. Без этого пакеты ping, равно как и пакеты tracerout, отправляемые системами Microsoft, не будут передаваться через данный узел (протокол ICMP используется для tracerout только на системах Microsoft, все остальные системы используют для этой цели UDP, таким образом, если вы хотите обеспечить работу tracerout только для систем, отличных от Microsoft, вы можете не включать ICMP).

Вторая строка формирует набор модулей. Все эти модули, а также модули, соответствующие последним трем строкам листинга 18.1, перечислены в листинге 18.2. В результате добавления в конфигурацию этих трех строк формируются модули ip_masq_autofw.o (для протоколов, не отмеченных специально), ip_masq_ portfw.o (для обеспечения работы перенаправления портов) и ip_masq_mfw.o (для обеспечения работы перенаправления пометок ipchains). Последний модуль в файле электронной помощи ядра ошибочно называется именем ip_masq_markfw.

Эти модули не загружаются автоматически, как это происходит с другими модулями. Если вы намерены воспользоваться предлагаемыми ими функциями, вы должны загрузить их либо во время начальной загрузки, либо вручную. В системе OpenLinux чтобы выполнить загрузку модулей в процессе начальной загрузки операционной системы, необходимо добавить их имена в файл /etc/modules/ default (при этом не следует добавлять к имени окончание .о). Вы также должны убедиться в том, что порт 20 не блокирован. Теперь, если обеспечить загрузку модуля ip_masq_ftp, ваш маскирующий брандмауэр сможет обнаружить, что FTP работает в активном режиме, в результате обратное соединение сервера с клиентом будет пропущено через брандмауэр во внутреннюю сеть. Как можно заметить, существуют аналогичные модули, предназначенные для пропуска во внутреннюю сеть соединений CUSeeMe, IRC, QUAKE, RealAUDIO, ViDeO LIVE и других специальных пользовательских протоколов. Ядро распознает соединения между сервером и клиентом на основе IP-адресов, портов и порядковых номеров пакетов. Модули не загружаются автоматически, однако их можно загрузить в процессе начальной загрузки ОС. В разных комплектах Linux для этой цели могут использоваться разные конфигурационные файлы. Например, в Debian для этой цели используется файл /etc/modules, в котором содержится список модулей, которые необходимо загрузить. В комплекте Caldera OpenLinux 2.3 имена модулей следует добавить в файл /etc/modules/default. В других комплектах имя и местоположение подобного файла может быть иным — вы должны свериться с электронной документацией вашего комплекта. Вместо того чтобы загружать модули в процессе начальной загрузки, вы можете выполнить загрузку модуля вручную из командной строки. Сделать это можно непосредственно перед тем, как возникнет необходимость в использовании некоторого модуля. Загрузить модуль можно при помощи следующей команды:

modprobe <имя_модуля>

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


Листинг 18.2. Модули маскировки

ip_masq_autofw.o

i p_masq_cuseeme.о

ip_masq_ftp.o

ip_masq_irc.o

ip_masq_mfw.o

ip_masq_portfw.o

ip_masq_quake.o

ip_masq_raudio.o

ip_masq_user.o

ip_masq_vdolive.o


ПРИМЕЧАНИЕ

При использовании ядра новой серии Linux 2.4.x (которое еще не было выпущено на момент написания данной книги) все эти модули вам не потребуются. В отличие от работающей совместно с ядрами 2.2.x программы ipchains новое программное обеспечение netfilter, обеспечивающее работу брандмауэра, не является программой пользовательского режима. Благодаря этому данная программа работает быстрее.