ipfw или pf

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
abanamat
сержант
Сообщения: 255
Зарегистрирован: 2007-03-15 11:24:26
Откуда: Питер
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение abanamat » 2009-05-03 22:39:13

iZEN писал(а):PF отслеживает соединения (keep state) и проводит проверку только для первого пакета, который устанавливает соединение. Остальные IP-пакеты этого соединения не участвуют в проверках на соответвие всем правилам, а переносятся по установившемуся алгоритму.
Это мы про keep state. А в случае без keep state?
Наоборот. Отслеживание состояний соединений (stateful inspection) в PF понижает вероятность DDoS и сильно разгружает фильтр от излишней работы.
Ой ли. У меня бсдя на пэнтиум 3 раком вставала при keep state. Nmap ом всего с одной тачки --> eth0 | bpf etc. | eth1 --> во вторую сетку. Та же машина на статических правилах system load максимум 40 персентов и совсем живая.
Фрагментация IP-пакетов так же может быть причиной атаки, так и широковещательного шторма с подменой IP-заголовков. Чтобы не нагружать фильтр лишней работой по отсеиванию мелких/нелегитимных пакетиков применяют "очистку" трафика, грубо говоря, прежде чем начать обработку IP-пакета и отправку его приложению, фильтр ждёт прихода всех его частей, в том числе переданных с ошибками. После сборки IP-пакета он может быть либо отброшен в целом как ошибочный, либо пройдёт дополнительный контроль на соответствие правилам фильтра. Это ещё одна возможность "не фильтровать помои" и не тратить ресурсы процессора.
Кстати, в новой версии PF скраблинг пакетов включен по умолчанию — об этом была уже новость.
Это все прекрасно, но мне бы пример когда без этой фичи не обойтись.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение iZEN » 2009-05-03 23:03:25

abanamat писал(а):
iZEN писал(а):PF отслеживает соединения (keep state) и проводит проверку только для первого пакета, который устанавливает соединение. Остальные IP-пакеты этого соединения не участвуют в проверках на соответвие всем правилам, а переносятся по установившемуся алгоритму.
Это мы про keep state. А в случае без keep state?
Наоборот. Отслеживание состояний соединений (stateful inspection) в PF понижает вероятность DDoS и сильно разгружает фильтр от излишней работы.
Ой ли. У меня бсдя на пэнтиум 3 раком вставала при keep state. Nmap ом всего с одной тачки --> eth0 | bpf etc. | eth1 --> во вторую сетку. Та же машина на статических правилах system load максимум 40 персентов и совсем живая.
Не забываем, что для отслеживания соединений нужны аппаратные ресурсы в виде достаточного объёма свободной памяти. :roll:
abanamat писал(а):
Фрагментация IP-пакетов так же может быть причиной атаки, так и широковещательного шторма с подменой IP-заголовков. Чтобы не нагружать фильтр лишней работой по отсеиванию мелких/нелегитимных пакетиков применяют "очистку" трафика, грубо говоря, прежде чем начать обработку IP-пакета и отправку его приложению, фильтр ждёт прихода всех его частей, в том числе переданных с ошибками. После сборки IP-пакета он может быть либо отброшен в целом как ошибочный, либо пройдёт дополнительный контроль на соответствие правилам фильтра. Это ещё одна возможность "не фильтровать помои" и не тратить ресурсы процессора.
Кстати, в новой версии PF скраблинг пакетов включен по умолчанию — об этом была уже новость.
Это все прекрасно, но мне бы пример когда без этой фичи не обойтись.
На роутерах с меняющимся значением MTU в различных направлениях? Лекарство от "MTU Discovery Black Hole" (RFC 2923)? :roll:
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
abanamat
сержант
Сообщения: 255
Зарегистрирован: 2007-03-15 11:24:26
Откуда: Питер
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение abanamat » 2009-05-03 23:46:13

iZEN писал(а):На роутерах с меняющимся значением MTU в различных направлениях? Лекарство от "MTU Discovery Black Hole" (RFC 2923)? :roll:
мнээ.. и это все? а еще чего-нибудь?

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение iZEN » 2009-05-04 0:18:33

abanamat писал(а):
iZEN писал(а):На роутерах с меняющимся значением MTU в различных направлениях? Лекарство от "MTU Discovery Black Hole" (RFC 2923)? :roll:
мнээ.. и это все? а еще чего-нибудь?
Ну, покопайся во Всемирной Помойке на предмет проблем с фрагментированными пакетами, трудно что ли? :roll:

Цитата: http://hack-articles.org/item/10
Упомянув фрагментированный трафик, нельзя не сказать, что во многих случаях он служит признаком, позволяющим распознать атаку. Многие средства сетевой безопасности (маршрутизаторы с функцией контроля доступа, межсетевые экраны, системы обнаружения атак и т. д.) не умеют правильно собирать фрагментированные пакеты, что приводит или к выходу их из строя, или к пропуску таких пакетов внутрь защищаемой сети. Первое происходит в случае фрагментов с неправильным смещением, а второе – в результате так называемой атаки tiny fragment. При такой атаке создается два ТСР-фрагмента: первый из них настолько мал, что даже не включает полного ТСР-заголовка, особенно порта получателя. Второй фрагмент содержит остаток заголовка. Многие межсетевые экраны пропускают первый фрагмент или оба внутрь корпоративной сети.
...
Однако самый известный пример атаки, использующей фрагментированные пакеты, – это Рing of Death. Принцип ее действия заключается в посылке IСМР пакета длиной более б5 535 байтов (максимальный размер 1Р-пакета). Длина данного сообщения, состоящего из множества фрагментов, может составлять например 65 740 (380+65 360) байтов. Еще одна проблема, связанная с фрагментированными пакетами, заключается в том, что длина передаваемого фрагмента должна быть кратна 8, что в приведенном примере не соблюдается (длина фрагмента 380 байт). Некоторые сетевые устройства или программы «не умеют» правильно собирать фрагменты нестандартного размера, что приводит к выходу их из строя.
Вот ещё развёрнутая информация: http://bezopasnieseti.ru/category/fragmentaciya-paketov
В этом разделе описывается влияние фрагментации на работу устройств, обеспечивающих фильтрацию пакетов, например маршрутизаторов или брандмауэров. Основная проблема возникает при необходимости блокирования фраг-ментированного трафика.Поскольку заголовок любого из пакетов транспортного уровня (TCP, UDP или ICMP) содержится только в первом фрагменте, то и на устройствах, которые не отслеживают содержимое заголовка IP-пакета, будет заблокирован только этот первый пакет последовательности фрагментов. В данном случае, казалось бы, должны блокироваться все фрагменты, идентификаторы которых совпадают с заблокированным фрагментом. На самом деле некоторые устройства фильтрации пакетов этого не выполняют. Они рассматривают каждый пакет отдельно и никак не сопоставляют его с предыдущими или последующими пакетами. Если сразу видно, что такой поход имеет очевидные недостатки, то зачем он вообще используется? Здесь стоит задуматься о накладных расходах, связанных с хранением информации о содержимом пакета. Ведь каждый фрагмент должен быть рассмотрен и сохранен, это требует значительных затрат времени, ресурсов процессора и памяти. К тому же требуется принятие решения о разрешении или запрещении прохождения пакетов, что также весьма накладно. Поэтому гораздо проще рассматривать каждый пакет отдельно.Если конкретный пакет не удовлетворяет условиям блокирования, например, из-за отсутствия заголовка вложенного протокола, то он пропускается фильтром пакетов. ФрагМентированные TCP- и UDP-пакеты содержат заголовки только в первом фрагменте созданной последовательности. Часто решение о блокировании пакета принимается только на основании информации заголовка о порте получателя. Это означает, что фрагментированные TCP- и UDP-пакеты могут использоваться для обмана несовершенных устройств фильтрации пакетов.Тут важен еще один момент. Протокол IP не является надежным, и вполне вероятна ситуация потери первого фрагмента, в котором содержится информация заголовка вложенного протокола. В этом случае задача фильтра пакетов по блокированию или разрешению прохождения трафика усложняется. Ведь если один фрагмент утерян, вся последовательность фрагментов должна быть отправлена повторно.
...
Существует множество видов использования фрагментации в неблаговидных целях. Целью злоумышленников могут быть проведение атаки отказа в обслуживании или передача в сеть такого трафика, который в нормальном, нефрагментированном виде был бы заблокирован. Некоторые несовершенные устройства фильтрации пакетов не в состоянии обнаружить криминала в отдельных фрагментах и разрешают прохождение вредоносных фрагментов. Обладая общим представлением о процессе фрагментации, значительно легче обнаруживать ее некорректное использование и отличать его от нормальной фрагментации.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

mnz_home
проходил мимо

Re: ipfw или pf

Непрочитанное сообщение mnz_home » 2009-05-06 20:53:57

Небольшой оффтоп: ipfw научился NATить в пул внешних ip-шников?

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение iZEN » 2009-05-06 22:15:28

mnz_home писал(а):Небольшой оффтоп: ipfw научился NATить в пул внешних ip-шников?
Кстати, да, как у ipfw с техникой binat?
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: ipfw или pf

Непрочитанное сообщение Dorlas » 2009-05-07 9:06:32

man natd:
-redirect_address localIP publicIP
Redirect traffic for public IP address to a machine on the
local network. This function is known as static NAT. Nor-
mally static NAT is useful if your ISP has allocated a small
block of IP addresses to you, but it can even be used in the
case of single address:

redirect_address 10.0.0.8 0.0.0.0

The above command would redirect all incoming traffic to
machine 10.0.0.8.

If several address aliases specify the same public address as
follows

redirect_address 192.168.0.2 public_addr
redirect_address 192.168.0.3 public_addr
redirect_address 192.168.0.4 public_addr

the incoming traffic will be directed to the last translated
local address (192.168.0.4), but outgoing traffic from the
first two addresses will still be aliased to appear from the
specified public_addr.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: ipfw или pf

Непрочитанное сообщение terminus » 2009-05-07 9:55:51

iZEN писал(а):
mnz_home писал(а):Небольшой оффтоп: ipfw научился NATить в пул внешних ip-шников?
Кстати, да, как у ipfw с техникой binat?
Я сам не делал, но думаю, что, если есть 192.168.1.0/24 и пул из 4 реальных IP, то можно создать четыре ipfw nat и на правилах ipfw разделить /24 на четыре части, и натить каждую на свой экземпляр ipfw nat.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

airmax
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-06-20 23:04:54

Re: ipfw или pf

Непрочитанное сообщение airmax » 2009-06-20 23:24:25

Просто стао интересно сколько нужно сделать телодвижений, чтобы создать подобное правило для ipfw?
Не холивар - хочу увидеть пример конфига.

Код: Выделить всё

pass in quick on $wan_if_u reply-to ($wan_if_u ($wan_if_u:0)) \
    inet proto tcp from any to ($wan_if_u:0) port ssh \
    flags S/SA keep state \
    (max-src-conn 15, max-src-conn-rate 5/3, \
    overload <bruteforce> flush global, floating) label "SSH"
Для тех кто не знаком с синтаксисом ПФ, поясню.
Данное правило, разрешает входящие ССШ соединения и создаёт обратное правило.
При этом, ответ будет отправлен на тот интерфейс с которого он пришёл, независимо от
маршрута по умолчанию. Если кто-то попытается установить соединения приевышающее
max-src-conn-rate, адрес будет добавлен в таблицу bruteforce и что важно, ВСЕ
установленные соединения с данным адресом (по люым потрам) будут незамедлительно
закрыты. Да, и ещё важная деталь, это правило динамическое. Т.е. если у интерфейса
$wan_if_u сменился адрес всё будет работать без перезагрузки правил.

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: ipfw или pf

Непрочитанное сообщение tyler56 » 2009-06-21 13:37:22

pf в качестве фаервола и нат.
ipfw как шейпер.

airmax
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-06-20 23:04:54

Re: ipfw или pf

Непрочитанное сообщение airmax » 2009-06-22 23:21:54

tyler56 писал(а):pf в качестве фаервола и нат.
ipfw как шейпер.
Тоже пользуюсь этой связкой. Пришлось правда написать небольшой скрипт для загрузки фаерволов в нужном порядке.
Очень доволен. :good:

Sadok123
сержант
Сообщения: 174
Зарегистрирован: 2008-09-04 10:59:32

Re: ipfw или pf

Непрочитанное сообщение Sadok123 » 2009-06-23 21:28:11

airmax писал(а):
tyler56 писал(а):pf в качестве фаервола и нат.
ipfw как шейпер.
Тоже пользуюсь этой связкой. Пришлось правда написать небольшой скрипт для загрузки фаерволов в нужном порядке.
Очень доволен. :good:
хм. когда они в ядре у меня всегда получалось (Ыксперементировал) исходящие ipfw-ipf-pf, входящие наоборот соответственно.

airmax
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-06-20 23:04:54

Re: ipfw или pf

Непрочитанное сообщение airmax » 2009-06-23 23:14:47

Sadok123 писал(а): хм. когда они в ядре у меня всегда получалось (Ыксперементировал) исходящие ipfw-ipf-pf, входящие наоборот соответственно.
Есть отличная статья в которой внятно растолковано что порядок следования пакетов определяется порядком регистрации фаерволов в pfil.
В моей конфигурации все фаерволы подгружаются модулями. Первым загружается IPFW, потом PF.
В итоге получается такая цепочка прохождения(именно то чт нужно):
PF <-> IPFW <-> ЯДРО <-> IPFW <-> PF

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: ipfw или pf

Непрочитанное сообщение Dorlas » 2009-06-24 8:30:48

tyler56 писал(а):pf в качестве фаервола и нат.
ipfw как шейпер.
Вот интересно - уже не первый раз натыкаюсь на сообщения, что многие используют IPFW как шейпер, а PF как межсетевой экран и NAT.

Интересно - а почему? Что такого не может ALTQ, что может DummyNet ?

Sadok123
сержант
Сообщения: 174
Зарегистрирован: 2008-09-04 10:59:32

Re: ipfw или pf

Непрочитанное сообщение Sadok123 » 2009-06-24 8:33:32

Вот интересно - уже не первый раз натыкаюсь на сообщения, что многие используют IPFW как шейпер, а PF как межсетевой экран и NAT.

Интересно - а почему? Что такого не может ALTQ, что может DummyNet ?
я использовал ipfw как шейпер и ipf/ipnat как NAT и фаер

с добавлением в эту связку pf только баловался перед окончательным переездом под pf

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw или pf

Непрочитанное сообщение hizel » 2009-06-24 9:08:28

родите на pf простую политику партии:
распределить ширину канала равномерно на всю подсеть за роутером
и ipfw будет не нужен вам

:]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Dorlas
сержант
Сообщения: 257
Зарегистрирован: 2008-07-18 22:17:49

Re: ipfw или pf

Непрочитанное сообщение Dorlas » 2009-06-24 10:25:32

hizel писал(а): распределить ширину канала равномерно на всю подсеть за роутером
Честно говоря, не очень понятно, зачем такая задача вообще стоит...

Вот пример - за шлюзом в сети 10 человек, все поставили на закачку через NAT большие файлики (по 500 Мб) - через некоторое время у каждого будет примерно одинаковая скорость закачки...

Ни разу не видел, чтобы кто-то умудрился захавать большую часть полосы...

airmax
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-06-20 23:04:54

Re: ipfw или pf

Непрочитанное сообщение airmax » 2009-06-24 10:40:39

Dorlas писал(а): Интересно - а почему? Что такого не может ALTQ, что может DummyNet ?
Несмотря на схожесть в смысле разспеделения полосы, смысл разный.
ALTQ - реализовует QoS дисциплины.
DummyNet - это чистый шейпер трафика.
Да, используя ALTQ 5-10ти машинам можно "нарезать" трафик. Но когда больше - начинаются проблемы.
Ну не предназначено оно для этого...

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: ipfw или pf

Непрочитанное сообщение iZEN » 2009-06-24 12:35:02

hizel писал(а):родите на pf простую политику партии:
распределить ширину канала равномерно на всю подсеть за роутером
и ipfw будет не нужен вам

:]
:ROFL:
А оно и без пакетного фильтра равномерно распределяется.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw или pf

Непрочитанное сообщение hizel » 2009-06-24 12:55:52

нет не распределяется, в общем случае это зависит от того как шейпит аплинг провайдер
ну так как ?

Код: Выделить всё

$fw pipe 1 config bw 20Mbit/s queue 80
$fw pipe 2 config bw 20Mbit/s queue 80

$fw queue 10 config pipe 1 queue 80 weight 40 mask dst-ip 0xffffffff
$fw queue 11 config pipe 2 queue 80 weight 40 mask src-ip 0xffffffff

$fadd 2104 queue 10 ip from any to table\(1\) out via vlan\*
$fadd 2105 queue 11 ip from table\(1\) to any in via vlan\*
реализация этой схемы на pf, где?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: ipfw или pf

Непрочитанное сообщение tyler56 » 2009-06-24 20:12:29

У меня пользователи создают pptp соединения. Создаются динамические линки а для pf нужно указываться интерфейс на котором происходит нарезка.
Пробовал это делать скриптами в mpd при создании линка но это все геморно. Да и точность нарезки у pf желает быть лучшей. Хотя в нем меня радует поддерка borrow, чего от DummyNet добиться сложно.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw или pf

Непрочитанное сообщение hizel » 2009-06-24 20:14:10

а ng_car вы не пробовали? :]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

airmax
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-06-20 23:04:54

Re: ipfw или pf

Непрочитанное сообщение airmax » 2009-06-24 23:32:49

hizel
Вобще, мы вроде как о фаерволах говоили. Но как вы сами видите, ipfw используется многими из за dummynet, тобишь как шейпер :)
А это уже немного разные вопросы.
Раз уж вы так сильны в ipfw, напишите правила как я просил несколькими постами выше. Мне это на самом деле интерестно.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw или pf

Непрочитанное сообщение hizel » 2009-06-25 15:06:43

airmax

limit в ipfw можно поставить только по одному параметру одновременно
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: ipfw или pf

Непрочитанное сообщение konstantine » 2009-06-27 22:15:09

icb писал(а):
потому что его возможности более расширены по сравнению с ipfw
Т.е. ipfw менее функционален? Почему его тогда оставили и развивают, а не забросили?
Когда покувыркаетесь с ним, день , три , неделю вот тогда и поймете что вам нужно и тогда уже вопросы будут более конкретные.
Так можно ответить на любой вопрос - бери сервер и кувыркайся год, все поймешь.
Но хочется услышать мнение тех, кто уже покувыркался и воспользоваться их знаниями ;)
Ля Чувак с сентября 2008 с *nix`ами стал знакомиться так когда поставил первую Фрю я как ты голову ломал что и куда и знаешь что я решил? - Я посчитал что мир ИТ мчится с бешенной скоростью, поэтому я решил брать всё самое так сказать новой и свежее + как вывод может и кривое - поэтому моя первая Фря это 7.0 мой фаервол PF, мой первый сквид 3.0 единственное так это апач так 1.3 2.0 и 2.2 каждый хорош под свои задачи поэтому пробую все.

Единственное что я тебе скажу что увидев PF я влюбился в этот фаервол использую его я даже смог отказаться от статичных route`ов потому что он умеет сам маршрутить, канешно как я маршрутизировал это ужасно и мне в какой то мере стыдно, но всеравно PF + pftop, pfstat и в конце tcpdump это отлично, по крайней мере во мне изучая PF зародились задатки параноидальности понимания текущих дел происходящих на маршрутезаторе.
А не виндузятный пофигизм.
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.