<para>Этот документ разрешается копировать, распространять и/или изменять при выполнении условий лицензии GNU Free Documentation License версии
1.2 или более поздней, опубликованной Free Software Foundation; без неизменяемых разделов, без текста на верхней обложке, без текста на нижней обложке. Копия лицензии приведена по ссылке
<para>В Shorewall предусмотрены два вида чёрных списков, статические и динамические.
Опция BLACKLISTNEWONLY в файле /etc/shorewall/shorewall.conf задаёт параметры фильтрации согласно этим спискам:
</para>
<orderedlist>
<listitem>
<para>BLACKLISTNEWONLY=No -- проверка осуществляется для всех входящих пакетов.
Новые записи в чёрном списке позволяют заблокировать уже существующие соединения.
</para>
</listitem>
<listitem>
<para>BLACKLISTNEWONLY=Yes -- проверка осуществляется только для новых запросов на установление соединения.
Записи в чёрном списке не влияют на уже существующие соединения. На соответствие чёрному списку проверяется только адрес источника.
</para>
</listitem>
</orderedlist>
<important>
<para><emphasisrole="bold">На соответствие чёрному списку проверяется только адрес источника </emphasis>. Чёрные списки закрывают доступ только хостам, перечисленным в списке, но не закрывают доступ к самим этим хостам.
</para>
</important>
<important>
<para><emphasisrole="bold">Динамические чёрные списки в Shorewall непригодны для случаев, когда список содержит тысячи адресов.
Статические списки могут работать с большим числом адресов, но только при использовании наборов IP (ipset)</emphasis>. Без ipset большие чёрные списки будут загружаться слишком долго и заметно снизят производительность файрвола.
</para>
</important>
</section>
<section>
<title>Статические чёрные списки </title>
<para>Далее описаны параметры конфигурации статических чёрных списков в Shorewall:
</para>
<itemizedlist>
<listitem>
<para>Пакеты с хостов из чёрного списка будут отбрасываться без уведомления (drop) или с уведомлением (reject), согласно параметру BLACKLIST_DISPOSITION из файла <ulink
<para>При наличии большого статического чёрного списка можно включить опцию DELAYBLACKLISTLOAD в файле shorewall.conf (начиная с Shorewall версии
2.2.0). Если DELAYBLACKLISTLOAD=Yes, то Shorewall будет загружать правила чёрного списка после установления соединений.
Хотя при этом соединения с хостов из чёрного списка могут осуществляться в течение времени создания списка, эта опция позволяет существенно снизить время запрета соединений в ходе команд "shorewall [re]start".</para>
<para>Начиная с Shorewall версии 2.4.0 поддерживаются наборы IP, или <ulink
url="ipsets.html">ipsets</ulink> для определения статического чёрного списка. Пример:
</para>
<programlisting>#ADDRESS/SUBNET PROTOCOL PORT
+Blacklistports[dst]
+Blacklistnets[src,dst]
+Blacklist[src,dst]
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE</programlisting>
<para>В этом примере задан ipset набора портов (portmap)
<emphasis>Blacklistports</emphasis> для запрета трафика на целевые порты, указанные в этом ipset. Есть также
<emphasis>Blacklistnets</emphasis> (типа <emphasis>nethash</emphasis>) и
<emphasis>Blacklist</emphasis> (типа <emphasis>iphash</emphasis>), закрывающие доступ с подсетей и отдельных адресов.
Обратите внимание, что указаны
[src,dst], чтобы можно было связать отдельные записи наборов с другими portmap ipset и включить чёрные списки сочетаний ( <emphasis>адрес источника</emphasis>, <emphasis>целевой порт</emphasis>).
<para>Начиная с Shorewall версии 3.2.0 Beta2 доступны следующие дополнительные команды:
</para>
<itemizedlist>
<listitem>
<para>logdrop <emphasis><список IP-адресов></emphasis> - пакеты с указанных IP-адресов будут заноситься в протокол и отбрасываться файрволом без уведомления. Уровень протокола задаётся опцией BLACKLIST_LOGLEVEL в ходе последнего [пере]запуска (по умолчанию - 'info', если опция BLACKLIST_LOGLEVEL не задана). </para>
</listitem>
<listitem>
<para>logreject <emphasis><список IP-адресов></emphasis> - пакеты с указанных IP-адресов будут заноситься в протокол и отбрасываться файрволом с уведомлением. Уровень протокола задаётся опцией BLACKLIST_LOGLEVEL в ходе последнего [пере]запуска (по умолчанию - 'info', если опция BLACKLIST_LOGLEVEL не задана).</para>
</listitem>
</itemizedlist>
<para>Динамические чёрные списки не зависят от опции