Ограничение доступа к маршрутизатору по telnet или ssh с помощью ACL

Давайте разберёмся, как ограничить доступ к маршрутизатору. Для начала рекомендую прочитать статью об ACL, если вы этого ещё не сделали.

Как не надо делать

Итак, есть маршрутизатор, мы, как администраторы хотим иметь возможность удалённо к нему подключаться по ssh либо telnet, но не хотим, чтобы к нему удалённо подключались злоумышленники и брутфорсили наши пароли. Задача достаточно сложная, если пытаться решить её применением расширенных ACL на интерфейсы маршрутизатора.

Допустим есть роутер с такими интерфейсами:

  • Fa0/0 (191.168.0.1)
  • Fa0/1 (192.168.1.1)
  • Fa0/2 (192.168.2.1)

Чтобы зафильтровать доступ по telnet, на Fa0/0 нам пришлось бы применить такой ACL на вход:

access-list 101 deny tcp any host 192.168.0.1 eq telnet
access-list 101 deny tcp any host 192.168.1.1 eq telnet
access-list 101 deny tcp any host 192.168.2.1 eq telnet
access-list 101 permit ip any any

На Fa0/1 и Fa0/2 надо было бы применить тот же ACL. Так как к маршрутизатору можно подключиться на любой его интерфейс. Например, мы можем находиться в сети, подключенной через Fa0/0 и обратиться к роутеру через интерфейс Fa0/1. Наш трафик заходит через Fa0/0, маршрутизируется на Fa0/1 и там уже происходит подключение по telnet. Поэтому мы и перечислили все интерфейсы. Представьте теперь, что на каждом из интерфейсов уже был свой ACL со своими правилами по фильтрации. В этом случае у нас не получится применить общий ACL 101 на все интерфейсы, надо будет в каждый ACL добавлять три строчки. Представьте, что появился новый интерфейс Fa0/3 (192.168.3.1) – теперь нам надо обойти все созданные ранее ACL и добавить там строчку

deny tcp any host 192.168.3.1 eq telnet

Короче говоря, мы обязательно что-то забудем, да и вообще, так дела не делаются. К счастью, у cisco есть гораздо более простой способ ограничить доступ с каких-то адресов к telnet или ssh.

Как надо делать

Создаём стандартный ACL, в котором перечисляем адреса и сети, из который доступ по telnet надо разрешить. И применяем его непосредственно на line vty 0 4, то есть, на линии виртульного терминала, к которым происходит подключение. Таким образом, не важно, через какой интерфейс маршрутизатора telnet пакеты попадут на роутер, они будут отфильтрованы когда доберутся собственно до vty.

Например, в предыдущем примере, с тремя интерфейсами на маршрутизаторе надо разрешить подключение по telnet с адреса администратора (192.168.1.100), со всех остальных адресов – запретить. Настройка будет выглядеть так:

R1#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#access-list 1 permit host 192.168.1.100
R1(config)#access-list 1 deny any
R1(config)#line vty 0 4
R1(config-line)#access-class 1 in

ACL 1 — простой ACL, состоящий из двух строк. Применён он на line vty и теперь не важно, откуда пришёл трафик, с какого интерфейса, с какой сети. Когда он дойдёт до VTY, он будет проверен на соответствие ACL и принят, либо отброшен.

Обратите внимание, что ACL применяется на интерфейсе командой access-group, а на vty — командой access-class.

Тэги: 

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