Что ж, я не знал точно, как задать этот вопрос, но я знаю, что вы можете использовать ключевые слова 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 |
---------------