Как фильтровать TCP-пакеты на основе флагов с помощью Packet Filter
Ну, я не знаю точно, как задать этот вопрос, но я знаю, что вы можете использовать ключевые слова flags, чтобы определить, какие флаги вы хотите отфильтровать.
Согласно документации Пакетного фильтра:
Чтобы PF проверял флаги TCP во время оценки правила, используется ключевое слово flags со следующим синтаксисом:
флажки проверки / маски флаги любые
Часть маски указывает PF проверять только указанные флаги, а часть проверки указывает, какие флаги должны быть включены в заголовке для совпадения. Использование любого ключевого слова позволяет установить любую комбинацию флагов в заголовке.
передача по протоколу fxp0 proto tcp с любого на любой порт ssh flags 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] только флаг (ы) должен быть включен в заголовке -> флаг (ы), например, замаскированное подмножество [что я понял из приведенного примера]
Заранее спасибо!
1 ответ
Это означает, что вы смотрите на два флага 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 |
---------------