Telnet access-list на Cisco IOS-XR (ASR9K/XRv/CRS)

Казалось бы, использование telnet в 2014 году выглядит как минимум странно. Однако, до сих пор существует ряд причин, по которым использование telnet актуально, например, нужно заходить с соседнего хоста, на котором нет ssh-клиента (к примеру, на Cisco ASR1K с управляющей картой ESP10-N), где-то работают старые telnet-скрипты(а сам протокол telnet реализован на коленке на сокетах), а безопасность осуществляется на уровне транспорта. Так или иначе, telnet на сетевом оборудовании всё ещё применяется и не редко встаёт задача закрыть telnet-сервис access-list’ом.

В случае с IOS-XR, чтобы повесить ACL на telnet-сервис(в GRT) нужно применить следующую команду:

telnet vrf default ipv4 server max-servers 10 access-list 25

После чего, зайти по телнету можно будет только хостам, определённым в acl 25. Однако, в этом случае, порт-сканеры(например, онлайн-проверка портов ping.eu) покажет вам, что порт 23 открыт. Если вы периодически сканируете свою сеть на предмет уязвимостей, то эта запись в отчёте будет каждый раз привлекать ваше внимание. Если снять дамп и посмотреть что происходит, то становится понятно почему порт считается открытым:

N  Source IP         Destination IP     Packet info
1  192.0.2.1         203.0.113.0        36764 → telnet [SYN] Seq=0 Win=29200 Len=0
2  203.0.113.0       192.0.2.1          telnet → 36764 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0
3  192.0.2.1         203.0.113.0        36764 → telnet [ACK] Seq=1 Ack=1 Win=229 Len=0
4  203.0.113.0       192.0.2.1          telnet → 36764 [RST, ACK] Seq=1 Ack=1 Win=16384 Len=0

(192.0.2.1 – клиент, 203.0.113.0 – IOS-XR)

Из этого дампа видно, что сначала устанавливается tcp-сессия, затем сразу же закрывается, но сам факт получения TCP[SYN,ACK] от испытуемого хоста позволяет считать сканерам портов, что порт открыт.

Чтобы порт считался закрытым/зафильтрованным нужно, чтобы хост отвечал tcp-rst/icmp dst-unreachable или вообще ничего не отвечал. Для решения этой задачи, у IOS-XR имеется функционал management plane protection(MPP), который позволяет определить поведение при обработке протоколов управления оборудованием (telnet/ssh/snmp/http/tftp/xml). Сконфигурировав MPP следующим образом:

control-plane
 management-plane
  inband
   interface all
    allow Telnet peer
     address ipv4 192.0.2.128/25

попробуем подключиться к ios-xr с хоста 192.0.2.1 и снять дамп:

N  Source IP         Destination IP     Packet info
1  192.0.2.1         203.0.113.0        36766 → telnet [SYN] Seq=0 Win=29200 Len=0
2  203.0.113.0       192.0.2.1          telnet → 36766 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

В этом случае, сразу же отправляется tcp-rst, порт считается закрытым.

Вывод телнет-клиента до и после конфигурирования MPP тоже отличаются:

До: $ telnet 203.0.113.0
Trying 203.0.113.0...
Connected to 203.0.113.0.
Escape character is '^]'.
Connection closed by foreign host.

После: $ telnet 203.0.113.0
Trying 203.0.113.0...
telnet: Unable to connect to remote host: Connection refused

Если вы используете другие протоколы для управления устройством (например, ssh и snmp), то их придётся явно сконфигурировать в секции management-plane. Документации по MPP на сайте Cisco (архив). Перед применением рекомендуется ознакомиться с нюансами относительно inband/out-of-band и vrf-ов.

Advertisements

2 thoughts on “Telnet access-list на Cisco IOS-XR (ASR9K/XRv/CRS)

  1. Pingback: Top-10 ошибок настройки/дизайна СПД в ISP | Net-Labs.in

  2. Pingback: Top-10 ошибок настройки/дизайна СПД в ISP — BLOG IT-шника

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s