Инструменты пользователя

Инструменты сайта


pf_scrub_packet_normalization

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

pf_scrub_packet_normalization [2018/11/23 09:19] (текущий)
Строка 1: Строка 1:
 +====== PF: Scrub (Packet Normalization) ======
 +
 +  * [[http://​www.opennet.ru/​base/​net/​pppoe_mtu.txt.html|О PPPoE, MTU и проблеме Path MTU Discovery Black Hole]]
 +
 +Нормализация трафика нужна для того, чтобы исключить неопределённость с тем куда направляется пакет. Кроме того, при нормализации собираются вместе фрагментированные пакеты,​ происходит защита операционных систем от некоторого вида атак и отбрасываются TCP пакеты с невозможным сочетанием флагов. Простейшая директива выглядит так: **scrub in all**.
 +<​code>​
 +scrub in all раскрывается в scrub in all fragment reassemble
 +</​code>​
 +Это приводит к нормализации всего входящего трафика на всех интерфейсах.
 +
 +Одна из возможных причин для неиспользования нормализации — использование NFS. Некоторые не OpenBSD платформы используют странные пакеты — фрагментированные,​ но с выставленным битом «нефрагментировано»,​ которые должны отбрасываться пакетным фильтром при нормализации. Эту проблему можно разрешить при использовании опции no-df. Другая причина может состоять в том, что некоторые многопользовательские сетевые игры блокируются пакетным фильтром с запущенным нормализатором. Во всех остальных случаях,​ кроме приведённых весьма необычных ситуаций,​ **нормализация трафика крайне желательна**.
 +
 + ​Синтаксис директивы scrub весьма напоминает синтаксис правил фильтрации (см. [[http://​house.hcn-strela.ru/​BSDCert/​BSDA-course/​apcs02.html#​pf-filter|Раздел C.2.1.4, «Фильтрация пакетов»]]). Как и в случае с NAT трансляцией,​ первое правило выигрывает. Перед директивой scrub можно употреблять ключевое слово no, чтобы указанные пакеты не нормализовались.
 +
 +Scrub имеет следующие опции:
 +
 +  * **no-df**: Очищает бит «нефрагментировано» из заголовка IP. Про некоторые операционные системы известно,​ что они выставляют этот бит на фрагментированных пакетах при работе с NFS. Нормализатор будет отбрасывать такие пакеты,​ если не указана данная опция. Поскольку некоторые операционные системы генерируют такие пакеты с нулевым идентификатором IP, рекомендуется употреблять данную опцию вместе с опцией random-id.
 +  * **random-id**:​ Замещать идентификатор IP случайным значением для компенсации некоторых систем использующих предсказуемые идентификаторы. Опция может применяться только к нефрагментированным пакетам. ​
 +  * **min-ttl num**: Выставить минимальный TTL в пакете IP.
 +  * **max-mss num** Выставить максимальный размер сегмента в заголовке IP.
 +  * **fragment reassemble**:​ Буферизовать входящий трафик и собирать вместе фрагментированные пакеты перед отправкой на правила фильтра. Выигрыш в том, что фильтр имеет дело с заведомо нефрагментированным трафиком и видит пакет целиком. Проигрыш в расходе памяти и замедлении прохождения пакетов через пакетный фильтр. ​
 +  * **fragment crop**: В норме, при фрагментации IP пакетов они должны нарезаться на части без перехлёстов. Если фрагменты повторяются или накладываются,​ это не нормальная ситуация. В таком случае можно сделать одно из двух: либо повторы выкинуть,​ а накладывающиеся фрагменты обрезать,​ либо выкинуть и то и другое по параноидальным соображениям. Первое делает опция fragment crop, второе — fragment drop-ovl. В обоих случаях пакеты не буферизируются как в случае fragment reassemble.
 +  * **fragment drop-ovl**: Выбрасывать пакеты в которых происходят повторы и наложения (см. пояснение в предыдущей опции). ​
 +  * **reassemble tcp**: Нормализация соединений TCP на основе таблицы состояний. При использовании данной опции нельзя указывать направление in/out. Осуществляется следующая нормализация:​
 +          - Ни одна из сторон не может занижать TTL. Это нужно для предотвращения атак на брандмауэр,​ когда злоумышленник занижает TTL с целью замусорить таблицу состояний. TTL выставляется в наивысшее значение случившееся во время коннекта.
 +          - Выставляется случайный timestamp в заголовке IP, с тем, чтобы злоумышленник не мог догадаться как много машин находится за шлюзом с NAT. 
 +<​code>​
 +Examples:
 +
 +    scrub in on fxp0 all fragment reassemble min-ttl 15 max-mss 1400
 +    scrub in on fxp0 all no-df
 +    scrub    on fxp0 all reassemble tcp 
 +</​code>​
 +
  
загрузка...
pf_scrub_packet_normalization.txt · Последние изменения: 2018/11/23 09:19 (внешнее изменение)