Имеется задача запретить инициировать TCP-сессии из сети, при этом оставить возможность отвечать на запрошенные соединения.
На интерфейсе имеется создан следующий ACL:
permit tcp 192.168.50.0 0.0.0.255 any any 1024-65535 ace-priority 20
Требуется внести изменения и разрешить только ответный TCP-трафик Данное правило запрещает открывать сессии хостам из сети 192.168.50.0/24, не открывая весь диапазон (1024-65535) зарегистрированных и динамических портов (т.к. номер на инициаторе сессии заранее неизвестен).
На Cisco это можно решить с помощью следующего правила:
...
established —Enter to match an established connection. This has the same function as matching on the ack or rst flag.
В этом случае, правила на MES для большинства административных сетевых служб, использующих общеизвестные (well-known) порты (Telnet, SSH, TACACS). В то же время, ответить на запрос такого соединения хосты из данной сети могут (диапазон зарегистрированных и динамических портов разрешён). Однако далеко не все службы используют диапазон общеизвестных портов для установки соединения, таким образом в полном объеме поставленная задача не выполняется.
Существует другой способ разрешить прохождение только ответного (с точки зрения хоста из сети 192.168.50.0/24) трафика - указать флаги (flags) в правиле ACL в качестве условия соответствия.
Если для срабатывания правила флаги должны присутствовать в сегменте, требуется указать их в следующем виде:
permit tcp [...] match-all +urg, +ack, +psh, +rst, +syn, +fin
Если должен отсутствовать:
permit tcp [...] match-all -urg, -ack, -psh, -rst, -syn, -fin
Для реализации поставленной задачи, правила будут выглядеть следующим образом:
permit tcp 192.168.50.0 0.0.0.255 any any any match-all +rst ace-priority 20
permit tcp 192.168.50.0 0.0.0.255 any any any match-all +ack ace-priority 40
Таким образом, прохождение TCP-пакеты, содержащие пакетов от хостов 192.168.50.0/24, содержащих флаги ACK или RST будут пропущеныбудет разрешено, а установка новых сессий (когда сегменте содержит только флаг SYN) - запрещена.