Copyright © 2002-2005 Thomas M. Eastep
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, with no Front-Cover, and with no Back-Cover Texts. A copy of the license is included in the section entitled «GNU Free Documentation License».
2007/08/08
Содержание
Эта статья применима для Shorewall версии 3.0 и выше. Если Вы работаете с более ранней версией Shorewall чем Shorewall 3.0.0, тогда смотрите документацию для этого выпуска.
Пример файлов конфигурации в составе Shorewall 3.0.0 и 3.0.1 был некорректен. Первой генерируемой ошибкой была:
ERROR: No Firewall Zone Defined (ОШИБКА: Не определены зоны файервола)
Исправленные файла 'зоны' ('zones') и 'интерфейсы' ('interfaces') доступны по адресу: http://www.shorewall.net/pub/shorewall/3.0/shorewall-3.0.1/errata/one-interface/.
Эта проблема исправлена в Shorewall 3.0.2.
Установка Shorewall на отдельной Linux системе очень проста, если Вы понимаете основы и следуете данной документации.
Это руководство не пытается ознакомить Вас со всеми особенностями Shorewall. Оно больше сфокусировано на том, что требуется для настройки Shorewall в наиболее типичных конфигурациях:
Linux система
Один внешний(публичный) IP-адрес
Интернет-соединение посредством кабельного модема, DSL, ISDN, Frame Relay, коммутирумой линии ... или есть соединение с LAN и Вы просто хотите защитить Вашу Linux систему от других систем в этой LAN.
Shorewall требует, чтобы у Вас был установлен пакет iproute/iproute2 (на RedHat™, этот пакет называется iproute). Вы можете определить установлен ли этот пакет по наличию программы ip на Вашем файерволе. Как root, Вы можете использовать команду which для проверки наличия этой программы:
[root@gateway root]# which ip
/sbin/ip
[root@gateway root]#
Я рекомендую Вам прочитать все руководство для первоначального ознакомления, а лишь затем пройти его снова, внося изменения в Вашу конфигурацию.
Если Вы редактируете Ваши файлы конфигурации на Windows™ системе, Вы должны сохранить их как Unix™ файлы в том случае, если Ваш редактор поддерживает эту возможность, иначе Вы должны пропустить их через программу dos2unix перед тем как использовать их. Аналогично, если Вы копируете конфигурационный файл с Вашего жесткого диска с Windows на дискету, Вы должны воспользоваться dos2unix для копии перед ее использованием с Shorewall.
Если У Вас есть ADSL модем и Вы используете PPTP для взаимодействия с сервером на этом модеме, Вы должны сделать изменения рекоммендуемые здесь в дополнение к тем, что описаны в последующих шагах. ADSL с PPTP наиболее распространен в Европе, особенно в Австрии.
Конфигурационные файлы Shorewall находятся в директории /etc/shorewall
-- в случае простой установки
Вам необходимо иметь дело только с немногими из них, как описано в этом
руководстве.
Замечание для пользователей Debian
Если Вы при установке пользовались .deb, Вы обнаружите, что
директория /etc/shorewall
пуста. Это сделано специально. Поставляемые шаблоны файлов
конфигурации Вы найдете на вашей системе в директории /usr/share/doc/shorewall/default-config
.
Просто скопируйте нужные Вам файлы из этой директории в /etc/shorewall
и отредактируйте
копии.
Заметьте, что Вы должны скопировать /usr/share/doc/shorewall/default-config/shorewall.conf
и /usr/share/doc/shorewall/default-config/modules
в /etc/shorewall
даже если Вы
не будете изменять эти файлы.
После того как Вы установили Shorewall, Вы можете найти примеры файлов настроек в следующих местах:
Если Вы при установке использовали RPM,
примеры будут находится в поддиректории Samples/one-interface
/ директории с
документацией Shorewall. Если Вы не знаете где расположена директория
с документацией Shorewall, Вы можете найти примеры используя
команду:
~# rpm -ql shorewall | fgrep one-interface /usr/share/doc/packages/shorewall/Samples/one-interface /usr/share/doc/packages/shorewall/Samples/one-interface/interfaces /usr/share/doc/packages/shorewall/Samples/one-interface/policy /usr/share/doc/packages/shorewall/Samples/one-interface/rules /usr/share/doc/packages/shorewall/Samples/one-interface/zones ~#
Если Вы установили Shorewall из tarball'а, примеры находятся в
директории Samples/one-interface
внутри
tarball'а.
Если же Вы пользовались пакетом .deb, примеры находятся в
директории /usr/share/doc/shorewall/examples/one-interface
.
По мере того как мы будем знакомится с каждым файлом, я надеюсь, что Вы просмотрите реальный файл на вашей системе -- каждый файл содержит детальное описание конфигурационных инструкций и значений по умолчанию.
Shorewall видит сеть, в которой он работает, как состоящую из набора зон(zones). В случае примера конфигурации с одним интерфейсом, только две зоны определены:
#ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4
Зоны Shorewall описаны в файле /etc/shorewall/zones
.
Заметьте, что Shorewall рассматривает систему файервола как свою
собственную зону. При обработке файла
/etc/shorewall/zones
имя зоны файервола
(«fw» в примере выше) храниться в переменной shell
$FW, которая может использоваться во всей
конфигурации Shorewall для ссылки на сам файервол.
Правила о том какой трафик разрешен, а какой запрещен выражаются в терминах зон.
Вы отражаете Вашу политику по умолчанию для соединений из одной
зоны в другую в файле/etc/shorewall/policy
.
Вы определяете исключения из политики по умолчанию в файле
/etc/shorewall/rules
.
Для каждого запроса на соединение входящего в файервол, запрос
сначала проверяется на соответствие файлу
. Если в этом файле не найдено
правил соответствующих запросу на соединение, то применяется первая
политика из файла
/etc/shorewall/rules
/etc/shorewall/policy
, которая
соответсвует запросу. Если есть общее действие (common
action) определенное для политики в файле
/etc/shorewall/actions
или
/usr/share/shorewall/actions.std
, тогда это действие
выполняется перед тем как применяется политика.
Файл /etc/shorewall/policy,
входящий в пример с
одним интерфейсом, имеет следующие политики:
#SOURCE ZONE DESTINATION ZONE POLICY LOG LEVEL LIMIT:BURST $FW net ACCEPT net all DROP info all all REJECT info
Политики приведенные выше будут:
разрешать все запросы на соединение с файервола в Internet;
отбрасывать (игнорировать) все запросы на соединение из Internet к Вашему файерволу;
отвергать все другие запросы на соединение (Shorewall требует наличия такой политики, применимой для всех остальных запросов).
В данный момент Вы можете отредактировать ваш файл
/etc/shorewall/policy
и внести изменения, какие Вы
считаете необходимыми.
Файервол имеет один сетевой интерфейс. Если соединение с Internet
осуществляется при помощи кабельного или DSL
«Модема», Внешним интерфейсом будет
ethernet-адаптер (например, eth0
),
который подсоединен к этому «Модему», если же Вы соединены посредством протокола
Point-to-Point Protocol over Ethernet
(PPPoE) или Point-to-Point Tunneling
Protocol (PPTP), то в этом случае
Внешним интерфейсом будет PPP
интерфейс (например, ppp0
). Если
Вы подсоединены через обычный модем, Вашим Внешним
интерфейсом будет также ppp0
. Если Вы соединяетесь используя
ISDN, Внешним интерфейсом будет
ippp0
.
Пример конфигурации Shorewall для одного интерфейса подразумевает,
что внешний интерфейс - eth0
. Если
Ваша конфигурация отличается, Вам необходимо изменить файл примера
/etc/shorewall/interfaces
соответственно. Пока Вы
здесь, Вы возможно захотите просмотреть список опций, специфичных для
интерфейса. Вот несколько подсказок:
Если Ваш внешний интерфейс ppp0
или ippp0
, Вы можете заменить
«detect»(обнаружить) во втором столбце на
«-»(знак минус в ковычках).
Если Ваш внешний интерфейс ppp0
или ippp0
или Вы имеете статический
IP-адрес, Вы можете удалить «dhcp» из
списка опций.
Перед тем как идти дальше, мы должны сказать несколько слов о Internet Protocol (IP)-адресах. Обычно, Ваш Интернет-провайдер (Internet Service Provider - ISP) назначает Вам один IP-адрес. Этот адрес может быть назначен статически, при помощи Протокола Динамического Конфигурирования Хостов (Dynamic Host Configuration Protocol - DHCP), в процессе установки Вами коммутированного соединения (обычный модем), или при установке Вами другого типа PPP (PPPoA, PPPoE и т.д.) соединения.
RFC-1918 резервирует несколько диапазонов Частных (Private) IP-адресов для использования в частных сетях:
10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255
На эти адреса иногда ссылаются как на немаршрутизируемые потому, что магистральные маршрутизаторы Интернет не переправляют пакеты, адреса назначения которых зарезервированы RFC-1918. Хотя в некоторых случаях, ISP, назначающие эти адреса, используют затем Преобразование Сетевых Адресов (Network Address Translation - NAT) для перезаписи заголовков пакетов при перенаправлении в/из Интернет.
Перед запуском Shorewall, Вы должны взглянуть
на IP-адрес Вашего внешнего интерфейса и, если он принадлежит одному из
указанных выше диапазонов, Вы должны удалить опцию
«norfc1918» из записи в
/etc/shorewall/interfaces
.
Shorewall включает коллекцию макросов, которые могут быть использованы для быстрого разрешения или запрещения служб. Вы можете найти список макросов включенный в Вашу версия Shorewall при помощи команды:
ls
/usr/share/shorewall/macro.*
Если Вы хотите разрешить соединения из Интернет на Ваш файервол и Вы
нашли соответствующий макрос в
/etc/shorewall/macro.*
, то общий формат правила в
/etc/shorewall/rules
такой:
#ACTION SOURCE DESTINATION PROTO DEST PORT(S)
<macro>/ACCEPT net $FW
Пример 1. Вы хотите запустить Web-сервер и IMAP-сервер на Вашем файерволе:
#ACTION SOURCE DESTINATION PROTO DEST PORT(S) Web/ACCEPT net $FW IMAP/ACCEPT net $FW
Вы можете также указать Ваше правило непосредственно, без
использования предопределенного макроса. Это будет необходимо в случае,
если нет предопределенного макроса соответствующего Вашим требованиям. В
этом случае общий формат правила в
/etc/shorewall/rules
такой:
#ACTION SOURCE DESTINATION PROTO DEST PORT(S) ACCEPT net $FW <protocol> <port>
Пример 2. Вы хотите запустить Web-сервер и IMAP-сервер на Вашем файерволе:
#ACTION SOURCE DESTINATION PROTO DEST PORT(S) ACCEPT net $FW tcp 80 ACCEPT net $FW tcp 143
Если Вы не знаете какой порт и протокол использует определенное приложение, смотрите здесь.
Я не рекоммендую разрешать telnet в/из Интернет потому, что он использует открытый текст (даже для передачи имени и пароля!). Если Вы хотите иметь доступ к командному интерпретатору Вашего файервола из Интернет, используйте SSH:
#ACTION SOURCE DESTINATION PROTO DEST PORT(S) SSH/ACCEPT net $FW
В этом месте, отредактируйте
/etc/shorewall/rules
для добавления необходимых
соединений.
Процедура установки настраивает
Вашу систему для запуска Shorewall при загрузке системе, но запуск
остается отключен, так что система не будет пытаться запустить Shorewall
до полного завершения конфигурирования. Как только Вы полностью завершите
конфигурирование Вашего файервола, Вы можете включить запуск Shorewall,
отредактировав файл /etc/shorewall/shorewall.conf
и
установив параметр STARTUP_ENABLED=Yes
.
Пользователи пакета .deb должны отредактировать файл
/etc/default/shorewall
и установить параметр
STARTUP=1.
Вы должны разрешить запуск путем редактирования файла
/etc/shorewall/shorewall.conf
и установки параметра
STARTUP_ENABLED=Yes.
Файервол запускается при помощи команды «shorewall
start» и останавливается при помощи
«shorewall stop». Когда файервол
остановливается, маршрутизация разрешается на те хосты, которые указаны в
/etc/shorewall/routestopped
.
Запущенный файервол может быть перезапущен при помощи команды
«shorewall restart». Если Вы хотите
полностью удалить изменения сделанные Shorewall из конфигурации Вашего
Netfilter, используйте команду «shorewall
clear».
Если Вы подсоединены к Вашему файерволу из Интернет, не
используйте команду «shorewall stop»
если Вы не добавили запись для IP-адреса, с которого
Вы подсоединены, в /etc/shorewall/routestopped
.
Также, я не рекоммендую использовать «shorewall
restart»; лучше создать альтернативную
конфигурацию и протестировать ее при помощи команды
«shorewall
try».
Я особо рекоммендую просмотреть Вам страницу Общих Особенностей Файлов Конфигурации -- она содержит полезные советы об особенностях Shorewall, делающую администрирование Вашего файервола проще.
История переиздания | ||
---|---|---|
Издание 2.0 | 2005-09-12 | TE |
Больше обновлений для 3.0 | ||
Издание 1.9 | 2005-09-02 | CR |
Обновление для Shorewall 3.0 | ||
Издание 1.8 | 2005-07-12 | TE |
Исправлена неверная ссылка на rfc1918. | ||
Издание 1.7 | 2004-02-16 | TE |
Файл /etc/shorewall/rfc1918 перемещен в /usr/share/shorewall. | ||
Издание 1.6 | 2004-02-05 | TE |
Обновление для Shorewall 2.0 | ||
Издание 1.5 | 2004-01-05 | TE |
Стандартные изменения | ||
Издание 1.4 | 2003-12-30 | TE |
Добавлен срвет по обновлению /etc/shorewall/rfc1918. | ||
Издание 1.3 | 2003-11-15 | TE |
Начальное преобразование DocBook |