Возможно вы искали: 'Crazy Machines: Elements'

May 15 2025 19:02:00
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » [FreeBSD] Создание моста-фильтра на основе FreeBSD. (freebsd bridge firewall filter route ipfw)

[FreeBSD] Создание моста-фильтра на основе FreeBSD. (freebsd bridge firewall filter route ipfw)

Ключевые слова: freebsd, bridge, firewall, filter, route, ipfw, (найти похожие документы)

From: http://securityportal.ru <info@securityportal.ru>
Subject: [FreeBSD] Создание моста-фильтра на основе FreeBSD.

Оригинал: http://securityportal.ru/network/FilterBridge.html

Создание моста-фильтра на основе FreeBSD.
По всем вопросам,возникшим у вас пишите по адресу: info@securityportal.ru


1. Почему именно мост?
2. Конфигурация ядра.
3. Конфигурационные файлы.
4. Настройка правил для Firewall.
5. Запуск моста с фильтрацией.
6. Производительность и несколько замечаний.
7. Дополнения читателей.

1. Почему именно мост? .

В некоторых случаях бывает полезно разделить одну физическую сеть на
некоторые сегменты без создания подсетей и установки маршрутизаторов.
Например для того, чтобы изолировать нагруженные трафиком участки
сети. В дальнейшем будем рассматривать сеть на основе технологии
Ethernet (Fast Ethernet)

Мост работает на канальном уровне, строя адресную таблицу на основе
пассивного наблюдения за трафиком, циркулирующем в подключенных к нему
сегментах. В эту таблицу заносятся MAC-адреса устройств и порт моста,
к которому подключен сегмент с этими устройствами. Мост передает
пакеты только в том случае, если в соответствии с его таблицей адрес
источника и адрес назначения подключены к разным портам.

В настоящее время повсеместно используются многопортовые мосты
-коммутаторы. На основе компьютера с двумя сетевыми картами можно тоже
построить мост. Это позволяют сделать ОС FreeBSD и Linux. Однако эти
ОС позволяют также создать мосты с фильтрацией - т.е. мост, помимо
всего выполняющий и функции фильтра ip пакетов, или, как иногда его
называют - firewall.

Где же может применяться такой фильтрующий мост? Первое и самое
очевидное - при подключении к провайдеру. Вот пример - вам выделили
диапазон ip-адресов и выдали ethernet подключение к маршрутизатору
провайдера, к которому вы доступа не имеете и который не выполняет
абсолютно никакой фильтрации, а вам необходимо защитить свои сервера,
создать DMZ... Конечно, сразу напрашивается решение - поставить
програмный маршрутизатор на основе FreeBSD, выполняющий фильтрацию.
Однако тут обычно и бывают сложности. Во-первых, у вас сразу
уменьшится число ip-адресов на 2, т.к. маршрутизатору нужен адрес на
каждый интерфейс и вам придется перекраивать выделенный блок
ip-адресов, чтобы получить сеть с нормальной маской (возможно, даже
теряя адреса). Во вторых, для установки маршрутизатора необходимо,
чтобы провайдер прописал его на своем маршрутизаторе, чтобы тот был в
курсе, куда посылать пакеты для вашего блока ip-адресов. Вот тут и
придет на помощь мост с фильтрацией.

Данную схему подключения можно изобразить следующим образом:

Схема

Или же вы просто хотите отгородить один из участков своей сети с
фильтрацией проходящего в него и из него трафика.

К тому же мост имеет еще одно достоинство - ему не нужны ip-адреса.
Его интерфейсы могут работать без назначения ip-адресов, что делает
мост прозрачным. Однако, если вы хотите уметь к нему досуп, скажем, по
ssh, а не только с консоли - можно назначить один ip-адрес на один из
интерфейсов, что мы и сделаем.

Благодаря возможностям ipfw и dummynet вы сможете также ограничивать
трафик, проходящий через мост.

2. Конфигурация ядра. .

Допустим, уже имеется машина с двумя сетевыми картами, доведенная до
состояния STABLE (мы работали с версией 4 - RELENG_4), ядро которой
уже было собрано с поддержкой сетевыйх карт. Для того, чтобы мост
заработал, сетевые карты также должны поддерживать работу в
"promiscuous" режиме. Для большей произоводительности желательно,
чтобы это были PCI карты. Мы использовали две 3COM 3C905B-TX.

Добавим необходимые параметры в конфиг ядра:
options BRIDGE
# Включим поддержку firewall
options IPFIREWALL
# для того, чтобы добавить возможность firewall вести логи
# добавим параметр:
options IPFIREWALL_VERBOSE
# ограничим число пакетов, о которых ядро будет сообщать:
options IPFIREWALL_VERBOSE_LIMIT=10
# Добавим еще парочку нужных параметров
# ICMP_BANDLIM включает ограничение полосы для
# ответов icmp error # Поскольку мы дадим мосту 1 ip-адрес,
# этот параметр в некоторых случаях
# помогает от D.O.S. атак.
options ICMP_BANDLIM
# Добавим также параметр, который заблокирует
# перезагрузку системы при нажатии Ctrl+Alt+Del
options SC_DISABLE_REBOOT

После того, как необходимые парметры добавлены, пересоберем ядро (о
том, как это сделать, можно прочитать тут: http://www.freebsd.org.ru/how-to/kernelconfig.html
http://www.freebsd.org.ru/how-to/kernelconfig.html . Пример конфига
ядра для нашей конфигурации с картами 3COM 3C905B-TX можно взять
тут http://securityportal.ru/network/bridge ).

3. Конфигурационные файлы.

Для того, чтобы запустить IPFirewall, необходимо добавить несколько
параметров в /etc/rc.conf. Для начала опишем необходимые параметры, а
затем приведем готовый фрагмент для вставки в rc.conf.

Прежде всего необходимо добавить параметр firewall_enable="YES".
Параметр firewall_script="/etc/rc.firewall" укажет, какой скрипт будет
запускаться для активизации правил firewall. Следующим параметром
будет firewall_type. Этот параметр показывает, какой тип firewall
будет использоваться из заранее приготовленных разработчиками (open,
client, simple, closed) или же имя файла, из которого будут браться
правила для firewall, если не подходит ни один из заранее
приготовленных типов. Мы создадим файл ipfw.rules со своими
собственными правилами, посему поставим
firewall_type="/etc/ipfw.rules". Также необходим параметр
firewall_quiet. Если его поставить в YES, то при загрузке будет
отключен вывод на экран правил firewall. Однако для начала лучше ему
дать значение NO, чтобы видеть активируемые правила при загрузке.
Парметр firewall_logging установим в YES для того, чтобы велись логи.
Поскольку у нас машина с двумя сетевыми картами и чтобы она вдруг не
заработала как маршрутизатор поставим gateway_enable="NO"

Итого, у нас получилась следующая вставка в rc.conf:
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="/etc/ipfw.rules"
firewall_quiet="NO"
firewall_logging="YES"
gateway_enable="NO"

4. Настройка правил для Firewall.

Создадим и отредактируем файл /etc/ipfw.rules, который мы указали в
параметрах в rc.conf. Поскольку в конфиг ядра мы не добавляли параметр
IPFIREWALL_DEFAULT_TO_ACCEPT, то ipfw по умолчанию не зависимо от
наших настроек будет добавлять в конец правило 65535 deny ip from any
to any. Поэтому мы должны разрешить все необходимые сервисы в нашем
файле.

Пусть у нас есть 2 интерфейса - xl0 и xl1. Для мостов приемлимым
решением (а иногда и необходимым) является разрешение любого трафика
на одном из интерфейсов и фильтрация входящего и исходящего на другом.
Так и поступим - разрешим любой трафик на интерфейсе xl1, а
фильтровать будем входящий на xl0.

При работе моста есть еще одна особенность. Дело в том, что для
корректной работы ip протокола необходимо использование протокола ARP.
Если пакеты этого протокола не будут проходит через мост, то станции
по разные стороны моста не смогут передавать друг другу пакеты, т.к.
не будет выполняться преобразование ip-адресов в mac-адреса сетевых
карт. ipfw имеет возможность ограничивать ethernet-протоколы. Для
этого создается специальное правило для udp пакетов с адресом
источника 0.0.0.0, а порт источника будет показывать номер
ethernet-протокола. Таким образом можно заставить мост пропускать или
не пропускать протоколы, отличные от IP. Для вышеупомянутого протокола
arp правило будет выглядеть следующим образом:
add allow udp from 0.0.0.0 2054 to 0.0.0.0

Поскольку мы решили помимо фильтрации также использовать traffic
shaper dummynet, напишем правило, ограничивающее, например, весь
проходящий icmp-трафик (входящий+исходящй) на 50Кб/с:
add pipe 1 icmp from any to any
pipe 1 config bw 50Kbit/s queue 10

Заметим, что в случае написания других правил для shaper'а, включающих
в себя адресаузлов, сетей - их нужно ставить в самое начало нашего
файла ipfw.rules. ipfw устроен таким образом, что пакет проверяется по
правилам сверху вниз и как только находится правило, которому он
удовлетворяет - проверка на соответствие другим нижестоящим правилам
не производится. Таким образом, если пакет будет удовлетворять правилу
фильтрации - он может не дойти до правил traffic shaper'а. Однако если
первыми стоят правила шейпера, то существует возможность пропустить
пакет по правилам, котрые стоят ниже правил шейпера. Для этого нужно
установить переменную net.inet.ip.fw.one_pass=0.

Добавим еще парочку правил, например, разрешающих прохождение
входящего dns-трафика, обращений к web-серверу и icmp-трафика через
интерфейс xl0. Также не забудем разрешить любой трафик через xl1:
add 1000 allow tcp from any to any in via xl0 established
add 1200 allow tcp from any to any domain in via xl0
add 1300 allow udp from any to any domain in via xl0
add 1400 allow udp from any domain to any 1024-65535 in via xl0
add 1500 allow tcp from any to any www in via xl0
add 1600 allow icmp from any to any
add 1700 allow ip from any to any via xl1

Итого, наш итоговый файл /etc/ipfw.rules получился следующим:
add pipe 1 icmp from any to any
pipe 1 config bw 50Kbit/s queue 10
add 0900 allow udp from 0.0.0.0 2054 to 0.0.0.0
add 1000 allow tcp from any to any in via xl0 established
add 1200 allow tcp from any to any domain in via xl0
add 1300 allow udp from any to any domain in via xl0
add 1400 allow udp from any domain to any 1024-65535 in via xl0
add 1500 allow tcp from any to any www in via xl0
add 1600 allow icmp from any to any
add 1700 allow ip from any to any via xl1

5. Запуск моста с фильтрацией.

Перезагрузимся, чтобы вступили в силу настройки rc.conf и загрузилось
новое ядро.

По умолчанию мост не работает. Для его запуска необходимо установить
параметры net.link.ether.bridge_ipfw (чтобы работала фильтрация) и
net.link.ether.bridge(чтобы активировать мост) в 1. Также необходимо
для одновременной работы шейпера и фильтрации переменную
net.inet.ip.fw.one_pass установить в 0. Сделаем это из приглашения
командной строки:
# sysctl -w net.inet.ip.fw.one_pass=0
# sysctl -w net.link.ether.bridge_ipfw=1
# sysctl -w net.link.ether.bridge=1

Все, мост работает. Для того, чтобы каждый раз после перезагрузки не
надо было изменять значения переменных, добавим следующие строки в
/etc/sysctl.conf (если нет такого файла - создайте его):
net.inet.ip.fw.one_pass=0
net.link.ether.bridge_ipfw=1
net.link.ether.bridge=1

6. Производительность и несколько замечаний.

Итак, мост готов. МЫ провели примерные замеры производительности.
Конфигурация: PIII-500MHz, 128Mb RAM, 2 сетевых интерфейса 3COM
3C905B-TX, 3 очереди для шейпера + фильтр на 30 правил. Результаты
получились следующими: задержка в 0.2 ms при отсутствии трафика и 0.8
ms при интенсивном обмене.

Несколько замечаний по использованию мостов. Мосты не допускают
создания архитектуры с петлями, поскольку в этом случае будет
некорректно строится таблица соответствия моста. Если вы используете
мост с фильтрацией, постарайтесь предусмотреть в правилах фильтра всё
необходимое, иначе вы рискуете потратить много времени на поиск места,
через которые не проходят нужные вам пакеты, особенно в больших сетях
со сложной топологией. Мы также рекомендуем назначать на один из
интерфейсов ip-адрес, чтобы иметь возможность настраивать его удаленно
через ssh. И конечно, при использовании фильтрации, у вас должны быть
открыты необходимые порты tcp для работы протокола ssh.

Ссылки.

- http://www.freebsd.org.ru/handbook/bridging.html
- http://www.freebsd.org.ru/handbook/firewalls.html
- http://info.iet.unipi.it/~luigi/ip_dummynet/

7. Дополнения читателей

Прислал Pavel V.Zheltobryukhov <pij@rambler.ru>:

Родилось небольшое замечание - в список команд для запуска моста имхо
стоит добавить согласно man sysctl -w
net.link.ether.bridge_cfg=xl0:0,xl1:0 для перевода карт в promiscoius
режим.

(c) http://www.securityportal.ru , 2002г.
1001 Прочтений •  [[FreeBSD] Создание моста-фильтра на основе FreeBSD. (freebsd bridge firewall filter route ipfw)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• [FreeBSD] Создание моста-фильтра на... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка