| 
 
 
   |   |  www.lissyara.su—> статьи—> FreeBSD—> настройка—> Заметки об IPFW
 
 Заметки об IPFW
Автор: -cat-.
 
   Вместо предисловия: Вопрос- "В FreeBSD есть 3 разных фаервалла, какой использовать?"
 Ответ - "Правильно насторенный."
 Далее по тексту обсуждается IPFW как наиболее часто используемый во FreeBSD фаервалл.
 Как задействовать IPFW?
 Как известно существует два способа подключения IPFW:
 1. Подключение скомпилированного модуля ядра при загрузке системы.
 2. Комплияция IPFW в ядро системы.
 Начнем с последнего - компиляция IPFW в ядро, в MAN-ах этот пункт достаточно подробно освещен:
 Обычно ипользуются следующие опции в конфиге ядра:
 
 - подключение IPFW
 
		
| 
options	IPFIREWALL_VERBOSE
 |  - проходящие пакеты записываются в лог-файл, при использовании опции log в правилах
 
		
| 
options	IPFIREWALL_VERBOSE_LIMIT=100
 |   -ограничение количества записей в лог-файл по одному правилу, в правилах IPFW значение можно изменить через опцию logamount
 
 
		
| 
options	IPFIREWALL_FORWARD
 |   - форвардинг пакетов, очень полезная опция при настройке прозрачного прокси на машине, где одновременно работает IPFW и прокси-сервер (например SQUID или FROX)
  - подключение поддержки NATD (трансляция адресов)
 
  - поключение функций управления трафиком (ограничение ширины канала, имитация задержек и потерь пакетов), и наконец для правила по умолчанию, которое присутствует в конфиге IPFW в любом случае под номером 65535, будет
  - если включена опция
 
		
| 
options	IPFIREWALL_DEFAULT_TO_ACCEPT
 |   - либо,
  - если отсутствует.
 После сборки и установки нового ядра получаем IPFW встроенный в ядро системы.
 Теперь о подключение модулем, тут все проще и сложнее одновременно.
 Подключение IPFW в качестве модуля ядра, осуществляется одной командой:
 
 - при этом загружается модуль ipfw.ko, который в стандартной поставке имеет поддержку функций управления трафиком (DUMMYNET), к сожалению функции форвардинга (FORWARD) не поддерживаются и без перекомпиляции тут не обойтись.Поддержку демона NATD в IPFW можно получить, загрузив аналогичной командой модуль ipdivert.ko
 
 IPFW, загруженный таким образом, содержит всего одно правило по умолчанию:
 Рассмотрим теперь как происходит подключение IPFW в процессе загрузки операционой системы. Имеем достаточно типовые переменные в файле /etc/rc.conf
 
		
| 
firewall_enable="YES"
firewall_script="/usr/local/etc/ipfw.rules"
natd_enable="YES"
natd_interface="fxp1"
natd_flags="-same_ports"
 |  Первая строка фактически разрешает исполнение стартового скрипта /etc/rc.d/ipfw, который в свою очередь, выполняет уже известную команду 
 - если IPFW грузится модулем ядра,  затем запускает на выполнение скрипт с правилами IPFW, указанный во второй строке. Заметим что строка 
 -требуется как для загрузки IPFW в виде модуля (иначе запускать придется вручную), так и для IPFW компиллированном в ядро (иначе не выполнится скрипт с правилами из второй строки, хотя IPFW все равно запустится с одним правилом по умолчанию). В процессе выполнения скрипт /etc/rc.d/ipfw установит значение системной переменной равным единице (TRUE):
 Она указывает системе использовать ли IPFW вообще, так как если переменная равна нулю (FALSE), то IPFW использоваться не будет, независимо от того подгружаем ли мы модулем IPFW или он скомпилирован в ядро, попутно отметим следующее: все переменные, которыми можно управлять через sysctl действуют на IPFW одинаково, независимо от способа подключения IPFW.Продолжим строка:
 
 
		
| 
firewall_script="/usr/local/etc/ipfw.rules"
 |   указывает расположение нашего скрипта с правилами для IPFW, в принципе её может и не быть, но тогда запустится на исполнение скрипт /etc/rc.firewall, в котором есть стандартные наборы правил, сгруппированные в секции "OPEN","SIMPLE","CLOSED","UNKNOWN", можно также приспособить его под свои нужды (хотя это и не наш метод :-)), например добавив секцию "RULES", тогда данная строка приобретёт вид:
 
 По поводу строк с NATD сказать особо нечего, все аналогично уже рассмотренному с той разницей что исполняется скрипт /etc/rc.d/natd, и если IPFW используется в виде модуля ядра -загрузится модуль ipdivert.ko, потом скрипт выполнит команду вида:
 
		
| 
natd -interface ${natd_interface} -same_ports
 |  и ещё, если IP интефейсa на котором крутится NATD получен от DHCP-сервера, скрипт добавит опцию "-dynamic".Замечание 1.
 Как все-таки подключать IPFW? Пожалуй решение такое: если FreeBSD используется в целях обучения, отладки и т.д. - проще подключать модулем, а если речь идет уже о "боевом" применении - лучше компиляция в ядро.
 Как IPFW работает?
 Общая схема
 
 
		
		
Замечание 2.
 IP- Пакет, попадая в фаервал IPFW, следует согласно порядку расположений его правил до первого удовлетворяющего, где над этим IP-пакетом, согласно данному правилу, совершаются какие-либо действия (пропускается, отбрасывается, возвращается обратно в фаервал и т.д.).
 Замечание 3.
 Входящие (IN) и исходящие (OUT) пакеты следует рассматривать относительно операционной системы, а не относительно сетевых интерфейсов.
 Замечание 4.
 Каждый маршрутизируемый IP-пакет попадает в фаервал как на входе в операционную систему, так и на выходе из неё.
 Рассмотрим, с учётом этих замечаний, следующие примеры и попытаемся в итоге понять проходят IP-пакеты по правилам IPFW и как составлять эти самые правила.
 Предположим:
 1. Система имеет 2 сетевых интерфейса – {iif}- внутренний(fxp0)  и {oif}-внешний(fxp1), псевдоинтефейc-{lo}, который мы намеренно опустим из виду.
 2.  {iip} – IP- адрес для {iif}, и соответственно {oip} – для {oif}.
 3.  {MyLan} -  внутренняя сеть
 4. В системе работает простейший демон NATD по трансляции внутренних адресов во внешний и наоборот.
 Пример №1. Как составлять правила?
 Имеем следующее не совсем очевидное, зато очень часто встречающееся правило:
 
 
		
| {fwcmd} add allow ip from {MyLan} to any
 |  Обычно когда пишут такое правило - подразумевают что разрешен доступ от хостов внутренней сети к любому хосту (при этом, часто полагают что речь идет только о внутренней сети :-) ), но есть и еще одна сторона медали, постараюсь её показать.С учетом вышеописанных замечаний данное правило распишем в следующий набор правил:
 
 
		
| 
1. {fwcmd} add allow  ip from {MyLan} to any in via {iif}
2. {fwcmd} add allow  ip from {MyLan} to any out via {iif}
3. {fwcmd} add allow  ip from {MyLan} to  any out via {oif}
4. {fwcmd} add allow  ip from {MyLan}  to any in via {oif}
 |  Правило №1 - мы разрешаем обращение от любого хоста внутренней сети на любой xoст любой сети через внутренний интерфейс, аналогично и для правила №3, но через внешний интерфейс. Фактически эти два правила разрешают  исходящие IP-пакеты от хостов внутренней сети к любым хостам любой сети.
 А теперь о том, что не так очевидно: правило №2, с учётом правила №1 фактически разрешает IP-пакеты между хостами локальной сети через интерфейс {iif}, что нормально, если предположить что в локальной сети хакеров нет, пользователи послушные, сами на роутер не полезут и делать там нечего плохого не будут. Однако сюрприз!
 Теперь правило №4 - с одной стороны оно достаточно бессмысленное. Действительно откуда снаружи взяться IP-пакетам от хостов внутренней сети?
 Правильно – хакеры, типичный спуфинг.
 Критики могут заметить, что со спуфингом умеет бороться чуть ли не каждая железяка, что демоны давно поумнели и т.д. и т.п. Тем не менее, согласитесь, такие правила боевой роутер совсем не красят, поэтому сюрприз №2.
 Можно уже делать первые выводы:
 Вывод №1.
 При составлении правил обязательно указывать о какой сетевом интерфейсе идет речь.
 Вывод №2.
 При составлении правил желательно указывать направление IP-пакетов.
 Вывод №3.
 При составлении правил по возможности конкретизировать сети и  IP - адреса.
 Первые выводы сделаны, давайте попробуем разобраться как IP-пакеты бегают по правилам, которые мы напишем.
 Пример №2. Связка IPFW-NATD, как работает, какие нужны правила?
 Итак: исходные заданы, напишем правила IPFW, и прокомментируем их.
 
 
		
| 
#Разрешим трафик в локальной сети, конкретизировать по
# направлению не будем и так понятно: 
1  {fwcmd} add allow  ip from {MyLan} to {MyLan} via {iif}
#Вспомним про  NATD.
2. {fwcmd} add divert natd ip from {MyLan} to any out via {oif}
3. {fwcmd} add divert natd ip from any to {oip} in via {oif}
#Роутер должен же как-то работать - изнутри мы уже все открыли,
#будем последовательны тоже сделаем и снаружи.
4. {fwcmd} add allow  ip from {oip} to any out via {oif}
5. {fwcmd} add allow  ip from  any  to {oip} in via {oif}
#Роутер у нас или нет?  Давайте разрешим локальным хостам 
# свободно лазить во внешнюю сеть.
#Для исходящих пакетов от хостов внутренней сети.
6. {fwcmd} add allow ip from {MyLan} to any in via {iif}
7.{fwcmd} add allow ip from {MyLan} to any out via {oif}
#Для входящих IP-пакетов к хостам внутренней сети.
8. {fwcmd} add allow ip from any to {MyLan} in via {oif}
9. {fwcmd} add allow ip from any to {MyLan} out via {iif}
#Для порядка завершим
10. {fwcmd} add deny ip from any to any
 |  Получили такой вот конфиг IPFW, хотя могли обойтись всего-то одной строчкой 
 
		
| 
{fwcmd} add allow ip from any to any
 |  Примечание - Фактически правило №1 не нужно, т.к. его расширили правилами №6,№9, однако оставим его, поскольку в реальных условиях надо редактировать как раз с №6 по №8, да и само по себе правило №1 не самое удачное решение в плане широковещательных запросов.Пусть хост внутренней сети (192.168.0.75) запрашивает почту с gmail.com (64.233.183.109:995), для нашего роутера внешний IP- 195.34.32.55.
 Забудем про DNS, сразу к делу - какими видит IPFW проходящие пакеты:
 Правила №-№ 1-5 не подходят, а вот №6 как раз в точку:
 
 
	
		| TCP	192.168.0.75:1499	64.233.183.109:995 in via fxp0
 
 |  
 так пошел запрос на внутренний интерфейс (fxp0) роутера, с хоста внутренней сети. Операционная система приняла его и по таблице маршрутизации отправила на внешний интерфейс (fxp1), здесь этот пакет стал исходящим и снова уперся в фаервал:
 
 
	
		| TCP 192.168.0.75:1499 64.233.183.109:995 out via fxp1
 
 |  
 тут вступает в действие NATD (правило №2) он переписывает IP в заголовке пакета, составляет таблицу где запоминает что он сотворил с пакетом и благополучно отпускает путешествовать по правилам IPFW дальше, что собственно будет выглядеть так:
 
	
		| TCP 195.34.32.55:1499 64.233.183.109:995 out via fxp1
 
 |  
кстати NATD сохранил еще и первоначальный порт 1499, что бывает далеко не всегда. Этот пакет дойдет до правила №4, благополучно покинет фаервал и отправится путешествовать в сеть. Теперь рассмотрим как идет ответ сервера:
 Ответный пакет входит в файервал снаружи через внешний интерфейс fxp1:
 
 
	
		| TCP 64.233.183.109:995 195.34.32.55:1499 in via fxp1
 
 |  
 как видно с какого порта запросили на тот ответ и получили. Правила №1,№2 он благополучно миновал а в правиле №3 его радостно встречает NATD, который проверяет свою таблицу, находит запись и переписывает заголовок уже на:
 
 
	
		| TCP 64.233.183.109:995 192.168.0.75:1499 in via fxp1
 
 |  
 по правилу №8 пакет выходит из IPFW и попадает в операционную систему, которая маршрутизирует пакет на интерфейс внутренней сети (fxp0), здесь пакет опять упрется в фаервал но уже, как исходящий с интерфейса внутренней сети fxp0.
 
 
	
		| TCP 64.233.183.109:995 192.168.0.75:1499 out via fxp0
 
 |  
– правило №9 благополучно выпустит пакет из фаервала. Счастливый хост получил ответ на свой запрос.Дайте рассмотрим ещё один случай связки IPFW-NATD - перенаправление входящего запроса на сервер внутренней сети.
 Предположим мы хотим открыть для доступа снаружи Web-сервер внутренней сети с IP-адресом 192.168.0.3, для чего изменим в rc.conf строку на
 
 
		
| 
natd_flags="-same_ports -redirect_port tcp 192.168.0.3:80 80"
 |  В логах IPFW можно будет увидеть примерно следующее:
 
	
		| 1. TCP 195.34.32.56:1076 195.34.32.55:80 in via fxp1
 2. TCP 195.34.32.56:1076 192.168.0.3:80 in via fxp1
 3. TCP 195.34.32.55:1076 192.168.0.3:80 out via fxp0
 4. TCP 192.168.0.3:80 195.34.32.56:1076 in via fxp0
 5. TCP 192.168.0.3:80 195.34.32.56:1076 out via fxp1
 6. TСP 195.34.32.55:80 195.34.32.56:1076 out via fxp1
 
 |  
Ситуация аналогична уже рассмотренной: первая строка и вторая строка - один и тот же пакет - входящий запрос, который попадает в NATD через внешний интрефейс fxp1. NATD переписывает заголовок пакета и далее по правилам IPFW пакет попадает в операционную систему.
 третья строка - пакет прошедший по таблице маршрутизации операционной системы, исходящий через внутренний интерфейс fxp0.
 четвертая строка - ответ сервера входящий на внутренний интерфейс fxp0.
 пятая и шестая строки - один и тот же пакет, прошедший через NATD и ставший исходящим через внешний интерфейс fxp1.
 Примечание:MAN NATD - "После трансляции адреса, демон NATD, возвращает IP-пакет в фаервал IPFW к правилу со следующим номером после правила с DIVERT (не следующее правило, а правило со следующим номером)."
 Чтобы закончить со связкой IPFW-NATD, составим примерный список правил для конфига IPFW, обеспечивающий работоспособность данной связки :
 
 
		
| 
#Разрешаем все по интерфейсу обратной петли
{fwcmd} add allow ip from any to any via lo 
#Разрешаем все внутри локальной сети, 
#кроме того эти правила необходимы для связки IPFW-NATD
#Для защиты роутера от пользователей локальной сети перед этими правилами
#нужно вcтавить что-то запрещающее
#Если есть необходимость роутеру в широковещательных запросах
#нужно вставить что-то разрешающее
{fwcmd} add allow ip from {MyLan} to any in via {iif} 
{fwcmd} add allow ip from any to {MyLan} out via {iif}
#Разрешаем входящие соединения к роутеру, 
#это правило напрямую к связке IPFW-NATD отношения не имеет, 
#оно необходимо для обеспечения работоспособности демонов роутера.
#Естественно правило необходимо расширить с учетом потребностей демонов.
#Внимание!!! правила расположены выше DIVERT,
# т.е в этом примере для хостов внутренней сети 
#DNS сервер должен быть внутри сети 
{fwcmd} add allow ip from any to {oip} 53 in via {oif} 
{fwcmd} add allow ip from any 53 to {oip} in via {oif} 
#NATD для исходящих соединений 
{fwcmd} add divert natd ip from {MyLan} to any out via {oif}
#Внимание!!! Правило - разрешает исходящие соединения как для самого роутера, 
#так и для хостов внутренней сети, IP которых транслировал NATD
{fwcmd} add allow ip from {oip} to any out via {oif}
#NATD для входящих соединений
{fwcmd} add divert natd ip from not {MyLan} to {oip} in via {oif}
#Внимание!!! Правило - разрешает входящие соединения только к хостам внутренней сети,
#IP которых транслировал NATD
{fwcmd} add allow ip from not {MyLan} to {MyLan} in via {oif}
{fwcmd} add deny ip from any to any
 |  Ну и последнее замечание по поводу IPFW-NATD:Что делать если требуется что-то прикрыть в интернете для хостов внутренней сети? Ответ достаточно очевиден:
 1. Впереди правил для локальной сети (строки 2-3) пишем свои запреты.
 Ну и наоборот если требуется все запретить, разрешив только что-то: к примеру HTTP?
 2. Приводим строки 2-3 к следующему виду:
 
 
		
| 
{fwcmd} add allow ip from {MyLan} to {MyLan} via {iif} 
{fwcmd} add allow tcp from {MyLan} to any http in via {iif}
{fwcmd} add allow tcp from any http to {MyLan} out via {iif}
 |  Полагаю тема связки IPFW-NATD закрыта.Продолжим исследования, разберем еще один частоиспользуемый случай IPFW-SQUID.
 Сначала без прозрачного прокси. Вернемся к первому варианту конфига IPFW и рассмотрим что происходит. Вот и подходящий кусочек лога:
 
 
	
		| TCP 192.168.0.112:1212 192.168.0.9:3128 in via fxp0
 
 |  
 -входящий пакет от внутреннего хоста к роутеру с работающим Squid - правило №1, Squid его обработает и сам отправит в сеть.
 
 
	
		| TCP 195.34.32.55:52439 64.12.24.102:443 out via fxp1
 
 |  
 -исходящий пакет от SQUID к удаленному хосту - правило №4 
 
	
		| TCP 64.12.24.102:443 195.34.32.55:52439 in via fxp1
 
 |  
 - входящий ответ на интерфейс внешней сети - правило № 5, Squid опять же его обработал, и ответил хосту локальной сети
 
	
		| TCP 192.168.0.9:3128 192.168.0.112:1212 out via fxp0
 
 |  
 - правило №1, пакет вышел из фаервала и побежал к адресату.Пример несколько утрированный, однако интересен следующим:
 Первое - NATD не используется, а вернее так: в NATD входящий пакет от хоста 64.12.24.102:443 все равно попадет, правило №3 никто не отменял. Однако NATD об этом пакете ничего не знает, поэтому делать ничего не будет, он отправит пакет дальше путешествовать по правилам IPFW, пока последний не доберется до правила №4.
 Второе - сам адресат: 64.12.24.102:443 - протокол https, а хост из сети 64.12.0.0/16 AOL-MTC, т.е. ICQ.
 Продолжим, теперь на очереди прозрачный прокси, для него изменим правила IPFW следующим образом: добавив строку для форвардинга в итоге получим:
 
 
		
| 
1. {fwcmd} add allow  ip from {MyLan} to {MyLan} via {iif}
2. {fwcmd} add fwd {iip},3128 tcp from {MyLan} to not {MyLan} 80 in via {iif}
3. {fwcmd} add divert natd ip from {MyLan} to any out via {oif}
4. {fwcmd} add divert natd ip from to any to {oip} in via {oif}
5. {fwcmd} add allow  ip from {oip} to any out via {oif}
6. {fwcmd} add allow  ip from  any  to {oip} in via {oif}
7. {fwcmd} add allow ip from {MyLan} to any in via {iif} 
8. {fwcmd} add allow ip from {MyLan} to any out via {oif}
9. {fwcmd} add allow ip from any to {MyLan} in via {oif}
10. {fwcmd} add allow ip from any to {MyLan} out via {iif}
11. {fwcmd} add deny ip from any to any
 |  Предположим хост внутренней сети с IP 192.168.0.100 запрашивает http://www.yandex.ru, на входе в фаервал имеем:
 
	
		| TCP 192.168.0.100:1083 77.73.24.4:80 in via fxp0 |  
-пакет доходит до правила №2, по которому переправляется на вход локального прокси-сервера, далее уже знакомая картина самостоятельной обработки прокси-сервером запроса:
 
	
		| TCP 195.34.32.55:57415 77.73.24.4:80 out via fxp1 TCP 77.73.24.4:80 195.34.32.55:57415 in via fxp1
 |  
- наконец ответ хосту, а здесь уже интересно, поскольку прокси-сервер ответил следующим образом:
 
	
		| TCP 77.73.24.4:80 192.168.0.100:1083 out via fxp0 |  
Как видим для хоста внутренней сети все махинации с прокси-сервером остались не заметны.Опять оговоримся: в примере рассмотрен только принцип прохождения пакета, реальный лог совсем не такой однозначный.
 Чтобы закончить тему связки IPFW-SQUD напишем примерные правила для IPFW:
 
 
		
| 
{fwcmd} add allow ip from any to any via lo 
#Собственно следующие строки не только для локальной сети,
#они ещё задают варианты использование прокси для обычного достаточно
{fwcmd} add allow ip from {MyLan} to {MyLan} via {iif} 
#для прозрачного
#Здесь мы попали в засаду с портами, впрочем это только начало
#{fwcmd} add fwd {iip},3128 tcp from {MyLan} to not {MyLan} 80,443 in via {iif}
#{fwcmd} add allow tcp from {MyLan} to any 80,443 in via {iif} 
#{fwcmd} add allow tcp from any 80,443 to {MyLan} out via {iif}
#{fwcmd} add allow ip from {MyLan} to {MyLan} via {iif}
#Так подробно расписано специально чтобы была видна разница в правилах.
#Разрешаем входящие соединения к роутеру, 
#вообще эти правила напрямую к связке IPFW-SQUID отношения не имеют, 
#правда с DNS не все так однозначно.
{fwcmd} add allow ip from any to {oip} 53 in via {oif} 
{fwcmd} add allow ip from any 53 to {oip} in via {oif} 
#Правила для SQUID, тут чтобы опять не попасть в засаду с портами, 
#извернемся следующим образом
{fwcmd} add deny  tcp from any to {oip} in via {oif} tcpflags syn,!ack
{fwcmd} add allow tcp from any to {oip} in via {oif} 
#Завершим традиционно
{fwcmd} add allow ip from {oip} to any out via {oif}
{fwcmd} add deny ip from any to any
 |  Расставим точки над i - обьединим два рассморенных случая вместе, тем самым создадим эдакий скелет конфига IPFW для подгонки под свои требования.
 
		
| 
#!/bin/sh -
fwcmd=/sbin/ipfw
# Внешний интерфейс
oif=xxx
oip=xxx.xxx.xxx.xxx
# Внутренний интерфейс
iif=xxx
iip=xxx.xxx.xxx.xxx
MyLan=xxx.xxx.xxx.0/24
# Хосты сети, которым разрешим свободно ходить в инет  через роутер
pdc=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
${fwcmd} flush -f
#Стандартное средство защиты от спуффинга :-)
${fwcmd} add deny ip from any to any not verrevpath in
# Убьем фрагменты
${fwcmd} add deny ip from any to any frag
${fwcmd} add allow ip from any to any via lo
${fwcmd} add denny ip from any to 127.0.0.0/8 
${fwcmd} add denny ip from 127.0.0.0/8 to any
${fwcmd} add allow ip from ${MyLan} to ${MyLan} via {iif}  
${fwcmd} add allow ip from ${pdc} to any in via ${iif} 
${fwcmd} add allow ip from any to ${pdc} out via ${iif}
${fwcmd} add divert natd ip from ${MyLan} to any out via ${oif}
${fwcmd} add allow ip from ${oip} to any out via ${oif}
${fwcmd} add divert natd ip from any to ${oip} in via {oif}
${fwcmd} add allow ip from any to ${MyLan} in via {oif}
#Правила для демонов перенесли ниже потому что они
# перекрывают входящие пакеты для NATD
#Следующие два правила равносильны одному
#${fwcmd} add allow tcp from any to ${oip} in via ${oif} established
${fwcmd} add deny  tcp from any to ${oip} in via ${oif} tcpflags syn,!ack
${fwcmd} add allow tcp from any to ${oip} in via ${oif} 
${fwcmd} add allow udp from any to ${oip} 53 in via ${oif} 
${fwcmd} add allow udp from any 53 to ${oip} in via ${oif} 
${fwcmd} add allow icmp from any to ${oip} in via ${oif} icmptype 0,3,4,8,11,12
${fwcmd} add deny log ip from any to any
 |   
 Как правило IPFW, NATD, SQUID и еще куча различных демонов крутится на одной машине-роутере, как уже было видно для каждого демона по отдельности правила IPFW имеют много общего, но и каждый имеет свои нюансы, поэтому при составлении (редактировании) необходимо крайне внимательно проверять то что уже есть, добавляя  только то что требуется, иначе вместо логичной и непробиваемой огненной стены можно получить абсолютно непонятное решето.
 Очень хочется думать, что статья поможет вам в создании безопасных, а главное осознанных правил IPFW, спасибо всем кто сумел сие прочитать, за сим откланиваюсь.
 -cat-
 P.S. Автор сознательно не использовал конструкции setup-established и check-state keep-state.
 setup-established запутали бы процесс понимания правил, keep-state же напустил бы туману еще больше.
 P.P.S. В процессе сочинения сего использовались логи реально работающего роутера,  а также различные виртуальные машины, логи собраны при помощи строки {fwcmd} add count log all from any to any.
 Совпадения IP - реальных случайны, случайных - не реальны. ;-).
 
 Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=5511.
 
 
 
				
					| размещено: 2007-10-24,последнее обновление: 2007-11-01,
 автор: -cat-
 |  |  
 
 
  
 |   |   
 2014-07-27, lissyaragmirror
 Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 2013-08-20, zentarimScan+Print server FreeBSD 9
 Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 2011-11-20, BlackCatРазъём на WiFi-карту
 Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
 2011-09-14, manefestoНастройка git+gitosis
 Настройка системы контроля версия исходного кода в связке git+gitosis+ssh 
 2011-08-14, zentarimWi-FI роутер + DHCP + DNS
 Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
 2011-06-15, -ZG-Охранная система на FreeBSD+LPT
 В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
 2011-03-13, terminusng_nat
 Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
 2011-02-20, КапитанNagios+Digitemp
 Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
 2011-02-17, Le1Zyxel Configuration
 Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
 2011-02-16, foxhast carp zfs ucarp cluster
 HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
 2011-02-04, BlackCatВосстановление ZFS
 История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
 2011-02-03, Капитан1-Wire
 Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
 2011-01-28, КапитанТемпература в серверной
 Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
 2011-01-21, m4rkellSyslog server
 Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
 2011-01-07, lissyaraCanon/gphotofs
 Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
 2010-12-13, AlIPSec
 Описание принципов работы IPSEC и способов аутентификации.
 2010-12-07, manefestoFreeBSD on flash
 Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем  =)
 2010-12-05, Fomalhautroot ZFS, GPT
 Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
 2010-09-05, CancerНастройка аудиоплеера на ximp3
 Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
 2010-08-31, CancerУстановка и настройка OpenVPN
 На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
 2010-08-25, manefestofreebsd lvm
 Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
 2010-04-30, gonzo111proftpd file auth"a
 Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
 2010-04-22, lissyaratw_cli
 Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
 2010-04-14, foxMySQL Master+Master
 MySQL (Master Master) and (Master Slave) Как настроить репликацию…
 2010-03-09, terminusDNS zones
 Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
 2010-03-09, asperaSquid+AD (group access)
 Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
 2010-03-02, BlackCatШлюз: Часть 4
 Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
 2010-03-01, BlackCatШлюз: Часть 3
 Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
 2010-03-01, BlackCatШлюз: Часть 2
 Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
 2010-03-01, BlackCatШлюз: Часть 1
 Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
 2010-02-23, Mortydarkstat
 Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
 2010-01-23, gonzo111squid+sams+sqstat
 Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
 2009-12-19, schizoidmpd5 + radius + ng_car + Abills
 Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
 2009-11-16, lissyaraUFS->ZFS
 Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
 2009-11-13, gx_uafusefs-ntfs
 Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
 2009-11-12, MortyLiveCD
 Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
 2009-09-27, lissyaraSamba как PDC
 Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
 2009-08-30, terminusipfw nat
 Подробное руководство по ipfw nat, сложные случаи конфигурации.
 2009-08-24, levantuevHotSpot
 Установка Hotspot системы в общественное заведение.
 2009-08-18, lissyaradiskless
 Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
 2009-07-29, BAV_LugВидеонаблюдение
 Настройка бюджетного варианта видеонаблюдения на удаленном объекте
 2009-07-22, CancerOpenLDAP адресная книга
 Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
 2009-06-30, SergeySLAimSniff
 Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
 2009-06-25, atriumУправление правами доступа
 Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX. 
 2009-06-16, DNKExim+PgSQL
 Установка почтовой системы exim+pgsql на FreeBSD 7.1
 2009-05-30, mvaleryHDD(mbr) -> HDD(gpt)
 Как разбить диск размером более 2TB на разделы, сделать загрузочным, а  затем перенести на него информацию с рабочей системы — донора.
 2009-05-22, CancerSendXMPP
 Отправка сообщений на Джаббер сервер по средствам SendXMPP
 2009-05-11, Raven2000Network UPS Tools
 Network UPS Tools представляет собой набор программ, которые обеспечивают общий
интерфейс для мониторинга и администрирование UPS оборудования. 
 2009-04-29, m0psIPSEC over GRE with RIP
 Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
 2009-04-24, WhiteBear777qemu network
 Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в  локалку и в сеть internet...
 2009-04-22, vpfreebsd + huawei 162 gsm modem
 В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
 2009-04-12, mvaleryМониторинг RAID
 Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
 2009-04-09, texnotronicRAID1 via LAN
 Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
 2009-04-03, Raven2000Оптимизация хоста для CMS
 В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
 2009-04-01, atriumVSFTPD + AD && MySQL
 Настройка самого безопасного сервера FTP - vsftpd.
 2009-03-31, DronPeoplenet + C-motech (3G)
 Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
 2009-03-25, lissyaramod_auth_external
 mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
 
 | 
	
Комментарии пользователей [35 шт.]