> man operating_systems
Защищаем Линукс - файрвол за 10 минут.
на Среда, 19 Январь 2005, 16:42
добавил: Антон Малащенко aka Rygoravich список авторов печатать элемент контента создать pdf-файл  элемент контента
категория Статьи > Unix
комментарии: 0
просмотров: 9991


Часть III - Настройка доступа из локальной сети.


В настоящее время все более популярными становятся домашние локальные сети. Если у вас ее нет, вы можете смело пропустить эту часть статьи и сразу перейти к следующей. Если есть - читайте далее.

Итак, все правила, которые мы задали для интернета будут справедливы и для локальной сети - вы уже можете зайти на сервера вашей сети. Однако достаточно часто требуется большее, например, предоставить какие-либо ресурсы другим компьютерам в сети. К тому же, если в сети нет контроллера домена, то вы не сумеете просмотреть список доступных компьютеров, если их адреса не прописаны в /etc/hosts.

Будем исходить из предположения, что ваша сеть основана на технологиях Microsoft - на сегодняшний день это самые распространенны сети. Обмен данными в таких сетях основан на протоколах SMB и NetBEUI (расширение Microsoft для протокола NetBIOS). Мы не будем рассматривать тонкости настройки этих протоколов - ограничимся рассмотрением аспектов их работы при использовании файрвола. Обратите внимание - далее во всех примерах предполагается, что вы подключены к локальной сети через интерфейс eth0. Если используется другой интерфейс - замените все вхождения eth0 на интерфейс вашей локальной сети. Ну что ж, приступим.

# iptables -A INPUT -i eth0 -p TCP --dport 137:139 -j ACCEPT
# iptables -A INPUT -i eth0 -p UDP --dport 137:139 -j ACCEPT

Эти команды добавляют в цепочку INPUT правила, разрешающие прием пакетов по протоколам TCP и UDP, пришедших с сетевого интерфейса eth0 на порты 137, 138 и 139 (--dport от "destination port"). Именно эти порты используются протоколом NetBIOS. Аналогичным образом делаем для цепочки OUTPUT, не забыв, естественно, заменить ключи -i и --dport на -o и --sport соответственно (т.е. интерфейс назначения вместо интерфейса источника и порт источника вместо порта назначения):

# iptables -A OUTPUT -o eth0 -p TCP --sport 137:139 -j ACCEPT
# iptables -A OUTPUT -o eth0 -p UDP --sport 137:139 -j ACCEPT

Теперь ваш компьютер может быть не только клиентом, но и smb-сервером, разумеется, если вы настроили соответствующий сервис. Однако остается нерешенным один вопрос - определение адресов по протоколу NetBIOS:

# nmblookup server
querying server on 192.168.255.255
name_query failed to find name server

Здесь предполагается, что server соответствует имени какого-либо компьютера, подключенного сети. Дело в том, что для определения адреса компьютера команда nmblookup открывает порт в верхнем диапазоне адресов и посылает с него один запрос на порт 137 всех компьютеров сети сразу (broadcast) по протоколу UDP, после чего компьютер, чье имя соответствует запрошенному в исходном пакете отвечает конкретно вашему. При этом ответный пакет не может получить статус ESTABLISHED, т.к. адрес отправителя (например 192.168.5.1) не соответствует адресу, на который был послан запрос (например 192.168.255.255). Однако зная механизм определения адреса несложно создать соответствующее правило:

# iptables -A INPUT -i eth0 -p UDP --sport 137 --dport 32768:65535 -j ACCEPT

Проверяем результат:

# nmblookup server
querying server on 192.168.255.255
192.168.5.1 server<00>

Работает. Итак, у нас получился следующий набор правил:

# iptables-save
# Generated by iptables-save v1.2.8 on Sat Jan 15 07:08:29 2005
*filter
:INPUT DROP [714:58115]
:FORWARD DROP [0:0]
 :OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 137:139 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 137:139 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 137 --dport 32768:65535 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 32768:65535 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 32768:65535 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 137:139 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 137:139 -j ACCEPT
COMMIT
# Completed on Sat Jan 15 07:08:29 2005

А что делать, если вам захочется раздать какой-нибудь сервис на всю сеть? Возможно, у вас настроен http- или ftp-сервер и вы хотите, чтобы он был доступен всем компьютерам в локальной сети. Общий рецепт прост - откройте TCP-порт, который обслуживает данный сервер. Напрмер, для http-сервера это можно сделать так:

# iptables -A INPUT -i eth0 -p TCP --dport 80 -j ACCEPT
# iptables -A OUTPUT -o eth0 -p TCP --sport 80 -j ACCEPT

Т.е. для любого сервиса нужно добавить по одному правилу в цепочки INPUT и OUTPUT, разрешающему соответственно прием и отправку пакетов с использованием этого порта для конкретного сетевого интерфейса. Список соответствия портов конкретным сервисам находится в файле /etc/services. Для некоторых сервисов также имеет смысл открыть UDP-порт, что может привести к некоторому ускорению обслуживания, однако вполне можно обойтись и без него. Кроме того, нужно учесть еще один момент - для использования некоторых сервисов (например, ftp или irc) требуется загрузка дополнительных модулей. Причины этого описаны в Iptables Tutorial, здесь же укажем только команды, необходимые для работы этих протоколов.

# modprobe ip_conntrack_ftp

Для работы сервера FTP.

# modprobe ip_conntrack_irc

Для работы сервера IRC.

Итак, все правила созданы. Однако впереди нас ждет еще один подводный камень - они будут работать только до первой перезагрузки... А после нее опять будут настройки по умолчанию, то есть разрешение для всех действий. Что делать? Читать следующую часть статьи.


индекс статьи
страница 1 : страница без заголовка
страница 2 : страница без заголовка
страница 3 - текущая : страница без заголовка
страница 4 : страница без заголовка


© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.