Брандмауэр в случае моста

                                                      Ethernet   мост  состоит  из   двух  или  более  интерфейсов   сконфигурированных  в соответствии Ethernet фреймами прозрачно, и  которые  видимы не напрямую, а через несколько верхних слоев, таких как TCP/IP стек. В контексте фильтрации, конфигурация моста часто считают  привлекательной, поскольку это означает, что фильтрация может быть  выполнена на машине, которая не имеет своего собственного IP адреса. Если  на машине, о которой идет речь, запущена OpenBSD или столь же способная операционная

система, она все еще может фильтровать и перенаправлять трафик.

Главное преимущество такой установки это то, что атака брандмауэра сама по себе более сложна5. Недостатком является то, что все административные задачи должны выполняться на консоли брандмауэра, если вы не настроили сетевой  интерфейс доступный через какую-то защищенную сеть, или даже последовательную консоль. Это также следует, что мосты без настроенных IP адресов не могут быть установлены в качестве шлюза для сети и не может  запускать любые другие службы на интерфейсе моста. Скорее, вы можете подумать о мосте как интеллектуальной выпуклосте на сетевом кабеле,  которая может фильтровать и перенаправлять. Несколько основных предостережений распространяется на использование брандмауэров реализованных в виде мостов:

·                  Интерфейсы находятся в неразборчивом режиме, а это значит, что они получат (и в некоторой степени обработают) каждый пакет в сети.

·                  Мосты  работают  на  уровне  Ethernet,  и  по  умолчанию,  пропускают  все  типы

пакетов, а не только TCP/IP.

·                  Отсутствие IP адреса на интерфейсах делает некоторые из более  эффективных функций, таких как CARP, недоступными.

Способы   конфигурирования   мостов   различаются   в   некоторых    деталях    среди операционных систем. Следующие примеры весьма  поверхностны и не освещаются все возможные недостатки, но должны быть достаточными для начала.

Базовая настройка моста на OpenBSD                                     GENERIC ядро OpenBSD содержит весь необходимый код для конфигурирования моста и фильтрации на нем. Если вы собрали ядро без кода моста, установка довольно проста.

Замечание:

На OpenBSD 4.7и более подних версиях, beconfig команда больше не существует. Вся конфигурация моста и связанные с ними функции были объединены в ifconfig для релиза OpenBSD 4.7.

Для установки моста с двумя интерфейсами в командной строке, необходимо  сначала создать  устройство  моста.  Первому  устройству  принято  давать  порядковый  номер  0, поэтому мы создаем bridge0 устройство с помощью следующей команды:

$ sudo ifconfig bridge0 create

Перед следующей командой ifconfig (brconfig на OpenBSD 4.6 и более ранних версиях) используется ifconfig для проверки что перспективный интерфейсы (в нашем случае, ep0 и ep1) поднялись, но не назначены IP адреса. Затем настройте мост, введя следующее:

$ sudo ifconfig bridge0 add ep0 add ep1 blocknonip ep0 blocknonip ep1 up

На OpenBSD 4.6 и более ранних версиях введите это:

$ sudo brconfig bridge0 add ep0 add ep1 blocknonip ep0 blocknonip ep1 up

OpenBSD команда ifconfig (brconfig на OpenBSD 4.6 и более ранних версиях) содержит бит фильтрации в самом коде. В этом примере мы используем  blocknonip опцию для каждого интерфейса, чтобы блокировать весь не IP трафик.

Замечание:

OpenBSD ifconfig команда предлагает свои собственные опции фильтрации в дополнение к другим опциям  конфигурации. Bridge(4) и ifconfig(8) man страницы предоставляют больше информации. Так как они действуют  на уровене Ethernet, можно использовать ifconfig, чтобы указать правила фильтрации, которые разрешают мосту фильтровать по МАС адресам. Используя эти возможности фильтрации, также возможно, тегировать пакеты моста для дальнейшей обработки в ваших PF правилах через ключевое слово tagged. Для тегирования целей, мост  должен быть с одним из членов интерфейсов. Эта функциональность и ключевые слова были также представлены в brconfig(4) в OpenBSD 4.6 и более ранних версиях.

Чтобы   сделать   конфигурацию   постоянной,   создайте   или   отредактируйте   /etc/ hostname.ep0 и введите следующую строку:

up

Для других интерфейсов, /etc/hostname.ep1 должны содержать ту же строку:

up

Наконец, введите настройки моста в /etc/hostname.bridge0  (/etc/bridgename.bridge0 на OpenBSD 4.6 и более ранних версиях):

5.  Насколько безопасно это на самом деле напоминает о случайных горячих спорах в списках рассылки, таких как OpenBSD-misc и других ориентированных на сеть списках. Чтение о плюсах и минусах в восприятии основных разработчиков OpenBSD может быть как увлекательным, так и полезным.

add ep0 add ep1 blocknonip ep0 blocknonip ep1 up

Ваш  мост  должен  сейчас  быть  поднят,  и  вы  может  продолжать создавать  правила фильтрации PF.

Базовая настройка моста на FreeBSD                                      Для  FreBSD процедура немного более сложная чем на OpenBSD. Для  того,  чтоб было возможно использовать мост, ваше работающее ядро должно  включать в себя модуль if_bridge. Конфигурация ядра по умолчанию собрана  с  этим модулем, так при обычных обстоятельствах,  вы  можете  перейти  непосредственно  к  создания  интерфейса.  Для компиляции устройства моста в ядре, добавьте следующую строку в файл конфигурации ядра:

device if_bridge

Вы также можете загрузить устройство во время загрузки добавив  следующую строку в /etc/loader.conf файл.

if_bridge_load="YES"

Создайте мост введя это:

$ sudo ifconfig bridge0 create

Создание bridge0 интерфейса также создается установкой связанной с  мостом  sysctl значения:

$ sudo sysctl net.link.bridge net.link.bridge.ipfw: 0 net.link.bridge.pfil_member: 1 net.link.bridge.pfil_bridge: 1 net.link.bridge.ipfw_arp: 0 net.link.bridge.pfil_onlyip: 1

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

Замечание:

Эти значения применяются для фильтрации на мосту самого интерфейса. Вам не нужно прикасаться к ним,  так как  IP фильтрация на уровне члена интерфейсов (концы труб) включена по умолчанию.

Перед следующей командой ifconfig, убедитесь, что перспективные интерфейсы (в нашем случае, ep0 и ep1) работают, но не были назначены IP адреса, а затем настройте мост, введя следующее:

$ sudo ifconfig bridge0 addm ep0 addm ep1 up

Сделайте конфигурацию постоянной, добавив следующие строки в /etc/rc.conf:

ifconfig_ep0="up" ifconfig_ep1="up" cloned_interfaces="bridge0" ifconfig_bridge0="addm ep0 addm ep1 up"

Это  означает,  что  ваш  мост  работает,  и  вы  можете  продолжать  создание  правил фильтрации  PF.  Посмотрите  if_bridge(4)  man  страницу   для   дальнейшее  конкретной информации о мосте в FreeBSD.

Базовая настройка моста на NetBSD                                       В NetBSD, в конфигурации по умолчанию нет поддержки фильтрации моста. Вы должны скомпилировать ядро со следующей опцией добавленной в файл конфигурации ядра. Если у вас есть новое ядро вставьте код моста в место, установка довольно проста.

options        BRIDGE_IPF     # bridge uses IP/IPv6 pfil hooks too

Создать мост с двумя интерфейсами в командной строке, первым создается устройство bridge0:

$ sudo ifconfig bridge0 create

Перед  следующей  командой  brconfig  используйте  ifconfig,  чтобы   проверить   каким интерфейсам  являются  работающими  (в  нашем  случае,  ep0  и  ep1),  но  которым  не назначены IP адреса. Затем сконфигурируйте мост, введя это:

$ sudo brconfig bridge0 add ep0 add ep1 up

Затем, включите фильтрацию на устройстве bridge0:

$ sudo brconfig bridge0 ipf

Сделайте конфигурацию постоянной, создав или отредактировав /etc/ifconfig.ep0 и введя следующую строку.

up

Для другого интерфейса, /etc/ifconfig.ep1 должен содержать такую же строку:

up

Наконец, введите установку моста в /etc/ifconfig.bridge():

create

!add ep0 add ep1 up

Ваш  мост  должен  сейчас  работать,  и  вы  можете  продолжить  создавать   правила фильтрации PF. Для дополнительной информации смотрите документацию о PF в NetBSD по ссылке: http://www.netbsd.org/Documentation/network/pf.html.

Набор правил моста                                                                 

Здесь  есть  pf.conf  файл  для  версии  выпуклости-в-проводе  базовый  набор  правил, который мы начали в этой главе. Сеть немного изменена, как показано на рисунке 5-3.

Рисунок 5-3. Сеть с мостом бранмауэром

Машина в локальной сети общий шлюз по умолчанию, который не мост, но могут быть размещены внутри или за пределами моста.

ext_if = ep0 int_if  = ep1

localnet= "192.0.2.0/24" webserver = "192.0.2.227" webports = "{ http, https }" emailserver = "192.0.2.225"

email = "{ smtp, pop3, imap, imap3, imaps, pop3s }" nameservers = "{ 192.0.2.221, 192.0.2.223 }"

client_out = "{ ssh, domain, pop3, auth, nntp, http, https, \ 446, cvspserver, 2628, 5999, 8000, 8080 }"

udp_services = "{ domain, ntp }" icmp_types = "{ echoreq, unreach }" set skip on $int_if

block all

pass quick on $ext_if inet proto { tcp, udp } from $localnet \ to port $udp_services

pass log on $ext_if inet proto icmp all icmp-type $icmp_types pass on $ext_if inet proto tcp from $localnet to port $client_out

pass on $ext_if inet proto { tcp, udp } to $nameservers port domain pass on $ext_if proto tcp to $webserver port $webports

pass log on $ext_if proto tcp to $emailserver port $email pass log on $ext_if proto tcp from $emailserver to port smtp

Возможны значительно более сложные настройки. Но  помните, что в  то  время как перенаправление  будет  работать,  вы  не  сможете  запускать   службы  на  любом  из интерфейсов без IP адресов.

Источник: Книга о PF, by Peter N.M. Hansteen, Перевод выполнил Михайлов Алексей aka iboxjo

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий