Cisco Reflexive ACL на примере домашней сети
Reflexive ACL на роутерах компании Cisco позволяет творить чудеса. Данное решение позволяет создавать защищенные системы для небольших домашних сетей в которых сидят в основном школьники которые любят ловить приключения на свои мелкие задницы. Они «сидят» за NAT и светятся в интернете белым IP-адресом роутера, за которым может находиться несколько десятков пользователей. И во время попыток других школьников, которые пытаются «наказать» своих обидчиков они применяют довольно распространённые методы взлома роутера и пытаются проникнуть за NAT. Технически, используя открытый порт, оставшийся от предыдущей сессии, можно получить возможность гнать трафик через этот порт за NAT. Полноценный взлом не получится, но DoS или загрузку канала устроить можно. В интернете много информации и инструкций о том как подменить флаг ACK или RST в TCP-пакетах с атакующей машины, да и пост о том как от этого защититься. Например, Cisco держит открытым порт в течение 24 часов для TCP и 5 минут для UDP. Как обстоят дела на других вендорах мне не известно. И так, в чём же плюсы подобного ACL? Он позволяет получать ответы из интернета только при условии инициации от пользователя расположенного внутри нашей сети. Нечто аналогичное можно делать используя established, но established умеет работать только с TCP.
Я понимаю, что в конце 2021 года подобных сетей уже не существует, но подобная настройка пригодится для различных кафе, работающих в обход закона о WiFi и которыми пользуются малолетние хакеры. А так же я знаю несколько человек которые вечно боятся, что их взломают через порты, открытые от предыдущих сессий. И так, перейду к примерам. Для начала нам необходимо определиться, что можно разрешить вытягивать из интернета пользователям нашей импровизированной домашней сети.
- HTTP
- HTTPS
- FTP
- POP3
- SMTP
Для начала создадим два ACL с описанием правил.
border(config)#ip access-list extended LAN_IN border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 80 reflect REFL-HTTP border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 443 reflect REFL-HTTPS border(config-ext-nacl)#permit udp 192.168.30.0 0.0.0.255 any eq 443 reflect REFL-HTTPS-UDP border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 20 reflect REFL-FTP1 border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 21 reflect REFL-FTP2 border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 110 reflect REFL-POP3 border(config-ext-nacl)#permit tcp 192.168.30.0 0.0.0.255 any eq 25 reflect REFL-SMTP border(config-ext-nacl)#permit icmp any any border(config-ext-nacl)#exit border(config)#ip access-list extended WAN_IN border(config-ext-nacl)#evaluate REFL-HTTP border(config-ext-nacl)#evaluate REFL-HTTPS border(config-ext-nacl)#evaluate REFL-FTP1 border(config-ext-nacl)#evaluate REFL-FTP2 border(config-ext-nacl)#evaluate REFL-HTTPS-UDP border(config-ext-nacl)#evaluate REFL-POP3 border(config-ext-nacl)#evaluate REFL-SMTP
Обратите внимание, что помимо основного правила на локальном интерфейсе, требуется отзеркаливание правила на внешнем интерфейсе.
border(config)#interface Gi0/0 border(config-if)#ip access-group LAN_IN in border(config-if)#exit border(config-if)#inter Gi0/1 border(config-if)#ip access-group WAN_IN in border(config-if)#exit
Эти правила действуют следующим образом. Из локальной сети можно инициировать подключение наружу для разрешенного трафика и после этого открывается приём ответного трафика. Весь входящий трафик будет заблокирован для всего, кроме инициированной сессии. Это позволит отбрасывать все несанкционированные пакеты.
Опять же на дворе 2021 год и проблемы с NAT являются искусственными при наличии IPv6. Но процесс внедрения IPv6 как-то ну очень сильно тормозится.
Отредактировано:2021-10-01 09:35:38