Во-первых, как всегда, отзывы. Сегодня -- на статью о "числодробилках":
С интересом прочитал этот выпуск рассылки и узнал об еще одной
специализированной системе для математиков. Наверное, Вам будет
интересно узнать о другой свободно распространяемой и открытой системе
компьютерной алгебры, работающей под Linux, Windows и MacOS - системе
GAP, название которой расшифровывается как "Группы, алгоритмы и
программы", и, может быть, даже опубликовать что-нибудь в Вашей
рассылке. Кстати, я также веду рассылку на Subscribe.Ru, она находится
по адресу http://subscribe.ru/catalog/science.exact.gap/ Материалы о
системе можно посмотреть на сайте Украинской группы пользователей GAP
по адресу http://www.zsu.zp.ua/UkrGAP/ и на моей личной странице
http://www.zsu.zp.ua/ppages/konoval/konov.htm . Там есть как вводные
популярные статьи, так и примеры применения системы. Если будут
вопросы - обращайтесь, пожалуйста!
Вот так. Я раньше о такой программе не знал. И, хотя я не математик,
но мне интересно. Надеюсь, что эта информация станет приятной неожиданностью
еще для кого-нибудь.
Сегодня публикуется статья, посвященная практическому примеру сетевого
администрирования.
В чём разница между мост-брандмауэром (bridging firewal) и обычным брандмауэром
(межсетевой экран, firewall)? Обычный брандмауэр работает, как маршрутизатор:
находящуюся за ним систему кофигурируют таким образом, чтобы из неё межсетевой
экран был виден как шлюз во внешнюю сеть, а внешние маршрутизаторы конфигурируются
так, чтобы видеть его как шлюз в защищенную сеть. Мост (bridge) -- это часть
оборудования, соединяющая два (или более) сегмента сети вместе и просто
перенаправляет пакеты в обе стороны. Другими словами, маршрутизатор соединяет
две сети вместе и выполняет роль транслятора между ними; мост же похож на
патч-кабель (patch cable), соединяющий две части одной сети вместе. Мост-брандмауэр
действует как мост, но одновременно фильтрует проходящие пакеты, оставаясь
невидимым для другой стороны.
Почему у вас может появиться желание использовать мост-брандмауэр? На ум
сразу приходят две причины:
Вы можете подключить брандмауэр не изменяя существующую сетевую конфигурацию.
Вы можете защитить ту часть сети, в которой вы не имеете контроля над
внешней маршрутизацией (external routing) в вашу сеть.
Моя проблема
У меня в офисе новое "с иголочки" ADSL соединение от Demon Internet (ISP
в UK -- United Kingdom или Объединенное Королевство, официальное название
Великобритании. Прим. ред.) с подсетью на 16 адресов (базовый, широковещательный,
ip-адрес шлюза + 13 ip-адресов). По вине капризов и причуд UK-коммерции
и "регулятивного окружения", линия и маршрутизатор были установлены
и являются собственностью British Telecom plc., а оборудование для конфигурации
маршрутизатора, как встроенного шлюза (internal gateway), отсутствует. Это
оставляет мне две возможности:
Соединить каждый хост напрямую с ADSL и настроить iptables отдельно для
каждого из них.
Использовать межсетевой экран с ip-маскарадингом для предоставления внешнему
миру одного ip-адреса.
Первый вариант неприемлем с точки зрения безопасности. Рост числа
iptable-конфигураций увеличивает вероятность ошибки и затраты на администрирование.
Второй вариант тоже имеет свои недостатки. В то время, как почти все можно
настроить и вполне успешно использовать под ip-маскарадингом, есть и исключения,
в том числе некоторые технологии, которые я хотел бы исследовать, например
VPN. Мост-брандмауэр может решить эти проблемы. Такой экран может располагаться
за ADSL-маршрутизатором, выполнять часть его функций и защищать сеть без
перекофигурирования самого маршрутизатора. Последняя оставшаяся проблема
-- это то, что реализация межсетевого моста в стандартном ядре Linux не
использует iptables, поэтому вы получаете машину, которая выполняет либо
функции моста, либо межсетевого экрана, но не может являться и тем и другим
одновременно.
Решение
К счастью есть проект, позволяющий
машине выполнять функции моста (bridging) в связке с iptables так, что любые
проходящие через мост пакеты должны подчиняться правилам iptables. В результате
получаем полностью прозрачный для сети межсетевой экран не требующий специальной
маршрутизации. В том, что касается Интернета, такой брандмауэр никак себя
не проявляет за исключением случая, когда определённые соединения блокируются.
Программное обеспечение представляет собой накладываемую на ядро "заплатку"
(патч, patch), позволяющую существующему коду сетевого моста работать внутри
iptables. Для удобства разработчиками создан rpm-пакет с ядром (для RedHat
7.2) с уже установленной заплаткой. Хуже то, что использование этого патча
мало документировано, поэтому я и подумал о том, чтобы восполнить этот пробел
(в помощь собравшихся пойти по этому пути).
Функционирование моста (bridging) и маршрутизация -- как это работает
Если кратко, то мост работает связывая два или более сетевых интерфейса.
Производя мониторинг активности во всех подключённых сегментах сети, код
реализации моста "выучивает" MAC-адреса, до которых можно "достучаться"
с каждого интерфейса и использует эту информацию для принятия решения о
том, куда отправлять тот или иной пакет. Интерфейсы, подключенные к мосту
обычно не имеют ассоциированных с ними ip-адресов , но, в целом, с точки
зрения межсетевого экрана, мост представляет собой единый интерфейс.
Мои статические адреса расположены в диапазоне xxx.xxx.xxx.48-63, маска
подсети -- 255.255.255.240. Я решил разделить этот диапазон на два сегмента:
диапазон xxx.xxx.xxx.48-56 будет использоваться для сети, расположенной
перед сетевым экраном и включать в себя ip-адрес ADSL-маршрутизатора (xxx.xxx.xxx.49).
Диапазон xxx.xxx.xxx.57-62 предназначен для сети, расположенной за межсетевым
экраном. Учтите, что это не настоящие подсети, поскольку они соединены при
помощи моста, а не маршрутизатора.
Разрешать любые исходящие соединения из внутренней сети.
Разрешать прохождение пакетов принадлежащих уже установленным соединениям.
Разрешать соединения с указанными портами и хостами, расположенными снаружи.
Объявление переменных
Для понимания и простоты обслуживания, хорошей идеей будет использовать
в качестве имён интерфейсов и ip-адресов переменные. Значения, используемые
в описываемых примерах следующие:
"xxx.xxx.xxx" представляет собой первые три байта ip-адреса. $INTERNAL_ADDRESS_RANGE
содержит адрес сегмента сети, расположенного за межсетевым экраном.
Настройка моста
Теперь мы должны произвести несколько обычных настроек. Во-первых, мы отключим
наши два интерфейса и удалим их ip-адреса.
Теперь, если вы хотите, то можете поднять мост как внутренний интерфейс,
ifconfig $BR_IFACE $BR_IP
Блокирование спуфинга
Мы можем блокировать пакеты со злонамеренно измененными адресами (spoofed)
ещё на уровне цепочки преобразований [mangle] PREROUTING. Здесь мы можем
одновременно захватить как входящие (INPUT) так и транзитные (FORWARDED)
пакеты. Предпочтительнее использовать mangle PREROUTING, чем nat PREROUTING,
потому что при передаче в nat таблице на соответствие ip-адреса и имени
хоста проверяется только первый пакет.
Эта строка гарантирует, что только пакеты с правильными внутренними
адресами ($INTERNAL_ADDRESS_RANGE) будут приняты внутренним интерфейсом
($LAN_IFACE):
Можно сделать межсетевой экран полностью невидимым в сети или, ради удобства,
разрешить соединения из него. Эти команды разрешат все соединения из внутренней
сети. В зависимости от степени вашего доверия к пользователям локальной
сети, вы можете быть более избирательным.
$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $LAN_BCAST_ADDRESS -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $BR_IFACE -s $INTERNAL_ADDRESS_RANGE -d $BR_IP -j ACCEPT
Помните, что пакеты из диапазона $INTERNAL_ADDRESS_RANGE, которые пришли
на неправильный интерфейс, вы уже уничтожили.
Дополнительная информация
Патч на ядро, без которого
правила iptables работать не будут.
Спасибо Lennert Buytenhek за действительно
полезный патч и замечание по этой статье.
David Whitmarsh
David Whitmarsh -- независимый консультант, его компания, Sparkle
Computer Co Ltd, обслуживает главным образом финансовые организации
в Лондоне. При наличии четырех детей время становится большой ценностью,
и единственная для Дейвида возможность поработать с Linux и свободным
софтом -- работа на лаптопе во время ежедневных поездок из Sussex'а.