mirror of
https://gitlab.com/shorewall/code.git
synced 2024-11-21 15:13:10 +01:00
c93817f30b
The invariant sections clause doesn't quite match the official text. It should read: with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts not: with no Invariant Sections, with no Front-Cover, and with no Back-Cover Texts Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
1078 lines
68 KiB
XML
1078 lines
68 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
|
||
<article id="three-interface">
|
||
<!--$Id$-->
|
||
|
||
<articleinfo>
|
||
<title>Файервол с тремя интерфейсами</title>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Tom</firstname>
|
||
|
||
<surname>Eastep</surname>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<pubdate><?dbtimestamp format="Y/m/d"?></pubdate>
|
||
|
||
<copyright>
|
||
<year>2002-2005</year>
|
||
|
||
<holder>Thomas M. Eastep</holder>
|
||
</copyright>
|
||
|
||
<legalnotice>
|
||
<para>Permission is granted to copy, distribute and/or modify this
|
||
document under the terms of the GNU Free Documentation License, Version
|
||
1.2 or any later version published by the Free Software Foundation; with
|
||
no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
||
Texts. A copy of the license is included in the section entitled
|
||
<quote><ulink url="GnuCopyright.htm">GNU Free Documentation
|
||
License</ulink></quote>.</para>
|
||
</legalnotice>
|
||
</articleinfo>
|
||
|
||
<caution>
|
||
<para><emphasis role="bold">Эта статья применима для Shorewall версии 3.0
|
||
и выше. Если Вы работаете с более ранней версией Shorewall чем Shorewall
|
||
3.0.0, тогда смотрите документацию для этого выпуска.</emphasis></para>
|
||
</caution>
|
||
|
||
<section>
|
||
<title>Введение</title>
|
||
|
||
<para>Установка Linux системы как файервола для небольшой сети довольно
|
||
простая задача, если Вы понимаете основы и следуете документации.</para>
|
||
|
||
<para>Это руководство не пытается ознакомить Вас со всеми особенностями
|
||
Shorewall. Оно больше сфокусировано на том, что требуется для настройки
|
||
Shorewall в наиболее типичных конфигурациях:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Linux система, используемая как файервол/маршрутизатор для
|
||
небольшой локальной сети.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Один внешний (публичный) <acronym>IP</acronym>-адрес.</para>
|
||
|
||
<note>
|
||
<para>Если Вы имеете более одного публичного
|
||
<acronym>IP</acronym>-адреса, это руководство не то, что Вам нужно.
|
||
Смотрите вместо этого <ulink
|
||
url="shorewall_setup_guide.htm">Руководство по установке
|
||
Shorewall</ulink>.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>DeMilitarized Zone</emphasis> (<acronym>DMZ</acronym>)
|
||
подсоединена к отдельному интерфейсу Ethernet. Цель
|
||
<acronym>DMZ</acronym> - изолировать те Ваши локальные серверы,
|
||
которые открыты для Интернет так, что если один из этих серверов
|
||
скомпрометирован, остается еще файервол между взломанным сервером и
|
||
Вашими локальными системами.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Интернет-соединение посредством кабельного модема,
|
||
<acronym>DSL</acronym>, <acronym>ISDN</acronym>, Frame Relay,
|
||
коммутирумой линии ...</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Вот схема типичной установки:</para>
|
||
|
||
<figure>
|
||
<title>schematic of a typical installation</title>
|
||
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata align="center" fileref="images/dmz1.png" format="PNG" />
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
|
||
<section>
|
||
<title>Системные требования</title>
|
||
|
||
<para>Shorewall требует, чтобы у Вас был установлен пакет
|
||
<command>iproute</command>/<command>iproute2</command> (на
|
||
<trademark>RedHat</trademark>, этот пакет называется<command>
|
||
iproute</command>). Вы можете определить установлен ли этот пакет по
|
||
наличию программы <command>ip</command> на Вашем файерволе. Как root, Вы
|
||
можете использовать команду <command>which</command> для проверки
|
||
наличия этой программы:<programlisting>[root@gateway root]# <command>which ip</command>
|
||
/sbin/ip
|
||
[root@gateway root]#</programlisting></para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Перед тем как начать</title>
|
||
|
||
<para>Я рекомендую Вам прочитать все руководство для первоначального
|
||
ознакомления, а лишь затем пройти его снова, внося изменения в Вашу
|
||
конфигурацию.</para>
|
||
|
||
<caution>
|
||
<para>Если Вы редактируете Ваши файлы конфигурации на
|
||
<trademark>Windows</trademark> системе, Вы должны сохранить их как
|
||
<trademark>Unix</trademark> файлы в том случае, если Ваш редактор
|
||
поддерживает эту возможность, иначе Вы должны пропустить их через
|
||
программу <command>dos2unix</command> перед тем как использовать их.
|
||
Аналогично, если Вы копируете конфигурационный файл с Вашего жесткого
|
||
диска с Windows на дискету, Вы должны воспользоваться
|
||
<command>dos2unix</command> для копии перед ее использованием с
|
||
Shorewall. <itemizedlist>
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.simtel.net/pub/pd/51438.html"><trademark>Windows</trademark>
|
||
версия <command>dos2unix</command></ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.megaloman.com/%7Ehany/software/hd2u/">Linux
|
||
версия <command>dos2unix</command></ulink></para>
|
||
</listitem>
|
||
</itemizedlist></para>
|
||
</caution>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Conventions</title>
|
||
|
||
<para>Места, в которых рекомендуется вносить изменения, отмечены как
|
||
<inlinegraphic fileref="images/BD21298_.gif" format="GIF" />.</para>
|
||
|
||
<para>Замечания по настройке уникальные для проекта LEAF/Bering,
|
||
отмечены как <inlinegraphic fileref="images/leaflogo.gif"
|
||
format="GIF" />.</para>
|
||
</section>
|
||
</section>
|
||
|
||
<section>
|
||
<title>PPTP/ADSL</title>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Если У Вас есть <acronym>ADSL</acronym> модем и Вы используете
|
||
<acronym>PPTP</acronym> для взаимодействия с сервером на этом модеме, Вы
|
||
должны сделать изменения рекоммендуемые <ulink
|
||
url="PPTP.htm#PPTP_ADSL">здесь</ulink> <emphasis role="bold"><emphasis
|
||
role="underline"><emphasis>в дополнение к тем, что описаны в последующих
|
||
шагах</emphasis></emphasis></emphasis>. <acronym>ADSL</acronym> с
|
||
<acronym>PPTP</acronym> наиболее распространен в Европе, особенно в
|
||
Австрии.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Концепции Shorewall</title>
|
||
|
||
<para>Конфигурационные файлы Shorewall находятся в директории <filename
|
||
class="directory">/etc/shorewall</filename> -- в случае простой установки
|
||
Вам необходимо иметь дело только с немногими из них, как описано в этом
|
||
руководстве.</para>
|
||
|
||
<para><warning>
|
||
<para><emphasis role="bold">Замечание для пользователей
|
||
Debian</emphasis></para>
|
||
|
||
<para>Если Вы при установке пользовались .deb, Вы обнаружите, что
|
||
директория <filename class="directory">/etc/shorewall</filename>
|
||
пуста. Это сделано специально. Поставляемые шаблоны файлов
|
||
конфигурации Вы найдете на вашей системе в директории <filename
|
||
class="directory">/usr/share/doc/shorewall-common/default-config</filename>.
|
||
Просто скопируйте нужные Вам файлы из этой директории в <filename
|
||
class="directory">/etc/shorewall</filename> и отредактируйте
|
||
копии.</para>
|
||
|
||
<para>Заметьте, что Вы должны скопировать <filename
|
||
class="directory">/usr/share/doc/shorewall-common/default-config/shorewall.conf</filename>
|
||
и <filename
|
||
class="directory">/usr/share/doc/shorewall-common/default-config/modules</filename>
|
||
в <filename class="directory">/etc/shorewall</filename> даже если Вы
|
||
не будете изменять эти файлы.</para>
|
||
</warning><inlinegraphic fileref="images/BD21298_.gif"
|
||
format="GIF" /></para>
|
||
|
||
<para>После того как Вы <ulink url="Install.htm">установили
|
||
Shorewall</ulink>, Вы можете найти примеры файлов настроек в следующих
|
||
местах:</para>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>Если Вы при установке использовали <acronym>RPM</acronym>,
|
||
примеры будут находится в поддиректории <filename
|
||
class="directory">Samples/three-interface</filename> директории с
|
||
документацией Shorewall. Если Вы не знаете где расположена директория
|
||
с документацией Shorewall, Вы можете найти примеры используя
|
||
команду:</para>
|
||
|
||
<programlisting>~# rpm -ql shorewall | fgrep three-interfaces
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/interfaces
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/masq
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/policy
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/routestopped
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/rules
|
||
/usr/share/doc/packages/shorewall/Samples/three-interfaces/zones
|
||
~#</programlisting>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если Вы установили Shorewall из tarball'а, примеры находятся в
|
||
директории <filename
|
||
class="directory">Samples/three-interface</filename> внутри
|
||
tarball'а.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если же Вы пользовались пакетом .deb, примеры находятся в
|
||
директории<filename
|
||
class="directory">/usr/share/doc/shorewall-common/examples/three-interface</filename>.</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<para>По мере того как мы будем знакомится с каждым файлом, я надеюсь, что
|
||
Вы просмотрите реальный файл на вашей системе -- каждый файл содержит
|
||
детальное описание конфигурационных инструкций и значений по
|
||
умолчанию.</para>
|
||
|
||
<para>Shorewall видит сеть, в которой он работает, как состоящую из набора
|
||
<emphasis>зон(zones)</emphasis>. В примере конфигурации с тремя
|
||
интерфейсами, определены следующие зоны:</para>
|
||
|
||
<programlisting>#ZONE TYPE OPTIONS IN OUT
|
||
# OPTIONS OPTIONS
|
||
fw firewall
|
||
net ipv4
|
||
loc ipv4
|
||
dmz ipv4</programlisting>
|
||
|
||
<para>Зоны Shorewall описаны в файле <ulink
|
||
url="manpages/shorewall-zones.html"><filename>/etc/shorewall/zones</filename></ulink>.</para>
|
||
|
||
<para>Заметьте, что Shorewall рассматривает систему файервола как свою
|
||
собственную зону. При обработке файла
|
||
<filename>/etc/shorewall/zones</filename> имя зоны файервола
|
||
(<quote>fw</quote> в примере выше) храниться в переменной shell
|
||
<firstterm>$FW</firstterm>, которая может использоваться во всей
|
||
конфигурации Shorewall для ссылки на сам файервол.</para>
|
||
|
||
<para>Правила о том какой трафик разрешен, а какой запрещен выражаются в
|
||
терминах зон.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Вы отражаете Вашу политику по умолчанию для соединений из одной
|
||
зоны в другую в файле<ulink
|
||
url="manpages/shorewall-policy.html"><filename>/etc/shorewall/policy</filename></ulink>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Вы определяете исключения из политики по умолчанию в файле
|
||
<ulink
|
||
url="manpages/shorewall-rules.html"><filename>/etc/shorewall/rules</filename></ulink>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Для каждого запроса на соединение входящего в файервол, запрос
|
||
сначала проверяется на соответствие файлу<filename><filename>
|
||
/etc/shorewall/rules</filename></filename>. Если в этом файле не найдено
|
||
правил соответствующих запросу на соединение, то применяется первая
|
||
политика из файла <filename>/etc/shorewall/policy</filename>, которая
|
||
соответсвует запросу. Если есть <ulink
|
||
url="shorewall_extension_scripts.htm">общее действие (common
|
||
action</ulink>) определенное для политики в файле
|
||
<filename>/etc/shorewall/actions</filename> или
|
||
<filename>/usr/share/shorewall/actions.std</filename>, тогда это действие
|
||
выполняется перед тем как .</para>
|
||
|
||
<para>Файл <filename>/etc/shorewall/policy,</filename> входящий в пример с
|
||
тремя интерфейсами, имеет следующие политики:</para>
|
||
|
||
<programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
||
loc net ACCEPT
|
||
net all DROP info
|
||
all all REJECT info</programlisting>
|
||
|
||
<para>В примере с тремя интерфейсами строка показанная внизу
|
||
закомментирована. Если Вы хотите, чтобы Ваш файервол имел полный доступ к
|
||
серверам Интернет, раскомментируйте эту строчку. <programlisting>#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
||
$FW net ACCEPT</programlisting>Политики приведенные выше
|
||
будут:</para>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>разрешать все запросы на соединение из Вашей локальной сети в
|
||
Интернет;</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>отбрасывать (игнорировать) все запросы на соединение из Интернет
|
||
к Вашему файерволу или локальной сети;</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Опционально разрешать все запросы на соединение с файервола в
|
||
Интернет (если Вы раскомментировали дополнительную политику);</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>отвергать все другие запросы на соединение (Shorewall требует
|
||
наличия такой политики, применимой для всех остальных
|
||
запросов).</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<para>Важно отметить, что политики Shorewall (и правила) ссылаются на
|
||
<emphasis role="bold">соединения</emphasis>, а не на поток пакетов. С
|
||
политикой определенной в файле<filename class="directory">
|
||
/etc/shorewall/policy</filename>, показанной выше, разрешены соединения из
|
||
зоны <quote>loc</quote> в зону <quote>net</quote>, хотя на сам файервол
|
||
соединения из зоны <quote>loc</quote> не разрешены.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>В данный момент Вы можете отредактировать ваш файл
|
||
<filename>/etc/shorewall/policy</filename> и внести изменения, какие Вы
|
||
считаете необходимыми.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Сетевые интерфейсы</title>
|
||
|
||
<figure>
|
||
<title>DMZ</title>
|
||
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata align="center" fileref="images/dmz1.png" format="PNG" />
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
|
||
<para>Файервол имеет три сетевых интерфейса. Если соединение с Интернет
|
||
осуществляется при помощи кабельного или <acronym>DSL</acronym>
|
||
<quote>Модема</quote>, <emphasis>Внешним интерфейсом</emphasis> будет тот
|
||
ethernet-адаптер (например, <filename class="devicefile">eth0</filename>),
|
||
который подсоединен к этому <quote>Модему</quote>, <emphasis
|
||
role="underline">если же</emphasis> Вы соединены посредством протокола
|
||
<emphasis>Point-to-Point Protocol over Ethernet</emphasis>
|
||
(<acronym>PPPoE</acronym>) или <emphasis>Point-to-Point Tunneling
|
||
Protocol</emphasis> (<acronym>PPTP</acronym>), то в этом случае
|
||
<emphasis>Внешним интерфейсом</emphasis> будет <acronym>PPP</acronym>
|
||
интерфейс (например, <filename class="devicefile">ppp0</filename>). Если
|
||
Вы подсоединены через обычный модем, Вашим <emphasis>Внешним
|
||
интерфейсом</emphasis> будет также <filename
|
||
class="devicefile">ppp0</filename>. Если Вы соединяетесь используя
|
||
<acronym>ISDN</acronym>, <emphasis>Внешним интерфейсом</emphasis> будет
|
||
<filename class="devicefile">ippp0</filename>.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para><emphasis role="bold">Если Ваш внешний интерфейс - это <filename
|
||
class="devicefile">ppp0</filename> или <filename
|
||
class="devicefile">ippp0</filename>, тогда Вы можете захотеть установить
|
||
переменную <varname>CLAMPMSS=yes</varname> в <filename
|
||
class="directory">/etc/shorewall/</filename><filename>shorewall.conf</filename></emphasis>.</para>
|
||
|
||
<para>Ваш <emphasis>Внешний интерфейс</emphasis> будет ethernet-адаптер
|
||
(<filename class="devicefile">eth0</filename>, <filename
|
||
class="devicefile">eth1</filename> or <filename
|
||
class="devicefile">eth2</filename>) и будет соединен с
|
||
<emphasis>хабом</emphasis> или <emphasis>коммутатором</emphasis>. Другие
|
||
Ваши компьютеры будут соединены с тем же хабом/коммутатором (заметьте:
|
||
если Вы имеете только одну внутреннюю систему, Вы можете соединить
|
||
файервол с этим компьютером напрямую, используя кроссоверный (cross-over)
|
||
кабель.</para>
|
||
|
||
<para>Ваш <acronym>DMZ</acronym>-bynthatqc будет ethernet-адаптер
|
||
(<filename class="devicefile">eth0</filename>, <filename
|
||
class="devicefile">eth1</filename> or <filename
|
||
class="devicefile">eth2</filename>) и будет соединен с хабом или
|
||
комутатором. Другие Ваши компьютеры из <acronym>DMZ</acronym> будут
|
||
соединены с тем же хабом/коммутатором (заметьте: если Вы имеете только
|
||
одну систему в <acronym>DMZ</acronym>, Вы можете соединить файервол с этим
|
||
компьютером напрямую, используя кроссоверный (cross-over) кабель.</para>
|
||
|
||
<caution>
|
||
<para><emphasis role="bold">НЕ подсоединяйте внутренний и внешний
|
||
интерфейсы к одному т тому же хабу или коммутатору исключая время
|
||
тестирование</emphasis>.Вы можете провести тестирование используя данную
|
||
конфигурацию, если Вы указали параметр <varname>ARP_FILTER</varname> в
|
||
<filename
|
||
class="directory">/etc/shorewall/</filename><filename>interfaces</filename>
|
||
для всех интерфейсов подсоединенных к общему хабу/коммутатору. <emphasis
|
||
role="bold">Использовать такие установки на рабочем файерволе строго не
|
||
рекоммендуется</emphasis>.</para>
|
||
</caution>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Пример конфигурации Shorewall с тремя интерфейсами подразумевает,
|
||
что внешний интерфейс - это <filename class="devicefile">eth0</filename>,
|
||
внутренний - <filename class="devicefile">eth1</filename>, а
|
||
<acronym>DMZ</acronym> - <filename class="devicefile">eth2</filename>.
|
||
Если Ваша конфигурация отличается, Вы должны будете изменить пример файл
|
||
<filename
|
||
class="directory">/etc/shorewall/</filename><filename>interfaces</filename>
|
||
соответственно. Пока Вы здесь, Вы возможно захотите просмотреть список
|
||
опций, специфичных для интерфейса. Вот несколько подсказок:</para>
|
||
|
||
<tip>
|
||
<para>Если Ваш внешний интерфейс <filename
|
||
class="devicefile">ppp0</filename> или <filename
|
||
class="devicefile">ippp0</filename>, Вы можете заменить
|
||
<quote>detect</quote>(обнаружить) во втором столбце на
|
||
<quote>-</quote>(знак минус в ковычках).</para>
|
||
</tip>
|
||
|
||
<tip>
|
||
<para>Если Ваш внешний интерфейс <filename
|
||
class="devicefile">ppp0</filename> или <filename
|
||
class="devicefile">ippp0</filename> или Вы имеете статический
|
||
<acronym>IP</acronym>-адрес, Вы можете удалить <quote>dhcp</quote> из
|
||
списка опций.</para>
|
||
</tip>
|
||
</section>
|
||
|
||
<section>
|
||
<title>IP-адреса</title>
|
||
|
||
<para>Перед тем как идти дальше, мы должны сказать несколько слов о
|
||
<emphasis>Internet Protocol</emphasis> (<acronym>IP</acronym>)-адресах.
|
||
Обычно, Ваш Интернет-провайдер<emphasis>(Internet Service
|
||
Provider</emphasis> - <acronym>ISP</acronym>) назначает Вам один
|
||
<acronym>IP</acronym>-адрес. Этот адрес может быть назначен статически,
|
||
при помощи <emphasis>Протокола Динамического Конфигурирования Хостов
|
||
(Dynamic Host Configuration Protocol</emphasis> -
|
||
<acronym>DHCP</acronym>), в процессе установки Вами коммутированного
|
||
соединения (обычный модем), или при установке Вами другого типа
|
||
<acronym>PPP</acronym> (<acronym>PPPoA</acronym>, <acronym>PPPoE</acronym>
|
||
и т.д.) соединения. В последнем случае Ваш <acronym>ISP</acronym> может
|
||
назначит Вам статический <acronym>IP</acronym>-адрес; что означает, что Вы
|
||
настраиваете внешний интерфейс Вашего файервола на использование этого
|
||
адреса постоянно. Как бы ни был назначен Вам внешний адрес, он будет
|
||
разделяться между всеми Вашими системами при доступе в Интернет. Вы должны
|
||
будете назначить свои собственные адреса в Вашей внутренней сети
|
||
(внутренний и <acronym>DMZ</acronym> интерфейсы на Вашем файерволе, плюс
|
||
другие Ваши компьютеры). <acronym>RFC-1918</acronym> резервирует несколько
|
||
<emphasis>Частных (Private)</emphasis> <acronym>IP</acronym>-адресов для
|
||
этих целей:</para>
|
||
|
||
<programlisting>10.0.0.0 - 10.255.255.255
|
||
172.16.0.0 - 172.31.255.255
|
||
192.168.0.0 - 192.168.255.255</programlisting>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Перед запуском Shorewall, <emphasis role="bold">Вы должны взглянуть
|
||
на IP-адрес Вашего внешнего интерфейса и если он входит в один указанных
|
||
выше пазонов, Вы должны удалить опцию <quote>norfc1918</quote> из строки
|
||
для внешнего интерфейса в файле <filename
|
||
class="directory">/etc/shorewall/</filename><filename>interfaces</filename>.</emphasis></para>
|
||
|
||
<para>Вы можете захотеть назначить Ваши локальные адреса из одной подсети
|
||
(subnet), а адреса <acronym>DMZ</acronym> из другой подсети . Для наших
|
||
целей мы можем рассматривать подсеть состоящую из диапазона адресов
|
||
<varname>x.y.z.0 - x.y.z.255</varname>. Такая подсеть будет иметь
|
||
<emphasis>Маску Подсети</emphasis> (<emphasis>Subnet Mask</emphasis>) -
|
||
<systemitem class="netmask">255.255.255.0</systemitem>. Адрес
|
||
<varname>x.y.z.0</varname> зарезервирован как <emphasis>Адрес Подсети
|
||
(Subnet Address)</emphasis>, а <varname>x.y.z.255</varname> как
|
||
<emphasis>Широковещательный Адрес Подсети (Subnet Broadcast
|
||
Address</emphasis>). В Shorewall подсеть описывается с использованием
|
||
нотации <ulink url="shorewall_setup_guide.htm#Subnets">Бесклассовой
|
||
Междоменной Маршрутизации (Classless InterDomain Routing</ulink> -
|
||
<acronym>CIDR</acronym> notation) с адресом посети оканчивающимся
|
||
<varname>/24</varname>. <quote>24</quote> указывает число непрерывных
|
||
ведущих бит установленных в <quote>1</quote> слева в маске подсети.</para>
|
||
|
||
<table>
|
||
<title>Example sub-network</title>
|
||
|
||
<tgroup cols="2">
|
||
<colspec align="left" />
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>Диапазон:</entry>
|
||
|
||
<entry><systemitem class="ipaddress">10.10.10.0</systemitem> -
|
||
<systemitem class="ipaddress">10.10.10.255</systemitem></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Адрес подсети:</entry>
|
||
|
||
<entry><systemitem
|
||
class="ipaddress">10.10.10.0</systemitem></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Широковещательный адрес:</entry>
|
||
|
||
<entry><systemitem
|
||
class="ipaddress">10.10.10.255</systemitem></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Нотация CIDR::</entry>
|
||
|
||
<entry><systemitem
|
||
class="ipaddress">10.10.10.0/24</systemitem></entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<para>Удобно назначать внутреннему интерфейсу либо первый используемый
|
||
адрес подсети (<systemitem class="ipaddress">10.10.10.1</systemitem> в
|
||
примере выше), либо последний используемый адрес (<systemitem
|
||
class="ipaddress">10.10.10.254</systemitem>).</para>
|
||
|
||
<para>Одна из целей разбиения на подсети - это позволить всем компьютерам
|
||
в подсети понимать с какими другими компьютерами можно взаимодействовать
|
||
напрямую. При взаимодействии с системами находящимися вне подсети, системы
|
||
посылают пакеты через <emphasis>шлюз (маршрутизатор) (gateway
|
||
(router</emphasis>)).</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Ваши локальные компьютеры (локальные компьютеры 1 & 2 на
|
||
диаграмме выше) должны быть сконфигурированы так, чтобы
|
||
<acronym>IP</acronym>-адресом их маршрутизатора по умолчанию был
|
||
<acronym>IP</acronym>-адрес внутреннего интерфейса файервола и Ваши
|
||
компьютеры <acronym>DMZ</acronym> (<acronym>DMZ</acronym> компьютеры 1
|
||
& 2) должны иметь <acronym>IP</acronym>-адрес маршрутизатора по
|
||
умолчанию установленным в <acronym>IP</acronym>-адрес
|
||
<acronym>DMZ</acronym>- интерфейса файервола.</para>
|
||
|
||
<para>Короткая предшествующая дискуссия лишь поверхностно затронула
|
||
вопросы связанные с подсетями и маршрутизацией. Если Вы заинтересованы
|
||
узнать больше об <acronym>IP</acronym>-адресации и маршрутизации, я очень
|
||
рекомендую <quote>Основы IP: Что нужно знать каждому об адресации и
|
||
маршрутизации</quote> (<quote>IP Fundamentals: What Everyone Needs to Know
|
||
about Addressing & Routing</quote>), Thomas A. Maufer, Prentice-Hall,
|
||
1999, ISBN 0-13-975483-0 (<ulink
|
||
url="http://www.phptr.com/browse/product.asp?product_id={58D4F6D4-54C5-48BA-8EDD-86EBD7A42AF6}">link</ulink>).</para>
|
||
|
||
<para>Оставшаяся часть руководства расчитана на то, что Вы имеете сеть,
|
||
сконфигурированную так, как показано здесь:</para>
|
||
|
||
<figure>
|
||
<title>DMZ</title>
|
||
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="images/dmz2.png" />
|
||
</imageobject>
|
||
|
||
<caption>
|
||
<para>Маршрутизатором по умолчанию для DMZ должен быть<systemitem
|
||
class="ipaddress">10.10.11.254</systemitem>, а для локальных
|
||
компьютеров 1 и 2 должен быть <systemitem
|
||
class="ipaddress">10.10.10.254</systemitem>.</para>
|
||
|
||
<warning>
|
||
<para>Ваш <acronym>ISP</acronym> может назначить Вашему внешнему
|
||
интерфейсу адрес из <acronym>RFC-1918</acronym>. Если этот адрес
|
||
из подсети <systemitem
|
||
class="ipaddress">10.10.10.0/24</systemitem>, тогда <emphasis
|
||
role="bold">Вы должны будете выделить ДРУГУЮ подсеть
|
||
<acronym>RFC-1918</acronym> для вашей локальной подсети и если это
|
||
<systemitem class="ipaddress">10.10.11.0/24</systemitem>, то Вы
|
||
должны будете выделить ДРУГУЮ подсеть <acronym>RFC-1918</acronym>
|
||
для Вашей DMZ.</emphasis></para>
|
||
</warning>
|
||
</caption>
|
||
</mediaobject>
|
||
</figure>
|
||
</section>
|
||
|
||
<section>
|
||
<title>IP-маскарадинг (SNAT)</title>
|
||
|
||
<para>Адреса зарезервированные <acronym>RFC-1918</acronym> иногда называют
|
||
немаршрутизируемыми потому, что магистральные маршрутизаторы Интернет не
|
||
переправляют пакеты, которые имеют адрес назначения из
|
||
<acronym>RFC-1918</acronym>. Когда одна из Ваших локальных систем
|
||
(допустим computer 1) посылает запрос на соединение хосту в Интернете,
|
||
файервол должен выполнить <emphasis>Трансляцию Сетевого Адреса (Network
|
||
Address Translation</emphasis> - <acronym>NAT</acronym>). Файервол
|
||
перезаписывает адрес источника в пакете адресом внешнего интерфейса
|
||
файервола; другими словами, файервол делает так, чтобы это выглядело как
|
||
файервол сам инициируетсоединение. Это необходимо так как хост назначения
|
||
должен быть способен направить пакеты назад файерволу через маршрутизаторы
|
||
(вспомним, что пакеты с адресом назначения зарезервированным
|
||
<acronym>RFC-1918</acronym> не могут быть маршрутизированы через Интернет
|
||
и следовательно удаленный хост не сможет адресовать ответ на computer 1).
|
||
Когда файервол принимает ответный пакет, он перезаписывает адрес
|
||
назначения обратно в <systemitem class="ipaddress">10.10.10.1</systemitem>
|
||
и переправляет пакет на computer 1.</para>
|
||
|
||
<para>На Linux системах, описанный выше процесс называют
|
||
<emphasis><acronym>IP</acronym>-маскарадингом (<acronym>IP</acronym>
|
||
Masquerading)</emphasis>, но Вы будете также встречать термин
|
||
<emphasis>Преобразование Сетевого Адреса Источника (Source Network Address
|
||
Translation</emphasis> - <acronym>SNAT</acronym>). Shorewall следует
|
||
соглашению используемому Netfilter: <itemizedlist>
|
||
<listitem>
|
||
<para><emphasis>Masquerade</emphasis> описывает случай, когда Вы
|
||
позволяете своему файерволу автоматически определять адрес внешнего
|
||
интерфейса.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><acronym>SNAT</acronym> используют в случае, когда Вы
|
||
определенно указываете адрес источника, который Вы хотите
|
||
использовать для покидающих Вашу локальную сеть пакетов.</para>
|
||
</listitem>
|
||
</itemizedlist> В Shorewall оба режима <emphasis>Маскарадинг
|
||
(Masquerading)</emphasis> и <acronym>SNAT</acronym> конфигурируются
|
||
записями в файле <filename
|
||
class="directory">/etc/shorewall/</filename><filename>masq</filename>. Вы
|
||
будете обычно использовать Маскарадинг, если Ваш внешний
|
||
<acronym>IP</acronym>-адрес - динамический и <acronym>SNAT</acronym>, если
|
||
внешний <acronym>IP</acronym>-адрес - статический.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Если Ваш внешний интерфейс файервола - <filename
|
||
class="devicefile">eth0</filename>, Ваш локальный интерфейс - <filename
|
||
class="devicefile">eth1</filename> и Ваш <acronym>DMZ</acronym>-нитерфейс
|
||
- <filename class="devicefile">eth2</filename>, Вам не нужно изменять файл
|
||
из примера. В противном случае, отредактируйте <filename
|
||
class="directory">/etc/shorewall/</filename><filename>masq</filename> так,
|
||
чтобы он соответствовал Вашей конфигурации.</para>
|
||
|
||
<para>А если, несмотря и вопреки всем советам, Вы используете это
|
||
руководство и хотите применить <acronym>NAT</acronym> один-к-одному или
|
||
прокси-<acronym>ARP</acronym> для Вашей <acronym>DMZ</acronym>, удалите
|
||
запись для <filename class="devicefile">eth2</filename> из файла
|
||
<filename>/etc/shorewall/masq</filename>.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Если Ваш внешний <acronym>IP</acronym>-адрес - статический, Вы
|
||
можете ввести его в третьем столбце записи файла <filename
|
||
class="directory">/etc/shorewall/</filename><filename>masq</filename> если
|
||
Вам нравиться, хотя Ваш файервол будет прекрасно работать, даже если Вы
|
||
оставите этот столбец пустым. Вводя Ваш статический
|
||
<acronym>IP</acronym>-адрес в третьем столбце, Вы делаете обработку
|
||
исходящих пакетов немного более эффективной.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para><emphasis role="bold">Если Вы используете пакет Debian, проверьте
|
||
пожалуйста Ваш файл <filename>shorewall.conf</filename>, чтобы убедиться,
|
||
что следующее установлено правильно; если нет, измените это
|
||
соответственно:</emphasis> <itemizedlist spacing="compact">
|
||
<listitem>
|
||
<para><varname>IP_FORWARDING=On</varname></para>
|
||
</listitem>
|
||
</itemizedlist></para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Перенаправление портов (DNAT)</title>
|
||
|
||
<para>Одной из Ваших целей может быть запуск одного или более серверов на
|
||
Ваших <acronym>DMZ</acronym> компьютерах. Так как эти компьютеры имеют
|
||
адреса из <acronym>RFC-1918</acronym>, то клиентам из Интернет невозможно
|
||
соединиться напрямую с ними. Это более невозможно для тех клиентов, кто
|
||
адресует свои запросы для соединения на файервол, который переписывает
|
||
адрес назначения на адрес Вашего сервера и переправляет пакет на этот
|
||
сервер. Когда Ваш сервер отвечает, файервол автоматически выполняет
|
||
<acronym>SNAT</acronym> для перезаписи адреса источника в ответе.</para>
|
||
|
||
<para>Описанный выше процесс называется <emphasis>Перенапрвление Портов
|
||
(Port Forwarding)</emphasis> или <emphasis>Преобразование Сетевого Адреса
|
||
Назначения (Destination Network Address Translation</emphasis> -
|
||
<acronym>DNAT</acronym>). Вы настраиваете перенаправление портов при
|
||
помощи правил <acronym>DNAT</acronym> в файле <filename
|
||
class="directory">/etc/shorewall/</filename><filename>rules</filename>.</para>
|
||
|
||
<para>Основная форма примерного правила перенаправления портов в <filename
|
||
class="directory">/etc/shorewall/</filename><filename>rules</filename>
|
||
такая: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
DNAT net dmz:<emphasis><server local IP address></emphasis>[:<emphasis><server port></emphasis>] <emphasis><protocol></emphasis> <emphasis><port></emphasis></programlisting>Если
|
||
Вы не указали <emphasis><varname><server port></varname></emphasis>
|
||
(порт сервера), его значение будет таким же как и у
|
||
<emphasis><varname><port></varname></emphasis>.</para>
|
||
|
||
<example>
|
||
<title>Вы запускаете Web-сервер на DMZ-компьютере 2 и хотите
|
||
перенаправить приходящие на порт 80 TCP-запросы на эту систему</title>
|
||
|
||
<para><programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
Web/DNAT net dmz:10.10.11.2
|
||
Web/ACCEPT loc dmz:10.10.11.2</programlisting><itemizedlist>
|
||
<listitem>
|
||
<para>Первая запись перенаправляет порт 80 из Интернет.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Вторая запись разрешает соединения из локальной сети.</para>
|
||
</listitem>
|
||
</itemizedlist>Нужно иметь в виду несколько важных
|
||
моментов:<itemizedlist>
|
||
<listitem>
|
||
<para>Когда Вы соединяетесь с Вашим сервером с Ваших локальных
|
||
систем, Вы должны внутренний <acronym>IP</acronym>-адрес сервера
|
||
(<systemitem class="ipaddress">10.10.11.2</systemitem>).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Многие <acronym>ISP</acronym> блокируют входящие запросы для
|
||
соединения на порт 80. Если у Вас есть проблемы при соединении с
|
||
Вашим Web-сервером, попробуйте следующее правило и попытайтесь
|
||
соединиться с портом 5000 (например, подключитесь к
|
||
<literal>http://w.x.y.z:5000</literal>, где
|
||
<literal>w.x.y.z</literal> - Ваш внешний
|
||
<acronym>IP</acronym>).<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE
|
||
# PORT(S)
|
||
DNAT net dmz:10.10.11.2:80 tcp 80 5000</programlisting></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если Вы хотите иметь доступ к Вашим серверам из локальной
|
||
сети используя Ваш внешний адрес, тогда, если Вы имеете
|
||
статический внешний <acronym>IP</acronym>-адрес, Вы можете
|
||
заменить правило <quote>loc</quote>-><quote>dmz</quote> выше
|
||
на:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE ORIGINAL
|
||
# PORT(S) DEST
|
||
DNAT loc dmz:10.10.11.2 tcp 80 - <emphasis><external IP></emphasis></programlisting>Если
|
||
же у Вас динамический внешний <acronym>IP</acronym>-адрес, то Вы
|
||
должны убедиться, что Ваш внешний интерфейс включен перед тем как
|
||
запускать Shorewall и Вам нужно выполнить следующие операции
|
||
(подразумевая, что Ваш внешний интерфейс - <filename
|
||
class="devicefile">eth0</filename>):<orderedlist>
|
||
<listitem>
|
||
<para>Включить следующую строку в файл <filename
|
||
class="directory">/etc/shorewall/</filename><filename>params</filename>:</para>
|
||
|
||
<para><command>ETH0_IP=$(find_interface_address
|
||
eth0)</command></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Создать Ваше правило
|
||
<quote>loc</quote>-><quote>dmz</quote>: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S) SOURCE ORIGINAL
|
||
# PORT(S) DEST
|
||
DNAT loc dmz:10.10.11.2 tcp 80 - $ETH0_IP</programlisting></para>
|
||
</listitem>
|
||
</orderedlist></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если Вам нужен доступ к серверу из <acronym>DMZ</acronym>,
|
||
используйте для доступа Ваш внешний <acronym>IP</acronym>-адрес,
|
||
смотрите <ulink url="FAQ.htm#faq2a">FAQ 2a</ulink>.</para>
|
||
</listitem>
|
||
</itemizedlist></para>
|
||
</example>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>В этом месте измените добавьте правила <varname>DNAT</varname> и
|
||
<varname>ACCEPT</varname> для Ваших серверов.</para>
|
||
|
||
<important>
|
||
<para>Когда тестируете правила <varname>DNAT</varname> похожие на те,
|
||
что приведены выше, Вы должны тестировать с клиента ИЗВНЕ ВАШЕГО
|
||
ФАЙЕРВОЛА (в зоне <quote>net</quote>). Вы не можете протестировать эти
|
||
правила изнутри файервола!</para>
|
||
|
||
<para>Советы по разрешению проблем с <acronym>DNAT</acronym>, смотрите в
|
||
<ulink url="FAQ.htm#faq1a">FAQs 1a и 1b</ulink>.</para>
|
||
</important>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Сервер Доменных Имен (Domain Name Server - DNS)</title>
|
||
|
||
<para>Normally, when you connect to your ISP, as part of getting an IP
|
||
address your firewall's <emphasis>Domain Name Service</emphasis> (DNS)
|
||
resolver will be automatically configured (e.g., the
|
||
<filename>/etc/resolv.conf</filename> file will be written).
|
||
Alternatively, your ISP may have given you the IP address of a pair of DNS
|
||
name servers for you to manually configure as your primary and secondary
|
||
name servers. It is your responsibility to configure the resolver in your
|
||
internal systems. You can take one of two approaches: <itemizedlist>
|
||
<listitem>
|
||
<para>You can configure your internal systems to use your
|
||
<acronym>ISP</acronym>'s name servers. If your
|
||
<acronym>ISP</acronym> gave you the addresses of their servers or if
|
||
those addresses are available on their web site, you can configure
|
||
your internal systems to use those addresses. If that information
|
||
isn't available, look in <filename
|
||
class="directory">/etc/</filename><filename>resolv.conf</filename>
|
||
on your firewall system -- the name servers are given in
|
||
<quote>nameserver</quote> records in that file.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><inlinegraphic fileref="images/BD21298_.gif"
|
||
format="GIF" /></para>
|
||
|
||
<para>Вы можете настроить <emphasis>Кэширующий Сервер Имен (Caching
|
||
Name Server)</emphasis> на Вашем файерволе или в Вашей
|
||
<acronym>DMZ</acronym>. <trademark>Red Hat</trademark> имеет
|
||
<acronym>RPM</acronym> для кэширующего сервера имен (которому также
|
||
необходим пакет <command>bind-</command><acronym>RPM</acronym>), а
|
||
для пользователей Bering существует <command>dnscache.lrp</command>.
|
||
Если Вы пойдете этим путем, Вы настраиваете Ваши внутренние системы
|
||
на использование самого файервола как первичного (и только) сервера
|
||
имен. Вы используете внутренний <acronym>IP</acronym>-адрес
|
||
файервола (<systemitem class="ipaddress">10.10.10.254</systemitem> в
|
||
примере выше) для адреса сервера имен, если Вы запускаете сервер
|
||
имен на Вашем файерволе. Чтобы позволить Вашим локальным системам
|
||
общаться с Вашим кэширующим сервером имен, Вы должны открыть доступ
|
||
к порту 53 (оба <acronym>UDP</acronym> и <acronym>TCP</acronym>) на
|
||
файерволе из внутренней сети. Вы можете сделать это, добавив
|
||
следующее правило в файл <filename
|
||
class="directory">/etc/shorewall/</filename><filename>rules</filename>.</para>
|
||
</listitem>
|
||
</itemizedlist><anchor id="cachingdns" /> Если Вы запускаете сервер имен
|
||
на файерволе: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
DNS/ACCEPT loc $FW
|
||
DNS/ACCEPT dmz $FW </programlisting>Запуск сервера имен на
|
||
<acronym>DMZ</acronym>-компьютере 1: <programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
DNS/ACCEPT loc dmz:10.10.11.1
|
||
DNS/ACCEPT $FW dmz:10.10.11.1 </programlisting></para>
|
||
|
||
<para>В правилах, показанных выше, <quote>DNS/ACCEPT</quote> - это пример
|
||
<emphasis>предопределенного макроса (defined macro)</emphasis>. Shorewall
|
||
включает множество предопределенных макросов и <ulink url="Macros.html">Вы
|
||
можете добавить Ваши собственные</ulink>. Для просмотра списка макросов,
|
||
включенных в Вашу версию Shorewall, запустите команду <command>ls
|
||
<filename>/usr/share/shorewall/macro.*</filename></command>.</para>
|
||
|
||
<para>Вы не обязаны использовать предопределенные макросы при написании
|
||
правил в файле <filename>/etc/shorewall/rules</filename>. Первый пример
|
||
выше (сервер имен на файерволе) может быть также записан как:</para>
|
||
|
||
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
ACCEPT loc $FW tcp 53
|
||
ACCEPT loc $FW udp 53
|
||
ACCEPT dmz $FW tcp 53
|
||
ACCEPT dmz $FW udp 53 </programlisting>
|
||
|
||
<para>В случаях когда Shorewall не имеет предопределенных макросов,
|
||
отвечающих Вашим потребностям, Вы можете либо определить свой собственный
|
||
макрос, либо просто записать соответствующие правила напрямую. <ulink
|
||
url="ports.html">Эта страница</ulink> может помочь Вам в случае, если Вы
|
||
не знаете используемые протокол и порт.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Другие соединения</title>
|
||
|
||
<para>Пример с тремя интерфейсами включает следующие
|
||
правила:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
DNS/ACCEPT $FW net </programlisting>Это правило разрешает доступ
|
||
к <acronym>DNS</acronym> с Вашего файервола и может быть удалено, если Вы
|
||
раскомментировали строку в <filename
|
||
class="directory">/etc/shorewall/</filename><filename>policy</filename>,
|
||
разрешающую все соединения с файервола в Интернет.</para>
|
||
|
||
<para>Пример также включает:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
SSH/ACCEPT loc $FW
|
||
SSH/ACCEPT loc dmz </programlisting>Это правило разрешает Вам
|
||
запускать <acronym>SSH</acronym>-сервер на Вашем файерволе и на кождой из
|
||
Ваших <acronym>DMZ</acronym>-систем и соединяться с ним с Ваших локальных
|
||
систем.</para>
|
||
|
||
<para>Если Вы хотите разрешить другие соединения с Вашего файервола к
|
||
другим системам, основной формат использования макроса
|
||
такой:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
<<emphasis>macro</emphasis>>/ACCEPT <emphasis><source zone> <destination zone></emphasis></programlisting></para>
|
||
|
||
<para>Основной формат при отсутствии предопределенных макросами действий
|
||
такой:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
ACCEPT <emphasis><source zone> <destination zone> <protocol> <port> </emphasis></programlisting></para>
|
||
|
||
<example>
|
||
<title>Вы хотите запустить общедоступный DNS-сервер на Вашем
|
||
файерволе</title>
|
||
|
||
<para>Используя предопределенный макрос:</para>
|
||
|
||
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
DNS/ACCEPT net $FW</programlisting>
|
||
|
||
<para>Не используя предопределенный макрос:</para>
|
||
|
||
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
ACCEPT net $FW tcp 53
|
||
ACCEPT net $FW udp 53 </programlisting>
|
||
|
||
<para>Эти два правила, конечно, должны быть добавлены к тем правилам,
|
||
которые указаны выше в абзаце "если Вы запускаете сервер имен на Вашем
|
||
файерволе"<quote><link linkend="cachingdns">если Вы запускаете сервер
|
||
имен на Вашем файерволе</link></quote>.</para>
|
||
</example>
|
||
|
||
<para>Если Вы не знаете какой порт и протокол использует конкретное
|
||
приложение, смотрите <ulink url="ports.htm">здесь</ulink>.</para>
|
||
|
||
<important>
|
||
<para>Я не рекоммендую разрешать <command>telnet</command> в/из Интернет
|
||
потому, что он использует открытый текст (даже для передачи имени и
|
||
пароля!). Если Вы хотите иметь доступ к командному интерпретатору Вашего
|
||
файервола из Интернет, используйте
|
||
<acronym>SSH</acronym>:<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
SSH/ACCEPT net $FW</programlisting></para>
|
||
</important>
|
||
|
||
<para><inlinegraphic fileref="images/leaflogo.gif" format="GIF" /></para>
|
||
|
||
<para>Пользователи дистрибутива Bering захотят добавить следующие два
|
||
правила для совместимости с конфигурацией Shorewall от Jacques.
|
||
<programlisting>#ACTION SOURCE DEST PROTO DEST PORT(S)
|
||
ACCEPT loc $FW udp 53
|
||
ACCEPT net $FW tcp 80 </programlisting><itemizedlist>
|
||
<listitem>
|
||
<para>Запись 1 разрешает использование кэширующего
|
||
<acronym>DNS</acronym>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Запись 2 разрешает работу <quote>weblet</quote>.</para>
|
||
</listitem>
|
||
</itemizedlist><inlinegraphic fileref="images/BD21298_.gif"
|
||
format="GIF" /></para>
|
||
|
||
<para>Now modify <filename>/etc/shorewall/rules</filename> to add or
|
||
remove other connections as required.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Что нужно помнить</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><emphasis role="bold">Вы не можете Ваш файервол
|
||
изнутри</emphasis>. Только потому, что Вы посылаете запросы на внешний
|
||
<acronym>IP</acronym>-адрес Вашего файервола не означает, что запросы
|
||
будут ассоциированы с внешним интерфейсом или зоной
|
||
<quote>net</quote>. Любой трафик, создаваемый из локальной сети будет
|
||
ассоциироваться с Вашим локальным интерфейсом и будет воспринят как
|
||
трафик <quote>loc</quote>-><quote>fw</quote>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis role="bold">IP-адреса - это свойства систем, а не
|
||
интерфейсов</emphasis>. Ошибочно верить, что Ваш файервол способен
|
||
переправит пакеты только потому, что Вы можете пропинговать
|
||
<acronym>IP</acronym>-адрес всех интерфейсов файервола из локальной
|
||
сети. Единственное заключение, которое Вы можете вынести из такого
|
||
успешного пингования - это наличие рабочей связи между локальной
|
||
системой и файерволом и то, что Вы, возможно, правильно указали
|
||
маршрутизатор по умолчанию на локальной системе.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis role="bold">Все IP-адреса, настроенные на интерфейсах
|
||
файервола, принадлежат зоне $FW (<quote>fw</quote>)</emphasis>. Если
|
||
192.168.1.254 - это <acronym>IP</acronym>-адрес Вашего внутреннего
|
||
интерфейса, то Вы можете написать <quote><emphasis
|
||
role="bold">$FW:192.168.1.254</emphasis></quote> в правиле, но Вы не
|
||
можете написать <quote><emphasis
|
||
role="bold">loc:192.168.1.254</emphasis></quote>. Также не играет роли
|
||
добавление адреса 192.168.1.254 в зону <quote>loc</quote> при помощи
|
||
записи в файле <filename>/etc/shorewall/hosts</filename>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis role="bold">Ответные пакеты НЕ следуют автоматически
|
||
обратно тем маршрутом, который использовал исходный запрос</emphasis>.
|
||
Все пакеты маршрутизируются согласно таблице маршрутизации каждого
|
||
хоста на всем пути. Этот вопрос обычно встает когда людч устанавливают
|
||
файервол Shorewall параллельно с имеющимся шлюзом и пытаются
|
||
использовать <acronym>DNAT</acronym> сквозь Shorewall без изменения
|
||
шлюза по умолчанию системы, принимающей переправленные запросы.
|
||
Запросы проходят сквозь файервол Shorewall, где изменяется
|
||
<acronym>IP</acronym>-адрес назначения, но ответы уходят неизмененными
|
||
через старый шлюз.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis role="bold">Shorewall сам не имеет представления о
|
||
внутренней и внешней стороне</emphasis>. Воплощение этих концепций
|
||
зависит от того, как настроен Shorewall.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Запуск и останов Вашего файервола</title>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para><ulink url="Install.htm">Процедура установки</ulink> настраивает
|
||
Вашу систему для запуска Shorewall при загрузке системе, но запуск
|
||
остается отключен, так что система не будет пытаться запустить Shorewall
|
||
до полного завершения конфигурирования. Как только Вы полностью завершите
|
||
конфигурирование Вашего файервола, Вы можете включить запуск Shorewall,
|
||
отредактировав файл <filename>/etc/shorewall/shorewall.conf</filename> и
|
||
установив параметр <varname>STARTUP_ENABLED=Yes</varname>.<important>
|
||
<para>Пользователи пакета .deb должны отредактировать файл
|
||
<filename>/etc/default/shorewall</filename> и установить параметр
|
||
<varname>STARTUP=1.</varname></para>
|
||
</important><important>
|
||
<para>Вы должны разрешить запуск путем редактирования файла
|
||
<filename>/etc/shorewall/shorewall.conf</filename> и установки
|
||
параметра <varname>STARTUP_ENABLED=Yes.</varname></para>
|
||
</important>Файервол запускается при помощи команды
|
||
<quote><command>shorewall start</command></quote> и останавливается при
|
||
помощи <quote><command>shorewall stop</command></quote>. Когда файервол
|
||
остановливается, маршрутизация разрешается на те хосты, которые указаны в
|
||
<filename><ulink
|
||
url="manpages/shorewall-routestopped.html">/etc/shorewall/routestopped</ulink></filename>.
|
||
Запущенный файервол может быть перезапущен при помощи команды
|
||
<quote><command>shorewall restart</command></quote>. Если Вы хотите
|
||
полностью удалить изменения сделанные Shorewall из конфигурации Вашего
|
||
Netfilter, используйте команду <quote><command>shorewall
|
||
clear</command></quote>.</para>
|
||
|
||
<para><inlinegraphic fileref="images/BD21298_.gif" format="GIF" /></para>
|
||
|
||
<para>Пример с двумя интерфейсами предполагает, что Вы хотите разрешить
|
||
маршрутизацию к/из <filename class="devicefile">eth1</filename> (локальная
|
||
сеть) и <filename class="devicefile">eth2</filename>
|
||
(<acronym>DMZ</acronym>) когда Shorewall остановлен. Если эти два
|
||
интерфейса не соединены с Вашей локальной сетью и <acronym>DMZ</acronym>
|
||
или если Вы хотите разрешить другой набор хостов, измените файл
|
||
<filename>/etc/shorewall/routestopped</filename> соответственно.<warning>
|
||
<para>Если Вы подсоединены к Вашему файерволу из Интернет, не
|
||
используйте команду <quote><command>shorewall stop</command></quote>
|
||
если Вы не добавили запись для <acronym>IP</acronym>-адреса, с
|
||
которого Вы подсоединены, в <ulink
|
||
url="manpages/shorewall-routestopped.html"><filename>/etc/shorewall/routestopped</filename></ulink>.
|
||
Также, я не рекоммендую использовать <quote><command>shorewall
|
||
restart</command></quote>; лучше создать <emphasis><ulink
|
||
url="configuration_file_basics.htm#Configs">альтернативную
|
||
конфигурацию</ulink></emphasis> и протестировать ее при помощи команды
|
||
<ulink
|
||
url="starting_and_stopping_shorewall.htm"><quote><command>shorewall
|
||
try</command></quote></ulink>.</para>
|
||
</warning></para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Дополнительно рекоммендуемая литература</title>
|
||
|
||
<para>Я особо рекоммендую просмотреть Вам <ulink
|
||
url="configuration_file_basics.htm">страницу Общих Особенностей Файлов
|
||
Конфигурации</ulink> -- она содержит полезные советы об особенностях
|
||
Shorewall, делающую администрирование Вашего файервола проще.</para>
|
||
</section>
|
||
</article>
|