Назад | Перейти на главную страницу

Как фильтровать TCP-пакеты на основе флагов с помощью Packet Filter

Что ж, я не знал точно, как задать этот вопрос, но я знаю, что вы можете использовать ключевые слова flags, чтобы указать, какие флаги вы хотите фильтровать.

Согласно документации Пакетного фильтра:

Чтобы PF проверял флаги TCP во время оценки правила, используется ключевое слово flags со следующим синтаксисом:

флаги проверка / маска флаги любые

Часть маски сообщает PF проверять только указанные флаги, а часть проверки указывает, какой флаг (ы) должен быть включен в заголовке, чтобы совпадение произошло. Использование ключевого слова any позволяет устанавливать в заголовке любую комбинацию флагов.

передать на fxp0 proto tcp с любого на любой порт ssh флаги S / SA передать на fxp0 proto tcp от любого на любой порт ssh

Поскольку флаги S / SA установлены по умолчанию, приведенные выше правила эквивалентны. Каждое из этих правил пропускает трафик TCP с установленным флагом SYN, смотря только на флаги SYN и ACK. Пакет с флагами SYN и ECE будет соответствовать вышеуказанным правилам, а пакет с SYN и ACK или просто ACK - нет.

Итак, я понял пример и почему пакет с флагами S и E может пройти (потому что флаг E не учитывается из-за маски SA) и почему пакет только с флагом Ack не может пройти брандмауэр.

Я не понял, почему пакет с флагами S и A не может пройти правило S / SA, если флаг S в заголовке пакета включен. Может документация неоднозначная? Извините, если это глупый вопрос или неправильно понятый английский.

Я предполагаю, что он может пройти только в том случае, если он ДОЛЖЕН ИМЕТЬ ТОЛЬКО флаг S. В арифметике набора будет что-то вроде этого:

флаг (ы) должен быть включен в заголовке -> флаг (ы) относится к замаскированному подмножеству [pf doc], только флаг (ы) должен быть «включен» в заголовке -> флаг (ы) соответствует замаскированное подмножество [что я понял из приведенного примера]

Заранее спасибо!

Это означает, что вы смотрите на два флага S & A но вы соответствуете тогда и только тогда, когда S включен И A выключен".

flags S/SA

 ---------------
| S | A | Match |
 ---|---|-------
| 0 | 0 | No    |
| 0 | 1 | No    |
| 1 | 0 | Yes   |
| 1 | 1 | No    |
 ---------------

Если вы хотите соответствовать, когда оба SA флаги включены, вы будете использовать flags SA/SA.

flags SA/SA

 ---------------
| S | A | Match |
 ---|---|-------
| 0 | 0 | No    |
| 0 | 1 | No    |
| 1 | 0 | No    |
| 1 | 1 | Yes   |
 ---------------