Предположим, что хакер получил доступ к коммутатору SW1. Либо он мог поставить свой коммутатор в разрыв существующей линии. Настроил зеркалирование трафика (SPAN порт) на свой компьютер, где в свою очередь запущен Wireshark - софт для анализа трафика. Администратор ни о чем не подозревает и инициирует удаленное telnet соединение с роутером R2. Вводит имя, пароль, просматривает конфигурацию. В это время на компьютере злоумышленника видно весь проходящий трафик, в том числе TELNET:
Как видно из картинки, злоумышленник теперь знает и логин, и пароль, и даже всю конфигурацию устройства. Сказывается отсутствие шифрования Telnet - сессии.
Очевидное решение проблемы Telnet - шифрование данных. Для этой цели был создан протокол SSH (Secure Shell - “Безопасная оболочка”) - сетевой протокол прикладного уровня, предназначенный для удаленного управления. SSH является практически стандартом для удаленного администрирования и поддерживается большинством операционных систем. Протокол создает виртуальный шифрованный канал между двух устройств. При этом одно устройство выступает в качестве SSH сервера (например маршрутизатор или коммутатора), а другое - в качестве SSH клиента (например наш компьютер). Все данные внутри канала шифруются, в том числе login и password. Вообще говоря, SSH может использоваться не только для удаленного управления, но и для безопасной передачи любых данных, будь-то звук, видео и т.д.
Следует отметить, что существует две версии протокола, это SSHv1 и SSHv2. Как можно догадаться, предпочтительнее использовать именно SSHv2, он более безопасен. Эта безопасность достигается за счет использования более криптостойких алгоритмов шифрования 3DES или AES. При этом следует учитывать, что некоторое оборудование по умолчанию не поддерживает данные алгоритмы, а значит возможно использовать только SSHv1. Эта проблема решается банальным обновлением прошивки. Как правило это прошивка в названии которой присутствуют символы “k9”.
Вернемся к описанному ранее примеру:
Предположим, что теперь администратор использует SSH для подключения к маршрутизатору R2. Он подключается с помощью Putty (либо SecureCRT, это не важно), вводит пароль, просматривает конфигурацию. Злоумышленник, как и в первом примере, видит весь трафик и использует Wireshark для анализа пакетов. Если посмотреть “дамп” трафика, то можно увидеть следующее:
Можно заметить, что используется протокол SSHv2 и все пакеты в зашифрованном виде - Encrypted. Если снова воспользоваться утилитой Analyze->Follow->TCP Stream, то мы увидим следующее:
В данном случае мы уже не можем увидеть ни пароль, ни конфигурацию, что делает нецелесообразным “прослушку” управляющего трафика.
Используйте защищенные протоколы удаленного подключения (например SSHv2).
Давайте теперь вкратце рассмотрим процесс настройки SSH подключений, тем более что это довольно простой процесс. Большую часть настроек мы уже выполнили в предыдущих этапах. На всякий случай напомню, что у вас уже должен быть задан пароль для enable и создан хотя бы один username. Затем настроена аутентификация либо с помощью aaa new-model (aaa authentication login default local) либо login local, для настройки SSH нет никакой разницы, т.к. в данном случае мы всего лишь выбираем протокол. Вот так выглядит процесс настройки:
R2(config)#ip domain-name netskills.ru /имя домена используется для генерации ключей
R2(config)#crypto key generate rsa modulus 1024 /генерируем пару ключей, где длина ключа - 1024
Длина ключа может варьироваться от 360 до 2048. После ввода команды маршрутизатор сообщит об успешной генерации ключей и о том, что был включен SSH:
The name for the keys will be: R1.netskills.ru
% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
*Mar 1 00:01:54.243: %SSH-5-ENABLED: SSH 1.99 has been enabled
Теперь укажем, что нужно использовать SSH версии 2:
R2(config)#ip ssh version 2
Воспользуемся дополнительными настройками:
R2(config)#ip ssh time-out 15 /Ограничиваем время ввода логина/пароля
R2(config)#ip ssh logging events /Логируем все попытки входа
И последнее, что нам нужно сделать, это указать SSH в качестве протокола удаленного доступа:
R2(config)#line vty 0 4
R2(config-line)#transport input ssh
Обратите внимание, что если в конфигурации устройства присутствуют две группы (vty 0 4 и vty 5 15), то команду transport input ssh нужно указать дважды.
По завершении настройки обязательно проверьте возможность подключения по Telnet, доступ должен быть запрещен.