Что делает established в ACL?

Ключевое слово established используется в расширенных ACL, для определения, принадлежит ли трафик к открытой TCP сессии. Маршрутизатор проверяет, соответствующий бит в заголовке TCP и принимает решение относительно того, относится ли трафик к уже установленному соединению.

Типичное использование established – организация доступа к интернету для сотрудников, чтобы извне нельзя было обращаться ко внутренней сети, но при этом ответы от веб серверов проходили вовнутрь нормально.

Следует отметить, что established имеет ряд недостатков. Основной из них – работа только с протоколом TCP, так как используется его внутренний флаг. Если требуется работа с другими протоколами, следует использовать для этих же целей зеркальные ACL. Подробнее о них можно прочитать в статье «Reflexive ACL — настройка и пример работы зеркальных списков контроля доступа».

Допустим, есть топология:

Топология для демонстрации ACL c established

Внутренняя сеть 192.168.1.0/24, надо обеспечить доступ из неё в интернет так чтобы ответы от серверов из интернета работали (при условии, что мы первые установили с ними соединение и запросили страничку), но при этом обратиться вовнутрь извне было нельзя. Внутренняя сеть подключена к Fa0/1, внешняя – Fa0/0.

Настройка будет выглядеть так:

Router(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 any eq 80
Router(config)#access-list 102 permit tcp any eq 80 192.168.1.0 0.0.0.255 established
Router(config)#interface fa0/1
Router(config-if)#ip access-group 101 in
Router(config-if)#interface fa0/0
Router(config-if)#ip access-group 102 in

Расширенный ACL 101 служит для выпуска трафика из пользовательской сети, он настроен на вход на интерфейса fa0/1. Он уничтожает весь трафик кроме того, что идёт из сети на любой адрес на 80-ый порт.

ACL 102 используется на Fa0/0 – на вход. Условно говоря, когда из интернета приходит пакет, он проверяется сразу же этим ACL. Пропускается только трафик идущий с 80-го порта на удалённом сервере (ответы от веб серверов), только в нашу внутреннюю сеть, и, самое главное только established трафик, то есть только трафик в рамках сессии которую установили мы изнутри.

Чего мы добились?

Изнутри можно обращаться к сайтам и получать от них ответы, но если злоумышленник захочет подключиться к компьютеру внутри нашей сети (будучи сам снаружи), у него это не получится, даже если он будет пытаться подключиться с 80-го порта, так как при подключении он будет устанавливать новое соединение, и установить он его не сможет, так как в первых TCP сегментах не будет стоять необходимый флаг, соответственно, не произойдёт TCP-рукопожатие.

Тэги: 

Комментарии

здравствуйте, спасибо, за грамотно изложенный материал,
а какие флаги заменяет established ?

Аватар пользователя bacek
Established срабатывает в том случае, когда в TCP сегменте установлен в значение "1" хотя бы один из флагов: ACK или RST. Ни один из них не может быть 1 до и в момент установки соединения.

В исходных данных, видимо, опечатка в адресе сети: "Внутренняя сеть 192.168.0.1/24, надо обеспечить доступ из неё в интернет..."
Должно быть 192.168.1.0/24, по-моему.

Аватар пользователя bacek
Спасибо. Именно так.

Спасибо за статью, но такой вопрос:

а какой смысл от ACL 102, если 101 так или иначе выпускает локальную сеть только на любой адрес только с портом 80.

Ведь если к нам захочет подключиться кто,то он в адресе отправителя src порт будет иметь скорее всего какой то динамический порт, который врятли будет с номером 80. То есть на 101 листе уже будет резаться входящие подключения, когда клиень в локалке будет отвечать адресу отправителя из внешней сети.

хотя с другой стороны такой ACL снижает нагрузку на роутер при транляции адресов и обрезает лишний трафик.

Добавить комментарий