Доступ к маршрутизатору Cisco
Материал из Xgu.ru
На этой странице описывается настройка доступа к коммутаторам и маршрутизаторам Cisco.
[править] Telnet
Настройка доступа telnet без пароля:
dyn1(config)# line vty 0 15 dyn1(config-line)# no login
При подключении сразу попасть в привилегированный режим:
dyn1(config)# line vty 0 15 dyn1(config-line)# privilege level 15
[править] ACL
Для ограничения доступа к маршрутизатору по протоколу telnet можно использовать ACL и применить их к vty.
Например, настроен ACL, который разрешает подключаться к маршрутизатору по telnet только с адреса 4.4.4.4:
dyn5(config)# access-list 10 permit 4.4.4.4 dyn5(config)# line vty 0 4 dyn5(config-line)# access-class 10 in
Подключившись по telnet, например, с адреса 4.4.4.4 к маршрутизатору dyn5, можно затем из этой сессии инициировать telnet сессию к другому маршрутизатору. Для того чтобы контролировать куда можно подключаться изнутри сессии telnet необходимо настроить ACL в исходящем направлении. Например, подключившись к маршрутизатору dyn5 по telnet, инициировать исходящую сессию telnet можно будет только на адрес 1.1.1.1:
dyn5(config)# access-list 11 permit 1.1.1.1 dyn5(config)# line vty 0 4 dyn5(config-line)# access-class 11 out
Если выполняется попытка подключиться к неразрешенному адресу, то появляется такое сообщение:
dyn5# telnet 192.168.1.1 Trying 192.168.1.1 ... % Connections to that host not permitted from this terminal
[править] Дополнительные параметры при подключении telnet
Обычно при подключении telnet маршрутизатор в качестве адреса отправителя выбирает адрес интерфейса, который ближе всего к получателю. Однако это поведение можно изменить, как для конкретной сессии, так и в принципе для всех подключений telnet.
Указание интерфейса для текущей сессии telnet:
dyn1# telnet 192.168.2.5 /source-interface lo0
Указание интерфейса для всех сессий telnet:
dyn1(config)# ip telnet source-interface lo0
[править] Разрыв соединения
Настройка таймаута после которого, независимо от активности, пользователь будет отключен (в минутах):
dyn1(config)# line vty 0 15 dyn1(config-line)# absolute-timeout 10
Отображение предупреждающего сообщения за 30 секунд до того как сессия будет разорвана из-за истечения интервала absolute-timeout:
dyn1(config)# line vty 0 15 dyn1(config-line)# logout-warning 30
Пример сообщения:
dyn3# telnet 192.168.2.1 Trying 192.168.2.1 ... Open User Access Verification Username: user1 Password: dyn1# * * * Line timeout expired * * [Connection to 192.168.2.1 closed by foreign host]
[править] Предотвращение залипания соединений
Для очистки зависших Telnet сессий используется механизм TCP-keepalives
Зачем это нужно? Порой возникают залипшие соединения сессий telnet. И при последующих попытках соединений - оно не устанавливается, при этом выдается сообщение "Connection refused by remote host"
Для предотвращения данной ситуации в конфигурацию роутера необходимо внести изменения:
Router# conf t Router(config)# service tcp-keepalives-in Router(config)# service tcp-keepalives-out
[править] Настройка нестандартных портов для telnet и привязка к конкретной vty
Указание нестандартного порта для telnet:
router(config)# line vty 3 router(config-line)# rotary 3
После указания rotary 3 для того чтобы попасть по telnet на vty 3, надо заходить на порт 3000+3.
Пример конфигурации маршрутизатора:
hostname dyn5 ! username cisco password 0 cisco ! interface FastEthernet0/0 ip address 192.168.5.5 255.255.255.0 ! ! line vty 0 2 login local line vty 3 login local rotary 3 !
Подключение с соседнего маршрутизатора (к порту 3000+rotary):
dyn3# telnet 192.168.5.5 3003 Trying 192.168.5.5, 3003 ... Open User Access Verification Username: cisco Password: dyn5>
Пользователь подключился к vty 3:
dyn5#sh users Line User Host(s) Idle Location * 0 con 0 idle 00:00:00 5 vty 3 cisco idle 00:01:08 192.168.5.3 Interface User Mode Idle Peer Address
[править] SSH
Имя домена (необходимо для генерации ключей):
ip domain-name xgu.ru
Создание пары ключей:
crypto key generate rsa modulus 1024
Включение SSH версии 2:
ip ssh version 2
Создание пользователя в локальной базе:
username admin secret cisco123
Настройка VTY:
line vty 0 4 login local transport input ssh
[править] Настройка нестандартных портов для SSH и привязка к конкретной vty
Изменение порта SSH для определенной линии vty:
router(config)# ip ssh port 2009 rotary 9
Настройка соответствия vty и rotary:
router(config)# line vty 4 router(config-line)# rotary 9
Пример конфигурации маршрутизатора:
hostname dyn5 ! ip domain name unix.nt ip ssh port 2009 rotary 9 ip ssh version 2 ! username cisco password 0 cisco ! interface FastEthernet0/0 ip address 192.168.5.5 255.255.255.0 ! ! line vty 0 3 login local line vty 4 login local rotary 9 !
Подключение с соседнего маршрутизатора (к порту 2009):
dyn3# ssh -l cisco -p 2009 192.168.5.5 Password: dyn5>
Пользователь подключился к vty 4:
dyn5#sh users Line User Host(s) Idle Location * 0 con 0 idle 00:00:00 6 vty 4 cisco idle 00:00:01 192.168.5.3 Interface User Mode Idle Peer Address
Ограничение числа сессий ssh ip ssh maxstartups {число} Пример: ограничим 2 сессиями
Router(config)#ip ssh maxstartups 2
Ограничение времени timeoutá (по-умолчанию 300 секунд)ip ssh time-out {секнуд}
SSH сервер прерывает соединение, если не передаются никакие данные в течение этого времени ожидания.
Пример:
Router(config)#ip ssh time-out 60
Указание интерфейса для всех сессий ssh
Router(config)#ip ssh source-interface FastEthernet0/1
Включение журналирования событий SSH ip ssh logging events
Router(conifig)#ip ssh logging events
Указание версии использования протокола ip ssh version версия Пример:
Router(config)#ip ssh version 2
Указание, какой ключ должен использоваться при соединении:
sm-c2821(config)#ip ssh rsa keypair-name xgu.ru
[править] Работа с сессиями
[править] Исходящие сессии Telnet и SSH
Инициировать сессию telnet:
router# telnet <IP-адрес>
или
router# <IP-адрес>
Пример:
router# telnet 192.168.1.1
router# 192.168.10.1
Исходящие сессии SSH:
router# ssh -l <user> <IP-адрес>
[править] Приостановка и мониторинг исходящих сессий
Приостановить сессию: Ctrl+Shift+6 и потом x.
Показать исходящие сессии:
router# show sessions
или
router# where
Пример:
router# where Conn Host Address Byte Idle Conn Name 1 192.168.1.1 192.168.1.1 0 0 192.168.1.1 * 2 192.168.10.1 192.168.10.1 0 0 192.168.10.1 router# show sessions Conn Host Address Byte Idle Conn Name 1 192.168.1.1 192.168.1.1 0 0 192.168.1.1 * 2 192.168.10.1 192.168.10.1 0 0 192.168.10.1
Вернуться в приостановленную сессию:
router# resume <номер>
или
router#<номер>
Пример:
router# resume 2 [Resuming connection 2 to 192.168.10.1 ... ] router#1 [Resuming connection 1 to 192.168.1.1 ... ]
Завершить исходящую сессию:
router# disconnect <номер>
Если с маршрутизатора были открыты сессии, а затем приостановлены, то нажатие 'Enter' приводит к тому, что открывается последняя сессия. Для того чтобы сделать перевод строки, без команды и без восстановления последней сессии, необходимо использовать комбинацию ctrl+l.
Или нажать номер несуществующей сессии. После этого 'Enter' отрабатывает как обычно:
router#5 % 5 is not an open connection router# router#
[править] Входящие сессии
Показать подключения к локальному маршрутизатору (консоль, telnet, ssh):
router# show users
или
router# who
Пример:
router# show users Line User Host(s) Idle Location * 0 con 0 10.0.10.1 00:00:37 514 vty 0 idle 00:01:20 192.168.10.10 Interface User Mode Idle Peer Address router# who Line User Host(s) Idle Location * 0 con 0 10.0.10.1 00:00:46 514 vty 0 idle 00:01:29 192.168.10.10 Interface User Mode Idle Peer Address
Показать сессии ssh:
router# show ssh
[править] Автоматическое выполнение команды
Команда autocommand используется для автоматического выполнения определенной команды после того как пользователь подключился к определенной line:
line vty 6 login local rotary 6 autocommand telnet 10.1.1.1 2009
[править] HTTP
Включение HTTP-сервера:
dyn1(config)# ip http server
[править] Ограничение количества соединений
Настройка максимального количества соединений (по умолчанию 5, диапазон от 1 до 16):
dyn1(config)# ip http max-connections 2
[править] Изменение стандартного порта
Изменение стандартного порта HTTP:
dyn1(config)# ip http port 8800
[править] Время жизни соединения
Настройка таймеров:
dyn1(config)# ip http timeout-policy idle 180 life 300 requests 50
[править] Ограничение доступа
С помощью ACL можно указать каким хостам разрешен доступ по HTTP на маршрутизатор:
dyn1(config)# access-list 3 permit 192.168.1.10 dyn1(config)# access-list 3 permit 192.168.2.10 dyn1(config)# ip http access-class 3
[править] Аутентификация
Настройка аутентификации по локальной базе пользователей:
dyn1(config)# ip http authentication local
Пример создания пользователей:
dyn1(config)# username user1 password pass dyn1(config)# username user2 password pass
[править] Локальная аутентификация (локальная база пользователей)
Управление правами доступа на основании атрибутов, присвоенных отдельному пользователю.
Когда VPN-пользователи проходят аутентификацию на локальном сервере IOS, то может понадобиться запретить им доступ к CLI.
Настройка AAA (если настроен VPN, то тут могут быть дополнительные настройки):
aaa new-model aaa authentication login default local aaa authorization exec default local
Создание списка атрибутов для запрещения доступа к CLI:
aaa attribute list CLI attribute type service-type noopt service shell mandatory
Назначение списка пользователю:
username xguru secret xguru username xguru aaa attribute list CLI
Если пользователь пытается зайти в CLI маршрутизатора, то выдается ошибка:
dyn2#ssh -l xguru 192.168.103.1 Password: % Authorization failed. [Connection to 192.168.103.1 closed by foreign host]
[править] Разграничение доступа пользователям
[править] Уровни привилегий по умолчанию
Команды уровня 0:
dyn1>? Exec commands: disable Turn off privileged commands enable Turn on privileged commands exit Exit from the EXEC help Description of the interactive help system logout Exit from the EXEC
Некоторые команды уровня 1:
dyn1>? Exec commands: clear Reset functions disable Turn off privileged commands disconnect Disconnect an existing network connection enable Turn on privileged commands exit Exit from the EXEC login Log in as a particular user ping Send echo messages resume Resume an active network connection show Show running system information ssh Open a secure shell client connection telnet Open a telnet connection terminal Set terminal line parameters traceroute Trace route to destination where List active connections
[править] Уровни привилегий
Создание пользователя и задание пароля:
dyn1(config)# username user2 password cisco2
Назначение пользователю уровня привилегий:
dyn1(config)# username user2 privilege 2
Задание соответствия между командами и уровнем привилегий:
dyn1(config)#privilege exec level 2 configure dyn1(config)#privilege exec level 2 configure t dyn1(config)#privilege configure level 2 interface dyn1(config)#privilege interface level 2 shutdown dyn1(config)#privilege interface level 2 ip address
Для просмотра уровня своих привилегий используется команда show privilege
Пример:
c1750-sm3>show privilege Current privilege level is 1 c1750-sm3>en Password: c1750-sm3#show privilege Current privilege level is 15
[править] CLI view
Включить AAA:
router(config)# aaa new-model
Включить root view:
router# enable view
Создать view:
router(config)# parser view <view-name>
Настроить пароль для view:
router(config-view)# secret <password>
Добавить команды доступные в view:
router(config-view)# commands exec <include|include-exclusive|exclude> [all] [interface-id|command]
[править] Всякое
[править] Пароли
Задание минимальной длины пароля:
dyn1(config)# security passwords min-length 6
Хранение паролей в виде хеша:
dyn1(config)# service password-encryption
Отключение функции восстановления пароля:
dyn1(config)# no service password-recovery
Если необходимо ввести пароль в котором есть знак ?, то перед знаком необходимо нажать Esc + Q (при подключении пароль надо вводить просто со знаком ?). Например, пароль Cisco??pass надо вводить так: CiscoEsc + Q?Esc + Q?pass
Задание количества разрешенных неудачных попыток логина в минуту. При превышении будет сгенерировано лог-сообщение:
dyn1(config)#security authentication failure rate 3 log
Для задания пароля входа в privileg EXEC level (привилегированный режим) используется команда enable password|secret {пароль}
Пример:
Router(config)#enable password cisco_en
Следует заметить, что при использовании enable secret будет использоваться кодирования пароля с помощью алгоритма MD5, что повышает безопасность системы в целом
[править] Гарантия выполнения низкоприоритетных задач
При возникновении ситуации высокой загрузки процессора, низкоприоритетные задачи могут не дождаться своей очереди выполнения. По-умолчанию Cisco выделяет 5% процессорного времени для выполнения такого рода задач. Для изменения используется команда scheduler allocate .
Пример:
Router(config)# scheduler allocate 4000 200
Что бы маршрутизатор более живо реагировал на команды в консоли при большой нагрузке. 4000 микросекунд - это время переключения между процессами. 200 микросекунд, это максимальное время, которое выделяет маршрутизатор на выполнение низкоприоритетных задач
[править] Приглашение командной строки
Отключить приглашение командной строки в глобальном конфигурационном режиме:
dyn1(config)# no service prompt config
После выполнения команды, приглашение dyn1(config)# не отображается. При возвращении в режим enable приглашение появляется.
Настройка приглашения режима enable:
dyn1(config)# prompt DYN1-enable-mode
[править] Баннеры
Баннер - это своеобразная вывеска, которая предназначена для сообщения определенной информации, любому, кто пытается получить доступ к маршрутизатору. За рубежом, обычно, сообщается информация о том, кому принадлежит данное коммуникационное оборудование и что может последовать, если в дальнейшем последует несанкционированный доступ либо попытка доступа. Может быть и любая другая информация. К примеру фирма Cisco на новых не сконфигурированных маршрутизаторах сообщает об этом факте. Существует 3 вида баннеров motd, exec, incoming
Создание баннера message-of-the-day (MOTD):
dyn1(config)# banner motd #Hello! I'm $(hostname). You are connected on line $(line) on domain $(domain)#
dyn3# telnet 192.168.1.1 Trying 192.168.1.1 ... Open Hello! I'm dyn1. You are connected on line 2 on domain xgu.ru
Для создания баннера необходимо указать ключевое слово banner тип РазделительТекст баннера Разделитель. Разделитель НЕ может содержаться в тексте баннера
Существует возможность динамически добавлять в тело баннера имя хоста или домена, используя регулярные выражения $(hostname) и $(domain).
Пример:
Router#conf t Router(config)#hostname Xgu.ru Xgu.ru(config)#ip domain name xgu.ru Xgu.ru(config)#banner motd C Enter TEXT message. End with the character 'C'. Welcom to $(hostname) contact me at admin@$(domain) for any issues C Xgu.ru(config)# Press RETURN to get started. Welcom to Xgu.ru contact me at admin@$xgu.ru for any issues Xgu.ru>
[править] Создание меню
Название меню:
dyn1(config)# menu user3 title # Menu for user3 #
Текст приглашения по выбору пункта меню:
dyn1(config)# menu user3 prompt #Choose an option and press ENTER: #
Настройка очистки экрана перед выводом меню:
dyn1(config)# menu user3 clear-screen
Ключами для выбора определенного пункта меню могут быть буквы, цифры или строки. Если используются строки, то должен быть настроен режим line-mode:
dyn1(config)# menu user3 line-mode
Создание пунктов меню:
dyn1(config)# menu user3 text 1 Display the routing table dyn1(config)# menu user3 text 2 Configuration of fa0/0 dyn1(config)# menu user3 text 3 Ping dyn3 dyn1(config)# menu user3 text 4 Menu exit
Настройка команд, которые будут выполняться при вызове пункта меню:
dyn1(config)# menu user3 command 1 sh ip route dyn1(config)# menu user3 command 2 sh run int fa0/0 dyn1(config)# menu user3 command 3 ping 192.168.1.3
Для того чтобы пользователь мог выйти из меню, при создании меню необходимо настроить один пункт меню с командой menu-exit:
dyn1(config)# menu user3 command 4 menu-exit
Для пунктов меню, в которых предполагается вывод результата выполнения команды, необходимо задать параметр pause:
dyn1(config)# menu user3 options 1 pause dyn1(config)# menu user3 options 2 pause dyn1(config)# menu user3 options 3 pause
Можно указать какой пункт будет выполняться по умолчанию в случае, если пользователь не выбрал пункт меню и нажал Enter:
dyn1(config)# menu user3 default 4
Отображение строки с информацией о статусе подключения:
Server "dyn1" Line 0 Terminal-type (unknown) Menu for user3 1 Display the routing table 2 Configuration of fa0/0 3 Ping dyn3 4 Menu exit Choose an option and press ENTER:
Настройка автоматического вызова меню при подключении пользователя:
dyn1(config)# username user3 autocommand menu user3
[править] Пример меню и соответствующая конфигурация
Menu for user3 1 Display the routing table 2 Configuration of fa0/0 3 Ping dyn3 4 Menu exit Choose an option and press ENTER:
Соответствующая конфигурация:
menu user3 title ^C Menu for user3 ^C menu user3 prompt ^C Choose an option and press ENTER: ^C menu user3 text 1 Display the routing table menu user3 command 1 sh ip route menu user3 options 1 pause menu user3 text 2 Configuration of fa0/0 menu user3 command 2 sh run int fa0/0 menu user3 options 2 pause menu user3 text 3 Ping dyn3 menu user3 command 3 ping 192.168.1.3 menu user3 options 3 pause menu user3 text 4 Menu exit menu user3 command 4 menu-exit menu user3 clear-screen menu user3 status-line menu user3 default 4 menu user3 line-mode
[править] Создание соответствий IP-адрес -- имя хоста
Создание соответствия:
dyn1(config)# ip host Dyn4 192.168.1.100
Просмотреть список существующих соответствий:
dyn1# sh hosts Default domain is not set Name/address lookup uses static mappings Codes: UN - unknown, EX - expired, OK - OK, ?? - revalidate temp - temporary, perm - permanent NA - Not Applicable None - Not defined Host Port Flags Age Type Address(es) Dyn4 None (perm, OK) 0 IP 192.168.1.100 dyn3 None (perm, OK) 0 IP 192.168.2.3
[править] Сообщение о недоступности хоста
Настройка сообщения о недоступности хоста при подключении к нему по Telnet:
dyn1(config)# ip host Dyn4 192.168.1.100 dyn1(config)# busy-message Dyn4 #Host is down, try again later#
[править] Спрятать IP-адрес хоста к которому выполняется подключение
Обычно, при подключении к хосту, который в момент подключения доступен, в консоли отображается IP-адрес хоста:
dyn1# telnet dyn3 Trying dyn3 (192.168.2.3)... Open
Спрятать IP-адрес хоста к которому выполняется подключение:
dyn1(config)# service hide-telnet-addresses
После этого, при выполнении подключения адрес не отображается:
dyn1# telnet dyn3 Trying dyn3 address #1 ... Open
[править] Login enhancement
[править] Настройка блокировки
Настройка периода блокировки хоста, с указанием количества попыток подключения к маршрутизатору в течение указанного периода времени:
router(config)# login block-for <sec> attempts <attempts> within <sec>
Пример. Хост будет заблокирован на 60 секунд, если в течение 10 секунд будут 3 неудачные попытки логина:
router(config)# login block-for 60 attempts 3 within 10
Проверка настроек:
sh login A default login delay of 1 seconds is applied. No Quiet-Mode access list has been configured. Router enabled to watch for login Attacks. If more than 3 login failures occur in 10 seconds or less, logins will be disabled for 60 seconds. Router presently in Normal-Mode. Current Watch Window Time remaining: 9 seconds. Login failures for current window: 0. Total login failures: 0.
После нескольких неудачных попыток подключения:
* %SEC_LOGIN-1-QUIET_MODE_ON: Still timeleft for watching failures is 5 secs, [user: admin] [Source: 192.0.1.2] [localport: 22] [Reason: Login Authentication Failed] [ACL: sl_def_acl] at 13:43:18 UTC Sat May 7 2011 * %SEC-6-IPACCESSLOGP: list sl_def_acl denied tcp 192.0.1.2(39151) -> 0.0.0.0(22), 1 packet router# sh login A default login delay of 1 seconds is applied. No Quiet-Mode access list has been configured. Router enabled to watch for login Attacks. If more than 3 login failures occur in 10 seconds or less, logins will be disabled for 10 seconds. Router presently in Quiet-Mode. Will remain in Quiet-Mode for 40 seconds. Denying logins from all sources. * %SEC_LOGIN-5-QUIET_MODE_OFF: Quiet Mode is OFF, because block period timed out at 13:44:18 UTC Sat May 7 2011
[править] Настройка исключений из правила блокировки
Правило исключения:
router(config)# login quiet-mode access-class <acl>
Пример. Исключение хоста 192.0.1.2:
router(config)# access-list 10 permit 192.0.1.2 router(config)# login quiet-mode access-class 10
Проверка настроек:
router# sh login A default login delay of 1 seconds is applied. Quiet-Mode access list 10 is applied. Router enabled to watch for login Attacks. If more than 3 login failures occur in 10 seconds or less, logins will be disabled for 60 seconds. Router presently in Normal-Mode. Current Watch Window Time remaining: 3 seconds. Login failures for current window: 0. Total login failures: 3.
[править] Настройка логирования попыток подключения и задержки между подключениями
Задержка между попытками подключения (по умолчанию 1 секунда):
router(config)# login delay <sec>
Пример. Настройка задержки 5 секунд:
router(config)# login delay 5
Проверка настроек:
router# sh login A login delay of 5 seconds is applied. Quiet-Mode access list 10 is applied. Router enabled to watch for login Attacks. If more than 3 login failures occur in 10 seconds or less, logins will be disabled for 60 seconds. Router presently in Normal-Mode. Current Watch Window Time remaining: 4 seconds. Login failures for current window: 1. Total login failures: 13.
Логирование попыток подключения:
router(config)# login on-failure log [every <login-attempts>] router(config)# login on-success log [every <login-attempts>]
Пример настройки:
router(config)# login on-failure log every 5 router(config)# login on-success log every 3
router# sh login A login delay of 5 seconds is applied. Quiet-Mode access list 10 is applied. Every 3 successful login is logged. Every 5 failed login is logged. Router enabled to watch for login Attacks. If more than 3 login failures occur in 10 seconds or less, logins will be disabled for 60 seconds. Router presently in Normal-Mode. Current Watch Window Time remaining: 3 seconds. Login failures for current window: 0. Total login failures: 24.
[править] Пример настройки
Конфигурация:
login block-for 10 attempts 4 within 10 login delay 5 login quiet-mode access-class 100 login on-failure log login on-success log
router# sh login A login delay of 5 seconds is applied. Quiet-Mode access list 100 is applied. All successful login is logged. All failed login is logged. Router enabled to watch for login Attacks. If more than 4 login failures occur in 10 seconds or less, logins will be disabled for 10 seconds. Router presently in Normal-Mode. Current Watch Window Time remaining: 4 seconds. Login failures for current window: 0. Total login failures: 0.