MFen: handbook/firewalls/chapter.sgml 1.70 --> 1.94

This commit is contained in:
Taras Korenko 2010-08-18 16:32:06 +00:00
parent 4fbfd04300
commit b029def3de
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=36264

View file

@ -4,7 +4,7 @@
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/firewalls/chapter.sgml,v 1.16 2006/06/20 18:02:32 marck Exp $
Original revision: 1.70
Original revision: 1.94
XXX: contains non-translated sections! XXX
-->
@ -47,7 +47,7 @@
<para>Межсетевые экраны (firewall, брандмауэр)
делают возможной фильтрацию входящего и исходящего
трафика, идущего через систему. Межсетевой экран использует один
трафика, идущего через вашу систему. Межсетевой экран использует один
или более наборов <quote>правил</quote> для проверки сетевых
пакетов при их входе или выходе через сетевое соединение, он
или позволяет прохождение трафика или блокирует его. Правила
@ -73,9 +73,10 @@
<listitem>
<para>Для поддержки преобразования сетевых адресов (network
address translation, <acronym>NAT</acronym>), что позволяет
использование во внутренней сети приватных
<acronym>IP</acronym> адресов (либо через один выделенный
address translation, <acronym>NAT</acronym>), что дает возможность
задействовать во внутренней сети приватные <acronym>IP</acronym>
адреса и совместно использовать одно подключение к сети Интернет
(либо через один выделенный
<acronym>IP</acronym> адрес, либо через адрес из пула
автоматически присваиваемых публичных адресов).</para>
</listitem>
@ -135,10 +136,22 @@
Он пропускает только трафик, соответствующий правилам и
блокирует все остальное.</para>
<para>Включающие межсетевые экраны обычно более безопасны, чем
<para>Включающий межсетевой экран обеспечивает гораздо большую степень
контроля исходящего трафика. Поэтому включающий межсетевой экран
является лучшим выбором для систем, предоставляющих сервисы в сети
Интернет. Он также контролирует тип трафика, порождаемого вне
и направляющегося в вашу приватную сеть. Трафик, не попавший в правила,
блокируется, а в файл протокола вносятся соответствующие записи.
Включающие межсетевые экраны обычно более безопасны, чем
исключающие, поскольку они существенно уменьшают риск
пропуска межсетевым экраном нежелательного трафика.</para>
<note>
<para>Если не указано иначе, то все приведенные в этом разделе примеры
наборов правил и конфигураций относятся к типу включающего межсетевого
экрана.</para>
</note>
<para>Безопасность может быть дополнительно повышена с
использованием <quote>межсетевого экрана с сохранением
состояния</quote>. Такой межсетевой экран сохраняет информацию
@ -149,37 +162,46 @@
(Denial of Service, отказ в обслуживании), если множество
новых соединений открывается очень быстро. Большинство
межсетевых экранов позволяют комбинировать поведение с сохранением
состояния и без сохранения состояния, что оптимально
для реальных применений.</para>
состояния и без сохранения состояния, что позволяет создавать
оптимальную конфигурацию для каждой конкретной системы.</para>
</sect1>
<sect1 id="firewalls-apps">
<title>Пакеты межсетевых экранов</title>
<para>В &os; встроено три программных межсетевых экрана.
<para>В базовую систему &os; встроено три программных межсетевых экрана.
Это <emphasis>IPFILTER</emphasis> (известный также как
<acronym>IPF</acronym>), <emphasis>IPFIREWALL</emphasis> (известный также
как <acronym>IPFW</acronym>) и <emphasis>OpenBSD PacketFilter</emphasis>
(также известный как<acronym>PF</acronym>).
Помимо этого, &os; содержит два пакета ограничения трафика (шейпера):
&man.altq.4; и &man.dummynet.4;. Dummynet традиционно сильно связан с
<acronym>IPFW</acronym>, а <acronym>ALTQ</acronym> с
<acronym>IPF</acronym> и <acronym>PF</acronym>.
IPF, IPFW и PF для контроля исходящих и входящих пакетов
(также известный как <acronym>PF</acronym>).
Помимо этого, &os; содержит два пакета ограничения трафика
(по существу, предназначенных для контроля пропускной способности
сетевого соединения): &man.altq.4; и &man.dummynet.4;. Dummynet
традиционно сильно связан с <acronym>IPFW</acronym>, а
<acronym>ALTQ</acronym> с <acronym>PF</acronym>.
В настоящее время IPFILTER не поддерживает ограничение пропускной
способности сетевого соединения. Для реализации этой функции
предлагается использовать IPFILTER совместно с одним из двух существующих
пакетов ограничения трафика. Конфигурация следующая: IPFILTER
задействуется для фильтрации и трансляции трафика, а
<acronym>IPFW</acronym> с &man.dummynet.4; <emphasis>или</emphasis>
<acronym>PF</acronym> с <acronym>ALTQ</acronym>
&mdash; для контроля пропускной способности сетевого соединения.
IPFW и PF для контроля исходящих и входящих пакетов
используют наборы правил, хотя и разными способами с разным
синтаксисом правил.</para>
<para>Причина, по которой в &os; включено более одного пакета
межсетевых экранов, заключается в том, что разные сети выдвигают
межсетевых экранов, заключается в том, что разные пользователи выдвигают
к ним различные требования и используют разные предпочтения.
Нет одного пакета, который был бы очевидно лучше других.</para>
<para>Автор предпочитает IPFILTER, поскольку его
правила с сохранением состояния гораздо проще использовать
совместно с <acronym>NAT</acronym>; кроме того, в него встроен
ftp прокси, упрощающий настройку безопасного внешнего использования
FTP.</para>
ftp прокси, что упрощает правила для фильтрации исходящих FTP
соединений.</para>
<para>Поскольку все межсетевые экраны основаны на анализе значений выбранных
полей заголовка пакета, для создания правил межсетевого экрана необходимо
@ -190,7 +212,19 @@
</sect1>
<sect1 id="firewalls-pf">
<title>Packet Filter Firewall (PF, межсетевой экран OpenBSD)</title>
<sect1info>
<authorgroup>
<author>
<firstname>John</firstname>
<surname>Ferrell</surname>
<contrib>Пересмотрел и обновил </contrib>
<!-- 24 March 2008 -->
</author>
</authorgroup>
</sect1info>
<title>Packet Filter (PF, межсетевой экран OpenBSD) и
<acronym>ALTQ</acronym></title>
<indexterm>
<primary>межсетевой экран</primary>
@ -206,44 +240,65 @@
возможностей, в котором есть опциональная поддержка
<acronym>ALTQ</acronym> (Alternate Queuing).
<acronym>ALTQ</acronym> предоставляет управление пропускной способностью
Quality of Service (<acronym>QoS</acronym>), позволяющее гарантировать
пропускную способность для различных сервисов на основе фильтрующих
правил. Проект OpenBSD поддерживает Руководство
Пользователя PF, которое не было внесено в этот раздел руководства
во избежание дублирования работы.</para>
Quality of Service (<acronym>QoS</acronym>).</para>
<para>Дополнительную информацию можно получить с веб сайта PF для &os;:
<para>Проект OpenBSD осуществляет замечательную работу по поддержке
<ulink url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink>. Этот раздел
руководства фокусируется на взаимосвязи <acronym>PF</acronym> и
&os;, предоставляя лишь общую информацию по его использованию.
За более подробной информацией по использованию <acronym>PF</acronym>
обратитесь к <ulink
url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink>.</para>
<para>Дополнительные сведения о PF для &os; можно получить с веб сайта:
<ulink url="http://pf4freebsd.love2party.net/"></ulink>.</para>
<sect2>
<title>Включение PF</title>
<title>Использование модуля ядра PF</title>
<para>PF включен в базовую поставку &os; версии 5.3 и выше в качестве
отдельного загружаемого модуля. PF динамически подгружает модуль ядра
если включена переменная rc.conf <literal>pf_enable="YES"</literal>.
Загружаемый модуль создан с включенным &man.pflog.4;.</para>
<para>Чтобы загрузить PF как модуль ядра, добавьте следующую строку
в <filename>/etc/rc.conf</filename>:</para>
<programlisting>pf_enable="YES"</programlisting>
<para>Далее, выполните стартовый скрипт:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/pf start</userinput></screen>
<para>Учтите, модуль PF не загрузится, если он не сможет найти
конфигурационный файл с набором правил. По умолчанию размещение
файла с правилами следующее: <filename>/etc/pf.conf</filename>.
Если путь к файлу отличается от вышеприведённого, то внесите в
<filename>/etc/rc.conf</filename> строку вида:</para>
<programlisting>pf_rules="<replaceable>/path/to/pf.conf</replaceable>"</programlisting>
<note>
<para>Модуль предполагает, что файл конфигурации вашего ядра содержит
строки <literal>options INET</literal> и
<literal>device bpf</literal>. Если не определен параметр
<literal>NOINET6</literal> для &os; версий до 6.0-RELEASE и
<literal>NO_INET6</literal> для более поздних версий (например,
в файле &man.make.conf.5;), требуется также параметр
<literal>options INET6</literal>.</para>
<para>Начиная с версии &os;&nbsp;7.0 файл с примерами конфигураций
(<filename>pf.conf</filename>) был перемещен из каталога
<filename class="directory">/etc/</filename> в каталог
<filename class="directory">/usr/share/examples/pf/</filename>.
Для версий &os;, предшествующих 7.0, размещение по умолчанию
&mdash; <filename class="directory">/etc/pf.conf</filename></para>
</note>
<para>После загрузки модуля или пересборки ядра с поддержкой PF,
функциональность <application>pf</application> может управляться
при помощи команды <command>pfctl</command>.</para>
<para>Модуль <acronym>PF</acronym> можно также загрузить вручную:</para>
<para><application>pf</application> включается при помощи команды</para>
<screen>&prompt.root; <userinput>kldload pf.ko</userinput></screen>
<screen>&prompt.root; <userinput>pfctl -e</userinput></screen>
<para>Поддержка ведения логов для <acronym>PF</acronym> обеспечивается
модулем <literal>pflog.ko</literal>, для загрузки которого добавьте
следующую строку в <filename>/etc/rc.conf</filename>:</para>
<para>Команда <command>pfctl</command> позволяет управлять правилами
<application>pf</application>. Дополнительную информацию следует
черпать из страницы справочника &man.pfctl.8;.</para>
<programlisting>pflog_enable="YES"</programlisting>
<para>и запустите на выполнение скрипт:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/pflog start</userinput></screen>
<para>Если вам необходимы другие функциональные возможности
<acronym>PF</acronym>, то придется добавить поддержку
<acronym>PF</acronym> в ядро.</para>
</sect2>
<sect2>
@ -264,9 +319,18 @@
<secondary>device pfsync</secondary>
</indexterm>
<para>Включение PF путем компиляции с ядром &os; не является обязательным
требованием, и описано здесь в качестве дополнительной информации.
При компиляции PF с ядром загружаемый модуль не используется.</para>
<para>Включение <acronym>PF</acronym> путем компиляции с ядром &os; не является обязательным
требованием,
однако вам может понадобиться
одна из функциональных возможностей, которая не включена в загружаемый
модуль. Например, &man.pfsync.4; являет собой псевдоустройство,
которое вносит определенные изменения в таблицу состояний, используемую
<acronym>PF</acronym>. В дальнейшем, это псевдоустройство может быть
скомпоновано с &man.carp.4; чтобы создать отказоустойчивую систему
межсетевых экранов на основе <acronym>PF</acronym>.
<!-- XXX: "carp" chapter translation is missing (it breaks the build) XXX
Дополнительная информация о протоколе <acronym>CARP</acronym>
находится в <xref linkend="carp"> руководства. --></para>
<para>Пример параметров конфигурации ядра для включения PF находится в
<filename>/usr/src/sys/conf/NOTES</filename> и показан здесь:</para>
@ -276,7 +340,7 @@ device pflog
device pfsync</programlisting>
<para><literal>device pf</literal> включает поддержку межсетевого экрана
<quote>Packet Filter</quote>.</para>
<quote>Packet Filter</quote> (&man.pf.4;).</para>
<para><literal>device pflog</literal> включает необязательное сетевое
псевдоустройство &man.pflog.4;, которое может использоваться для
@ -286,19 +350,14 @@ device pfsync</programlisting>
<para><literal>device pfsync</literal> включает необязательное
сетевое псевдоустройство &man.pfsync.4;, используемое для
отслеживания <quote>изменений состояния</quote>. Поскольку оно
не входит в загружаемый модуль, для его использования необходимо
собрать собственное ядро.</para>
<para>Эти настройки будут действовать только после сборки и установки
нового ядра.</para>
отслеживания <quote>изменений состояния</quote>.</para>
</sect2>
<sect2>
<title>Доступные параметры rc.conf</title>
<para>Для активации PF во время загрузки в
<filename>/etc/rc.conf</filename> должны быть включены следующие
<para>Для активации <acronym>PF</acronym> и &man.pflog.4; во время
загрузки в &man.rc.conf.5; должны быть включены следующие
переменные:</para>
<programlisting>pf_enable="YES" # Включить PF (загрузить модуль если необходимо)
@ -316,6 +375,91 @@ pflog_flags="" #
</sect2>
<sect2>
<title>Создание правил фильтрации</title>
<para>Пакет <acronym>PF</acronym> читает конфигурацию из файла
&man.pf.conf.5; (полный путь: <filename>/etc/pf.conf</filename>);
пакеты отвергаются, пропускаются или модифицируются в соответствии с
правилами и определениями из этого файла. В стандартную поставку
&os; входят несколько файлов с примерами конфигураций, которые
находятся в каталоге <filename
class="directory">/usr/share/examples/pf/</filename>.
За исчерпывающим описанием правил <acronym>PF</acronym> обратитесь
к <ulink url="http://www.openbsd.org/faq/pf/">PF FAQ</ulink>.</para>
<warning>
<para>Изучая <ulink url="http://www.openbsd.org/faq/pf/">PF
FAQ</ulink>, имейте в виду, что различные версии &os; могут
содержать разные версии pf. В настоящий момент
&os;&nbsp;7.<replaceable>X</replaceable> и более поздние
используют ту же версию <acronym>PF</acronym>, которая включена
в OpenBSD&nbsp;4.1.</para>
</warning>
<para>&a.pf; является хорошим местом, чтобы задавать вопросы по
конфигурации и использованию пакета <acronym>PF</acronym>.
Не забудьте проверить архивы списка рассылки перед тем, как
задавать вопрос.</para>
</sect2>
<sect2>
<title>Работа с PF</title>
<para>Для управления <acronym>PF</acronym> используйте утилиту
&man.pfctl.8;. Ниже приведено несколько полезных команд (все
возможные команды и опции приведены на странице справочника
&man.pfctl.8;):</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Команда</entry>
<entry>Действие</entry>
</row>
</thead>
<tbody>
<row>
<entry><command>pfctl <option>-e</option></command></entry>
<entry>Включить PF</entry>
</row>
<row>
<entry><command>pfctl <option>-d</option></command></entry>
<entry>Выключить PF</entry>
</row>
<row>
<entry><command>pfctl <option>-F</option> all <option>-f</option> /etc/pf.conf</command></entry>
<entry>Сбросить все правила (NAT, правила фильтрации, состояния
соединений, таблицы и т.д.) и загрузить новые с файла
<filename>/etc/pf.conf</filename></entry>
</row>
<row>
<entry><command>pfctl <option>-s</option> [ rules | nat | state ]</command></entry>
<entry>Отобразить правила фильтрации, правила NAT или
таблицу состояний соединений</entry>
</row>
<row>
<entry><command>pfctl <option>-vnf</option> /etc/pf.conf</command></entry>
<entry>Проверить <filename>/etc/pf.conf</filename> на наличие
ошибок, но сами наборы правил не загружать</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>Включение <acronym>ALTQ</acronym></title>
@ -324,7 +468,9 @@ pflog_flags="" #
<acronym>ALTQ</acronym> поддерживается не всеми существующими
драйверами сетевых карт. Для просмотра списка поддерживаемых
устройств в вашем релизе &os; обратитесь к странице справочника
&man.altq.4;. Следующие параметры включат <acronym>ALTQ</acronym>
&man.altq.4;.</para>
<para>Следующие параметры включат <acronym>ALTQ</acronym>
и добавят дополнительную функциональность.</para>
<programlisting>options ALTQ
@ -338,70 +484,42 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
<para><literal>options ALTQ</literal> включает подсистему
<acronym>ALTQ</acronym>.</para>
<para><literal>options ALTQ_CBQ</literal> включает Class Based
Queuing (<acronym>CBQ</acronym>). <acronym>CBQ</acronym>
<para><literal>options ALTQ_CBQ</literal> включает <emphasis>Class Based
Queuing</emphasis> (<acronym>CBQ</acronym>). <acronym>CBQ</acronym>
позволяет распределять пропускную способность соединений
по классам или очередям для выставления приоритетов трафика
на основе правил фильтрации.</para>
<para><literal>options ALTQ_RED</literal> включает Random Early
Detection (<acronym>RED</acronym>). <acronym>RED</acronym>
<para><literal>options ALTQ_RED</literal> включает <emphasis>Random Early
Detection</emphasis> (<acronym>RED</acronym>). <acronym>RED</acronym>
используется для предотвращения перегрузки сети.
<acronym>RED</acronym> вычисляет длину очереди и сравнивает ее
с минимальной и максимальной границей очереди. Если
очередь превышает максимум, все новые пакеты отбрасываются.
с минимальным и максимальным значением длины очереди. Если
очередь превышает максимум, все новые пакеты будут отброшены.
В соответствии со своим названием, <acronym>RED</acronym>
отбрасывает пакеты из различные соединений в произвольном
порядке.</para>
<para><literal>options ALTQ_RIO</literal> включает Random Early
Detection In and Out.</para>
<para><literal>options ALTQ_RIO</literal> включает <emphasis>Random Early
Detection In and Out</emphasis>.</para>
<para><literal>options ALTQ_HFSC</literal> включает
Hierarchical Fair Service Curve Packet Scheduler. Дополнительная
<emphasis>Hierarchical Fair Service Curve Packet Scheduler</emphasis>.
Дополнительная
информация о <acronym>HFSC</acronym> находится по адресу: <ulink
url="http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html"></ulink>.
</para>
<para><literal>options ALTQ_PRIQ</literal> включает Priority
Queuing (<acronym>PRIQ</acronym>). <acronym>PRIQ</acronym>
всегда пропускает трафик из более высокой очереди
первым.</para>
<para><literal>options ALTQ_PRIQ</literal> включает <emphasis>Priority
Queuing</emphasis> (<acronym>PRIQ</acronym>). <acronym>PRIQ</acronym>
всегда первым пропускает трафик из очереди c более высоким
приоритетом.</para>
<para><literal>options ALTQ_NOPCC</literal> включает
поддержку <acronym>SMP</acronym> для <acronym>ALTQ</acronym>.
Эта опция необходима для <acronym>SMP</acronym>
систем.</para>
</sect2>
<sect2>
<title>Создание правил фильтрации</title>
<para>Пакет PF читает конфигурацию из файла &man.pf.conf.5;; пакеты
отвергаются, пропускаются или модифицируются в соответствии с
правилами и определениями из этого файла. В стандартную поставку
&os; входит файл <filename>/etc/pf.conf</filename>, содержащий
полезные примеры с комментариями.</para>
<para>Несмотря на наличие собственного для &os; файла
<filename>/etc/pf.conf</filename>, синтаксис его совпадает с
OpenBSD. Отличное руководство по конфигурации
<application>pf</application>, написанное группой разработки OpenBSD,
расположено по адресу
<ulink url="http://www.openbsd.org/faq/pf/"></ulink>.</para>
<warning>
<para>Изучая Руководство PF, имейте в виду, что различные версии
&os; содержат разные версии pf. <application>pf</application>
в &os;&nbsp;5.X соответствует OpenBSD версии 3.5, в &os;&nbsp;6.X
pf соответствует OpenBSD версии 3.7.</para>
</warning>
<para>&a.pf; является хорошим местом, чтобы задавать вопросы по
конфигурации и использованию пакета <application>pf</application>.
Не забудьте проверить архивы списка рассылки перед тем, как
задавать вопрос.</para>
</sect2>
</sect1>
<sect1 id="firewalls-ipf">
@ -421,18 +539,18 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
<para>Автором IPFILTER является Darren Reed. IPFILTER не
зависит от операционной системы: это приложение с открытыми
исходными текстами, которое было портировано на операционные
системы &os;, NetBSD, OpenBSD, SunOS, HP/UX, и Solaris.
системы &os;, NetBSD, OpenBSD, &sunos;, HP/UX, и &solaris;.
IPFILTER активно разрабатывается и поддерживается, регулярно
выпускаются обновленные версии.</para>
<para>IPFILTER основан на межсетевом экране уровня ядра, механизм
<acronym>NAT</acronym> может управляться и контролироваться
через пользовательский интерфейс. Правила межсетевого экрана
<para>IPFILTER основан на межсетевом экране и механизме
<acronym>NAT</acronym> уровня ядра, которые управляются и контролируются
утилитами уровня пользовательских процессов. Правила межсетевого экрана
могут устанавливаться или удаляться утилитой &man.ipf.8;.
Правила <acronym>NAT</acronym> могут устанавливаться или
удаляться утилитой &man.ipnat.1;. Утилита &man.ipfstat.8;
выводит статистику IPFILTER для ядра. Программа
&man.ipmon.8; заносит действия IPFILTER в файлы системных
&man.ipmon.8; может заносить действия IPFILTER в файлы системных
протоколов.</para>
<para>IPF был первоначально написан с использованием правила
@ -440,7 +558,7 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
с правилами без сохранения состояния. Со временем IPF
был расширен и включает параметры <quote>quick</quote> и
<quote>keep state</quote> (сохранение состояния), которые
кардинальным образом изменяют обработку пакетов.
кардинальным образом изменяют логику обработки пакетов.
Официальная документация IPF включает традиционные параметры
правил с традиционной последовательностью обработки пакетов.
Измененные функции включены в виде дополнительных параметров,
@ -451,23 +569,12 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
состояния <quote>keep state</quote>. Это основа для создания
включающего межсетевого экрана.</para>
<!-- практически полное дублирование вышеизложенного
<para>An inclusive firewall only allows packets matching the
rules to pass through. This way you can control what services
can originate behind the firewall destined for the public
Internet and also control the services which can originate from
the public Internet accessing your private network. Everything
else is blocked and logged by default design. Inclusive
firewalls are much, much more secure than exclusive firewall
rule sets and is the only rule set type covered herein.</para>
-->
<para>Детальное описание методов обработки правил:
<para>Детальное описание традиционных методов обработки правил:
<ulink url="http://www.obfuscation.org/ipf/ipf-howto.html#TOC_1"></ulink>
и
<ulink url="http://coombs.anu.edu.au/~avalon/ip-filter.html"></ulink>.</para>
<para>IPF FAQ
<para>IPF FAQ находится по адресу
<ulink url="http://www.phildev.net/ipf/index.html"></ulink>.</para>
<para>Архив списка рассылки по IPFilter с возможностью поиска доступен
@ -484,10 +591,10 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
<para>IPF включен в базовую систему &os; в качестве отдельного
загружаемого модуля. Система динамически загрузит модуль IPF,
если в rc.conf указана переменная
если в <filename>rc.conf</filename> указана переменная
<literal>ipfilter_enable="YES"</literal>. Модуль создается
с включенным протоколированием и правилом по умолчанию
<literal>block all</literal> (пропускать все). Для изменения
<literal>pass all</literal> (пропускать все). Для изменения
правила по умолчанию не обязательно собирать ядро с новыми
параметрами. Просто добавьте в конец набора правило,
блокирующее все пакеты.</para>
@ -516,7 +623,7 @@ options ALTQ_NOPCC # Required for SMP build</programlisting>
<secondary>параметры ядра</secondary>
</indexterm>
<para>Сборка ядра с &os; включением IPF не обязательна.
<para>Включение IPF в ядро &os; не является обязательным требованием.
Эта процедура представлена здесь в качестве дополнительной
информации. При включении IPF в ядро загружаемый модуль
не используется.</para>
@ -580,7 +687,7 @@ ipnat_rules="/etc/ipnat.rules" #
<primary><command>ipf</command></primary>
</indexterm>
<para>Команда ipf используется для загрузки файла с правилами.
<para>Команда &man.ipf.8; используется для загрузки файла с правилами.
Обычно создается файл, содержащий подготовленный набор
правил, который полностью замещает набор, используемый
на данный момент:</para>
@ -591,14 +698,15 @@ ipnat_rules="/etc/ipnat.rules" #
<para><option>-f</option> указывает файл с правилами, который необходимо загрузить.</para>
<para>Таким образом, после внесения изменений в файл правил и
запуска вышеприведенной команды IPF, набор правил межсетевого экрана
обновляется без перезагрузки системы. Для обновления правил
<para>Это дает вам возможность отредактировать файл с правилами,
запустить вышеприведенную команду IPF, тем самым обновить набор правил
работающего межсетевого экрана без перезагрузки системы. Для
обновления правил
такой подход очень удобен, поскольку команду можно выполнять
столько раз, сколько нужно.</para>
<para>На странице справочной системы &man.ipf.8; находится
подробная информация по флагам этой команды.</para>
подробная информация по всем флагам этой команды.</para>
<para>Набор правил для команды &man.ipf.8; должен быть в виде
стандартного текстового файла. Правила, написанные в виде
@ -654,7 +762,8 @@ ipnat_rules="/etc/ipnat.rules" #
<para>При задании флага <option>-i</option> или <option>-o</option>
соответственно для входящих или
или исходящих пакетов, будет получен и отображен список правил,
исходящих пакетов, команда извлечет и отобразит соответствующий
список правил, установленных и
используемых на данный момент.</para>
<para><command>ipfstat -in</command> отображает правила, применяемые
@ -708,16 +817,16 @@ ipnat_rules="/etc/ipnat.rules" #
<para>Для того, чтобы стало возможно использование команды
<command>ipmon</command>, необходимо включить параметр ядра
IPFILTER_LOG. Эта команда может использоваться в двух различных
<literal>IPFILTER_LOG</literal>. Эта команда может использоваться в двух различных
режимах. В основном режиме, который используется по умолчанию,
она используется без флага <option>-D</option>.</para>
<para>В режиме даемона создается непрерывный протокол, и возможен
просмотр предыдущих событий. В этом режиме IPFILTER работает
в &os;. Поскольку в &os; встроена функция ротации файлов
протокола, лучше использовать syslogd, чем используемый по
протокола, лучше использовать &man.syslogd.8;, чем используемый по
умолчанию вывод в обычный файл. В <filename>rc.conf</filename>
по умолчанию ipmon_flags имеет значение <option>-Ds</option>:</para>
по умолчанию <literal>ipmon_flags</literal> имеет значение <option>-Ds</option>:</para>
<programlisting>ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
@ -725,9 +834,9 @@ ipnat_rules="/etc/ipnat.rules" #
# n = map IP &amp; port to names</programlisting>
<para>Описывать преимущества протоколирования излишне. Например,
оно дает возможность просмотра информации о отброшенных
пакетах, откуда они пришли и куда направлялись. Это дает
определенные возможности отслеживания атак.</para>
оно дает возможность отложенного просмотра информации об отброшенных
пакетах, откуда они пришли и куда направлялись.
Эта информация существенно помогает при отслеживании атак.</para>
<para>Даже с включенным протоколированием, IPF не ведет протокол
для каждого правила. Администратор межсетевого экран должен решить,
@ -735,26 +844,25 @@ ipnat_rules="/etc/ipnat.rules" #
слово log к этим правилам. Обычно протоколируются только правила,
отбрасывающие пакеты.</para>
<para>Довольно часто правило по умолчанию, запрещающее прохождение
пакетов, включается в набор последним, и для него применяется
ключевое слово log. Так вы можете увидеть все пакеты, не
<para>Включение в набор последнего правила, запрещающего прохождение
пакетов, в сочетании с ключевым словом <literal>log</literal> является
довольно распространённой практикой. Так вы можете увидеть все пакеты,
не
попадающие ни под одно правило набора.</para>
</sect2>
<sect2>
<title>Протоколирование IPMON</title>
<para>Для сбора данных <application>Syslogd</application>
использует свой собственный
<para>Для разделения собираемых данных
<application>syslogd</application> использует свой собственный
специальный метод. Он использует группировку по категории
(<quote>facility</quote>) и уровню (<quote>level</quote>).
IPMON в режиме <option>-Ds</option> использует
<literal>security</literal>
<literal>local0</literal>
в качестве имени <quote>категории</quote>.
Все протоколируемые IPMON данные также
отправляются на <literal>security</literal>.
Для сбора
протоколируемых данных могут быть использованы следующие
Для дальнейшего разделения
протоколируемых данных, если такое необходимо, могут быть использованы следующие
уровни:</para>
<screen>LOG_INFO - packets logged using the "log" keyword as the action rather than pass or block.
@ -765,29 +873,29 @@ LOG_ERR - packets which have been logged and which can be considered short</scre
<para>Для указания IPFILTER протоколировать все данные в
<filename>/var/log/ipfilter.log</filename>, создайте этот
файл следующей командой:</para>
файл заранее, выполнив следующую команду:</para>
<screen>&prompt.root; <userinput>touch /var/log/ipfilter.log</userinput></screen>
<para>Функционирование syslog управляется настройками в файле
<para>Функционирование &man.syslogd.8; управляется настройками в файле
<filename>/etc/syslog.conf</filename>. Файл
<filename>syslog.conf</filename> позволяет достаточно гибко
настроить обработку системных сообщений, выдаваемых программами,
такими как IPF.</para>
<para>Добавьте в <filename>/etc/syslog.conf</filename>
следующий оператор:</para>
следующую запись:</para>
<programlisting>security.* /var/log/ipfilter.log</programlisting>
<programlisting>local0.* /var/log/ipfilter.log</programlisting>
<para><literal>security.*</literal> означает запись всех
<para><literal>local0.*</literal> означает запись всех
протоколируемых сообщений в указанный файл.</para>
<para>Для применения внесенных в
<filename>/etc/syslog.conf</filename> изменений вы можете
перезагрузиться или заставить syslog перечитать
перезагрузиться или заставить &man.syslogd.8; перечитать
<filename>/etc/syslog.conf</filename>, выполнив команду
<command>/etc/rc.d/syslogd reload</command></para>
<command>/etc/rc.d/syslogd reload</command>.</para>
<para>Не забудьте отредактировать
<filename>/etc/newsyslog.conf</filename> для ротации только
@ -847,23 +955,23 @@ LOG_ERR - packets which have been logged and which can be considered short</scre
<listitem>
<para><literal>PR</literal>, с последующим именем или
номером протокола, например PR tcp.</para>
номером протокола, например <literal>PR tcp</literal>.</para>
</listitem>
<listitem>
<para><literal>len</literal>, с последующей длиной заголовка
и общей длиной пакета, например len 20 40.</para>
и общей длиной пакета, например <literal>len 20 40</literal>.</para>
</listitem>
</orderedlist>
<para>Для <acronym>TCP</acronym> пакетов добавляется дополнительное
поле, начинающееся с дефиса, за которым следуют буквы,
соответствующие установленным флагам. На странице справочника
находится список букв и флагов.</para>
&man.ipf.5; находится список букв и флагов.</para>
<para>Для пакетов ICMP, в конце находятся два поля,
одно всегда <quote>ICMP</quote>, а во втором тип
ICMP сообщения (message и sub-message),
одно всегда <quote>ICMP</quote>, а второе содержит тип и подтип
ICMP сообщения (message и sub-message), разделенные символом косой черты,
например ICMP 3/3 для сообщения <quote>port
unreachable</quote>.</para>
</sect2>
@ -873,7 +981,7 @@ LOG_ERR - packets which have been logged and which can be considered short</scre
<para>Некоторые опытные пользователи IPF создают файл правил,
поддерживающий использование символьной подстановки. Основное
преимущество использования такого скрипта заключается в
преимущество использования такого подхода заключается в
возможности изменения значения, присваиваемого символьному
имени, в результате чего во всех правилах, содержащих эту
символьную подстановку, будет использоваться новое значение.
@ -881,8 +989,8 @@ LOG_ERR - packets which have been logged and which can be considered short</scre
переменные, а затем использовать их сразу в нескольких
правилах. Ниже дан пример такого использования.</para>
<para>Синтаксис скрипта совместим с sh, csh, и
tcsh.</para>
<para>Синтаксис скрипта совместим с &man.sh.1;, &man.csh.1;, и
&man.tcsh.1;.</para>
<para>Символьная подстановка предваряется знаком доллара:
<literal>&dollar;</literal>.</para>
@ -929,8 +1037,8 @@ EOF
<para>Это все, что требовалось сделать. В данном примере сами
правила не важны; важно то, как используется символьная подстановка.
Если вышеприведенный пример помещен в файл
<filename>/etc/ipf.rules.script</filename>, вы можете
перезагрузить набор правил, введя следующую команду:</para>
<filename>/etc/ipf.rules.script</filename>, то набор правил можно
перезагрузить, введя следующую команду:</para>
<screen>&prompt.root; <userinput>sh /etc/ipf.rules.script</userinput></screen>
@ -957,8 +1065,8 @@ EOF
строку <literal>ipfilter_enable="NO"</literal> (это значение
по умолчанию) в файл <filename>/etc/rc.conf</filename>.</para>
<para>Поместите скрипт, подобный нижеприведенному в каталог
<filename>/usr/local/etc/rc.d/</filename>. У него должно
<para>Поместите скрипт, подобный нижеприведенному, в каталог
<filename class="directory">/usr/local/etc/rc.d/</filename>. У него должно
быть однозначно говорящее о его назначении имя, например
<filename>ipf.loadrules.sh</filename>. Расширение
<filename>.sh</filename> обязательно.</para>
@ -966,44 +1074,41 @@ EOF
<programlisting>#!/bin/sh
sh /etc/ipf.rules.script</programlisting>
<para>Права на этот скрипт должны разрешать чтение, запись и
<para>Права, установленные на этот файл, должны разрешать чтение, запись и
выполнение владельцу <username>root</username>.</para>
<screen>&prompt.root; <userinput>chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh</userinput></screen>
</listitem>
</itemizedlist>
<para>Теперь, при загрузке системы, правила IPF будут
загружены.</para>
<para>Теперь, правила IPF будут загружаться при загрузке
системы.</para>
</sect2>
<sect2>
<title>IPF Rule Sets</title>
<title>Наборы правил IPF</title>
<!-- очередное разжевывание ip basics -->
<para>Набор правил ipf это группа правил, составленных для
пропускания или блокирования пакетов на основе их содержимого.
Двусторонний обмен пакетами между хостами составляет сессию.
Межсетевой экран обрабатывает пакеты в обеих направлениях,
<!--некорректно: The firewall rule set processes the
packet two times, once on its arrival from the public Internet
host and again as it leaves for its return trip back to the
public Internet host. Each TCP/IP service (i.e. telnet, www,
mail, etc.) is predefined by its protocol, source and
destination IP address, or the source and destination port
number.-->
Каждый IP пакет имеет такие характеристики как порт и адрес
источника и назначения. Эти основные характеристики используются
для пропускания или блокирования пакетов.</para>
Межсетевой экран обрабатывает как входящие из Интернет пакеты,
так и исходящие пакеты, которые сгенерированы самой системой в ответ
на входящий трафик. Для каждой службы <acronym>TCP/IP</acronym>
(например, telnet, www, mail, и т.п.) назначен протокол и номер
привилегированного (прослушиваемого) порта. Пакеты, предназначенные
для определенного сервиса, порождаются с некоторым исходящим адресом
и портом из непривилегированного диапазона и направляются
на определенный адрес и определенный порт назначения. Все
упомянутые параметры (номера портов и адреса) могут использоваться
как критерии выбора в правилах, пропускающих или блокирующих доступ
к службам <acronym>TCP/IP</acronym>.</para>
<indexterm>
<primary>IPFILTER</primary>
<secondary>порядок обработки правил</secondary>
</indexterm>
<!-- XXX: something like this already in
<xref linkend="firewalls-concepts">
AND: the para below is repeated 3 times in this chapter-->
<para>IPF был первоначально написан с использованием логики
<quote>последнее совпадающее правило побеждает</quote> и
только с правилами без сохранения состояния. Со временем
@ -1016,18 +1121,6 @@ sh /etc/ipf.rules.script</programlisting>
Это основа для создания набора правил включающего межсетевого
экрана.</para>
<!-- опять network basics, кроме того то же самое повторяется ниже по
тексту практически один в один
<para>An inclusive firewall only allows services matching the
rules through. This way you can control what services can
originate behind the firewall destined for the public Internet
and also control the services which can originate from the
public Internet accessing your private network. Everything
else is blocked and logged by default design. Inclusive
firewalls are much, much securer than exclusive firewall rule
sets and is the only rule set type covered herein.</para>
-->
<warning>
<para>При работе с правилами межсетевого экрана, будьте
<emphasis>очень осторожны</emphasis>. Некоторые
@ -1040,9 +1133,7 @@ sh /etc/ipf.rules.script</programlisting>
</warning>
</sect2>
<!-- Перевод остальной части раздела IPF отложен до исправления
ошибок в следующем sect2 оригинальной версии -->
<!-- Перевод остальной части раздела IPF отложен ... -->
</sect1>
<sect1 id="firewalls-ipfw">