ipfw или pf
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: ipfw или pf
пока в треде сплошная газификация луж, предлагаю соревнование, написание типового фаервола для шлюза с nat, rate limit, access restriction и без squid
надо подготовить тех задание, набор юниттестов, а потом протестить еще производительность на одной машине ^_^
срок неделя, две
надо подготовить тех задание, набор юниттестов, а потом протестить еще производительность на одной машине ^_^
срок неделя, две
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- проходил мимо
Re: ipfw или pf
Как по мне так как раз ipfw более удобен и понятен. Вы сравните только его с iptables, так там черт ногу вломит. PF ниразу не настраивал но судя по откликам тоже неплохой фаер. А читая хендбук увидите что использовать надо фаер правильно настроеный.lissyara писал(а):улыбнуло.iZEN писал(а):PF структурирован. Человеческий синтаксис правил. Абстракции, макросы, чёткая структура файла правил. Работает целиком в ядре (встроенный NAT).
ipfw == "ассемблер", похож на убогий IPTABLES. Множественные вызовы из ядра в юзерспейс и обратно (к natd).
Сравнение 3 Пакетных фильтров FreeBSD 5.3 (IPFW, PF, IPFILTER):
http://www.opennet.ru/docs/RUS/ipfw_pf_ipfilter/
кернел нат уже давно шагает по планете. а вы всё никак...
и синтаксис человеческий как раз в ipfw а не ещё где-то.
=====
пишите собственные мысли, а не чужие.
ipfw+100
-
- проходил мимо
Re: ipfw или pf
pf, altq. ipfw удобнее имхо, но шейпер хуже...
- xelak
- сержант
- Сообщения: 173
- Зарегистрирован: 2007-12-09 16:20:00
- Откуда: Украина,Харьков
- Контактная информация:
Re: ipfw или pf
а почему бы не завернуть altq через ipfw?mnz_home писал(а):pf, altq. ipfw удобнее имхо, но шейпер хуже...
-
- проходил мимо
Re: ipfw или pf
У меня так и было раньше. Но двойное решение не очень нравится)xelak писал(а): а почему бы не завернуть altq через ipfw?
-
- проходил мимо
Re: ipfw или pf
Ушел с ipfw на pf и не жалею.
Реально удобнее и синтаксис правил более логичен.
По производительности обходит ipfw немного, но главная особенность это возможность писать правила красиво и лаконично.
Реально удобнее и синтаксис правил более логичен.
По производительности обходит ipfw немного, но главная особенность это возможность писать правила красиво и лаконично.
-
- проходил мимо
Re: ipfw или pf
Кстати красноглазие с NAT_BUF_LEN в ipfw в релизе 7.2 так и не поправили...
Суть проблемы:
http://www.bsdportal.ru/viewtopic.php?p=109755

Суть проблемы:
http://www.bsdportal.ru/viewtopic.php?p=109755
- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
а зачем если ng_nat есть?mnz_home писал(а):Кстати красноглазие с NAT_BUF_LEN в ipfw в релизе 7.2 так и не поправили...![]()
Суть проблемы:
http://www.bsdportal.ru/viewtopic.php?p=109755
-
- проходил мимо
Re: ipfw или pf
Ты говоришь "ассемблер" так, будто это что-то плохое. iptables очень хороший файр. Кстати, таки да, между ipfw или pfiZEN писал(а):ipfw == "ассемблер", похож на убогий IPTABLES. Множественные вызовы из ядра в юзерспейс и обратно (к natd).
надо выбрать iptables, соответственно сменив окружение

- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: ipfw или pf
Это не плохое, а очень трудоёмкое._Andy писал(а):Ты говоришь "ассемблер" так, будто это что-то плохое.iZEN писал(а):ipfw == "ассемблер", похож на убогий IPTABLES. Множественные вызовы из ядра в юзерспейс и обратно (к natd).
Так, например, в PF правило с макросом выливается в несколько десятков/если не сотню/ простых правил ipfw или iptables. В то время как в ipfw и iptables нужно забивать ВРУЧНУЮ_ИХ_ВСЕ, в pf достаточно правильно написать одно правило с макросом — просто потом оно само "развернётся" фильтром в такую же кучу более подробных правил.
Этим же отличаются языки высокого уровня от ассемблеров.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
не вижу разницы написать "макросы" для интерпретатора который ipfw вызывает и написать макросы для pf. Неубедительно.iZEN писал(а):правило с макросом выливается в несколько десятков/если не сотню/ простых правил ipfw или iptables. В то время как в ipfw и iptables нужно забивать ВРУЧНУЮ_ИХ_ВСЕ, в pf достаточно правильно написать одно правило с макросом — просто потом оно само "развернётся" фильтром в такую же кучу более подробных правил.
- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: ipfw или pf
А вы попробуйте.abanamat писал(а):не вижу разницы написать "макросы" для интерпретатора который ipfw вызывает и написать макросы для pf. Неубедительно.

GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
а я давно пробую.iZEN писал(а):А вы попробуйте.abanamat писал(а):не вижу разницы написать "макросы" для интерпретатора который ipfw вызывает и написать макросы для pf. Неубедительно.
- LMik
- капитан
- Сообщения: 1852
- Зарегистрирован: 2007-07-17 9:14:39
- Откуда: МО
- Контактная информация:
Re: ipfw или pf
netgraph и bpf рулит, вот там до ассемблера оч близко, летает что не передать словами.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!
Виpус детям не игpушка, не товаpищ и не дpуг!
- Dorlas
- сержант
- Сообщения: 257
- Зарегистрирован: 2008-07-18 22:17:49
Re: ipfw или pf
Как по мне - использовал (и использую IPFW) уже лет 5 - за эти годы сформировался приличный шаблонный конфиг, который очень удобно переносить на новые FreeBSD-сервера (поправил 4-5 параметров в начале файла) и все.
В декабре взялся за изучение PF - распечатал 45 листов, пару вечеров почитал - и понял, что в нем есть очень приятные и красивые вещи (route-to, reply-to, round-robin + авто- keep-state везде). Первый конфиг делал на сервере, где есть два интернет-канала (ethernet и wifi), причем шлюз по умолчанию - через Ethernet, НО на IP-ке WiFi-канала должен висеть почтовый сервер (приходит почта + с него должна уходить). PF с этой задачей справился замечательно:
Еще там куда rdr-правил (на этот статический IP) - но к почте это отношение не имеет.
Второй сервер делал - там два разных канала + DMZ с белыми IP (на сервере 4 сетевые карты). Ранее был старый Linux с ядром 2.4.x (mandrake 9.1 вроде) - решили его заменить на FreeBSD. Конфиг iptables был - 182 кбайта (более 1000 правил).
Дня три его пилили, в итоге получили оптимизированный конфиг PF: Правил фильтрации: 47, правил NAT: 17
Конфиг стал понятный и прозрачным. При этом оба канала используются всеми методами (все сервисы сервера доступы по обоим, rdr-службы, round-robin + тестирование основного на доступность)
Итого я для себя сделал вывод: Если сложная структура (3 и более сетевых, несколько каналов) - удобно делать на PF, если сервачок шаблонный (2 сетевые, воткнул, инструкцию дал и счастливо) - удобно использовать IPFW.
Вообще, оба межсетевые экрана очень хорошие в применении - очень доволен, что освоил и умею использовать
В декабре взялся за изучение PF - распечатал 45 листов, пару вечеров почитал - и понял, что в нем есть очень приятные и красивые вещи (route-to, reply-to, round-robin + авто- keep-state везде). Первый конфиг делал на сервере, где есть два интернет-канала (ethernet и wifi), причем шлюз по умолчанию - через Ethernet, НО на IP-ке WiFi-канала должен висеть почтовый сервер (приходит почта + с него должна уходить). PF с этой задачей справился замечательно:
Код: Выделить всё
# Правило для уходящей от сервера почты:
nat on $if_ext inet proto tcp from $if_ext to any port 25 -> $if_wifi
# Правило для входящей почты:
pass in on $if_wifi reply-to ($if_wifi $router_wifi) inet proto tcp to $if_wifi port 25 modulate state
Второй сервер делал - там два разных канала + DMZ с белыми IP (на сервере 4 сетевые карты). Ранее был старый Linux с ядром 2.4.x (mandrake 9.1 вроде) - решили его заменить на FreeBSD. Конфиг iptables был - 182 кбайта (более 1000 правил).
Дня три его пилили, в итоге получили оптимизированный конфиг PF: Правил фильтрации: 47, правил NAT: 17
Конфиг стал понятный и прозрачным. При этом оба канала используются всеми методами (все сервисы сервера доступы по обоим, rdr-службы, round-robin + тестирование основного на доступность)
Итого я для себя сделал вывод: Если сложная структура (3 и более сетевых, несколько каналов) - удобно делать на PF, если сервачок шаблонный (2 сетевые, воткнул, инструкцию дал и счастливо) - удобно использовать IPFW.
Вообще, оба межсетевые экрана очень хорошие в применении - очень доволен, что освоил и умею использовать

- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
убедительно.Dorlas писал(а):и понял, что в нем есть очень приятные и красивые вещи (route-to, reply-to, round-robin + авто- keep-state везде).
- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: ipfw или pf
Вот для примера простейший файервол с политикой "Запрещено всё, что не разрешено" на PF:
После применения правил это всё выливается в следующие действующие правила PF: Такое же напишите на IPFW, сравним.
Код: Выделить всё
#1/Macros
allowed_icmp_types="{ echoreq, unreach }"
# Разрешённые сервисы
allowed_services="{ ssh, www, http, https, ntp, nfsd, rpcbind, 883, 884, 885, 6881><6991, 8080 }"
#2/Tables
#3/Options
# тем, кто лезет туда, куда не нужно, - бить по рукам
set block-policy drop
# на интерфейсах петли пакеты не фильтровать
set skip on { lo }
#4/Scrub
# Нормализовать все (входящие) пакеты
scrub in all
#5/Queueing
#6/Translations
#7/Filter Rules
# Блокировать всё, что не разрешено
block all
# разрешить пинг
pass inet proto icmp all icmp-type $allowed_icmp_types keep state
# разрешающий доступ (ограниченные службы)
pass in inet proto { tcp, udp } from any to port $allowed_services modulate state
# Разрешить исходящий трафик
pass out inet proto { tcp, udp, icmp } all keep state
Код: Выделить всё
% pfctl -s all
FILTER RULES:
scrub in all fragment reassemble
block drop all
pass inet proto icmp all icmp-type echoreq keep state
pass inet proto icmp all icmp-type unreach keep state
pass in inet proto tcp from any to any port = ssh flags S/SA modulate state
pass in inet proto tcp from any to any port = http flags S/SA modulate state
pass in inet proto tcp from any to any port = http flags S/SA modulate state
pass in inet proto tcp from any to any port = https flags S/SA modulate state
pass in inet proto tcp from any to any port = ntp flags S/SA modulate state
pass in inet proto tcp from any to any port = nfsd flags S/SA modulate state
pass in inet proto tcp from any to any port = sunrpc flags S/SA modulate state
pass in inet proto tcp from any to any port = 883 flags S/SA modulate state
pass in inet proto tcp from any to any port = 884 flags S/SA modulate state
pass in inet proto tcp from any to any port = 885 flags S/SA modulate state
pass in inet proto tcp from any to any port 6881 >< 6991 flags S/SA modulate state
pass in inet proto tcp from any to any port = 8080 flags S/SA modulate state
pass in inet proto udp from any to any port = ssh keep state
pass in inet proto udp from any to any port = http keep state
pass in inet proto udp from any to any port = http keep state
pass in inet proto udp from any to any port = https keep state
pass in inet proto udp from any to any port = ntp keep state
pass in inet proto udp from any to any port = nfsd keep state
pass in inet proto udp from any to any port = sunrpc keep state
pass in inet proto udp from any to any port = 883 keep state
pass in inet proto udp from any to any port = 884 keep state
pass in inet proto udp from any to any port = 885 keep state
pass in inet proto udp from any to any port 6881 >< 6991 keep state
pass in inet proto udp from any to any port = 8080 keep state
pass out inet proto tcp all flags S/SA keep state
pass out inet proto udp all keep state
pass out inet proto icmp all keep state
No queue in use
INFO:
Status: Enabled for 0 days 00:00:04 Debug: Urgent
State Table Total Rate
current entries 0
searches 42069 10517.2/s
inserts 450 112.5/s
removals 450 112.5/s
Counters
match 450 112.5/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
LIMITS:
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
OS FINGERPRINTS:
696 fingerprints loaded
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
вообще я не про то, я про то что генерить несколько тысяч правил для pf и для ipfw директивами для sh к примеру - однойухственно.
По теме.
По теме.
Код: Выделить всё
ipfw add 10 allow ip from any to any via lo0
ipfw add 20 allow icmp from any to any icmptypes 3,8
ipfw add 30 allow tcp from any to any 22,80,111,443,883-885,1110,6881-6991,8080
ipfw add 40 allow udp from any to any 111,123,1110
ipfw add 50 deny ip from any to any
- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: ipfw или pf
Ну и где здесь "тем, кто лезет туда, куда не нужно, - бить по рукам" и "Нормализовать все (входящие) пакеты"?abanamat писал(а):вообще я не про то, я про то что генерить несколько тысяч правил для pf и для ipfw директивами для sh к примеру - однойухственно.
По теме.Код: Выделить всё
ipfw add 10 allow ip from any to any via lo0 ipfw add 20 allow icmp from any to any icmptypes 3,8 ipfw add 30 allow tcp from any to any 22,80,111,443,883-885,1110,6881-6991,8080 ipfw add 40 allow udp from any to any 111,123,1110 ipfw add 50 deny ip from any to any
Также хотелось бы дать оценку производительности такого фильтра: он что, каждый пакетик будет пропускать через весь список правил, пока не отыщется разрешающее правило, "не отпустит"?
Режим работы фильтра по принципу проверки только первого пакета соединения "keep state" в ipfw вообще есть?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
- LMik
- капитан
- Сообщения: 1852
- Зарегистрирован: 2007-07-17 9:14:39
- Откуда: МО
- Контактная информация:
Re: ipfw или pf
Еслиб там не было всё что нужно, думаешь ipfw был бы основным фаером с рождения системы?Режим работы фильтра по принципу проверки только первого пакета соединения "keep state" в ipfw вообще есть?
HISTORY
The ipfw utility first appeared in FreeBSD 2.0. dummynet(4) was intro-
duced in FreeBSD 2.2.8. Stateful extensions were introduced in
FreeBSD 4.0. ipfw2 was introduced in Summer 2002.
BSD... Join the dark side.
Виpус детям не игpушка, не товаpищ и не дpуг!
Виpус детям не игpушка, не товаpищ и не дpуг!
-
- ст. лейтенант
- Сообщения: 1325
- Зарегистрирован: 2008-07-27 17:11:30
- Откуда: Москва
Re: ipfw или pf
вот только не подключен по дефолтуЕслиб там не было всё что нужно, думаешь ipfw был бы основным фаером с рождения системы?

- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
последним правиломiZEN писал(а):Ну и где здесь "тем, кто лезет туда, куда не нужно, - бить по рукам"
а этого в ipfw нет"Нормализовать все (входящие) пакеты"?
pf работает иначе? как?Также хотелось бы дать оценку производительности такого фильтра: он что, каждый пакетик будет пропускать через весь список правил, пока не отыщется разрешающее правило, "не отпустит"?
есть. Но согласно результатам моих собственных тестов, использование keep state повышает вероятность ddos-а маршрутизатора на фре в разы в сравнении со статическими правилами.Режим работы фильтра по принципу проверки только первого пакета соединения "keep state" в ipfw вообще есть?
Отдельно по поводу нормализации пакетов. Мне пока эта фича ни разу не понадобилась. Но в перспективе, если встречусь с необходимостью ее использования, смело и без всяких идеологических угрызений запользую pf.
Кстати кто подкинет примерчик случая, когда без этой фичи не обойтись?
- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: ipfw или pf
PF отслеживает соединения (keep state) и проводит проверку только для первого пакета, который устанавливает соединение. Остальные IP-пакеты этого соединения не участвуют в проверках на соответвие всем правилам, а переносятся по установившемуся алгоритму.abanamat писал(а):pf работает иначе? как?iZEN писал(а):Также хотелось бы дать оценку производительности такого фильтра: он что, каждый пакетик будет пропускать через весь список правил, пока не отыщется разрешающее правило, "не отпустит"?
Наоборот. Отслеживание состояний соединений (stateful inspection) в PF понижает вероятность DDoS и сильно разгружает фильтр от излишней работы.abanamat писал(а):есть. Но согласно результатам моих собственных тестов, использование keep state повышает вероятность ddos-а маршрутизатора на фре в разы в сравнении со статическими правилами.Режим работы фильтра по принципу проверки только первого пакета соединения "keep state" в ipfw вообще есть?
Фрагментация IP-пакетов так же может быть причиной атаки, так и широковещательного шторма с подменой IP-заголовков. Чтобы не нагружать фильтр лишней работой по отсеиванию мелких/нелегитимных пакетиков применяют "очистку" трафика, грубо говоря, прежде чем начать обработку IP-пакета и отправку его приложению, фильтр ждёт прихода всех его частей, в том числе переданных с ошибками. После сборки IP-пакета он может быть либо отброшен в целом как ошибочный, либо пройдёт дополнительный контроль на соответствие правилам фильтра. Это ещё одна возможность "не фильтровать помои" и не тратить ресурсы процессора.abanamat писал(а):Отдельно по поводу нормализации пакетов. Мне пока эта фича ни разу не понадобилась. Но в перспективе, если встречусь с необходимостью ее использования, смело и без всяких идеологических угрызений запользую pf.
Кстати кто подкинет примерчик случая, когда без этой фичи не обойтись?
Кстати, в новой версии PF скраблинг пакетов включен по умолчанию — об этом была уже новость.
Последний раз редактировалось iZEN 2009-05-03 22:13:16, всего редактировалось 3 раза.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
-
- проходил мимо
Re: ipfw или pf
Хорошая вещь, но довольно низкоуровневая => красноглазая. Имхо. Проигрывает в наглядности и прозрачности правил.abanamat писал(а): а зачем если ng_nat есть?
- abanamat
- сержант
- Сообщения: 255
- Зарегистрирован: 2007-03-15 11:24:26
- Откуда: Питер
- Контактная информация:
Re: ipfw или pf
зато можно нагенерить не одну сотню нодов и радоваться что все летает.mnz_home писал(а):Хорошая вещь, но довольно низкоуровневая => красноглазая. Имхо. Проигрывает в наглядности и прозрачности правил.abanamat писал(а): а зачем если ng_nat есть?