OpenBSD - статьи
de301fb4

Флаги TCP


Фильтрация по TCP флагам полезна, но у Вас могут быть проблемы. Рекомендуется перед использованием TCP флагов в правилах, ознакомится с соответствующей документацией. Фильтр отслеживает флаги в каждом пакете и, если нужно, сравнивает с заданными флагами в правилах IP Filter'a.

Некоторые пакетные фильтры разрешают фильтровать TCP пакеты уже установленных соединений. Проще говоря, фильтрация пакетов с установленным ACK битом. ACK бит присутствует только в пакетах установленного соединения или при закрытии соединения. Если у Вас было правило такого вида:

allow proto tcp 10.1.0.0 255.255.0.0 port = 23 10.2.0.0 255.255.0.0 established

теперь можно писать так:

# # pass in proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A pass out proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A

Более полезный флаг, который можно фильтровать при TCP соединениях, это SYN флаг. Этот флаг присутствует в пакетах при инициализации TCP соединения. В любых других случаях ACK или, иногда, URG/PUSH флаги могут дополнительно присутствовать в пакете. Поэтому, если вы хотите закрыть любые соединения в вашу внутpеннюю сеть (10.1.0.0) извне, то надо делать так:

# # блокируем входящие соединения во внутреннюю сеть из Internet # block in on le0 proto tcp from any to 10.1.0.0/16 flags S/SA

Если вы хотите блокировать ответы на соединения, вы должны делать так:

# # block out on le0 proto tcp from 10.1.0.0 to any flags SA/SA

когда SA флаг присутствует, SYN-ACK также установлен.

Флаги после "/" указывают на маску TCP флага, показывающую биты TCP флагов, по которым идет фильтрация. При использовании бита SYN вы должны указать маску, чтобы гарантировать, что фильтр не будет обескуражен пакетом с установленными SYN и URG флагами.



Содержание раздела