Cisco Router
Материал из Xgu.ru
На этой странице описываются различные настройки маршрутизаторов Cisco.
[править] Базовые настройки маршрутизатора
[править] Полезные команды
Сбросить настройки на интерфейсе fa 0/1:
R1(config)# default interface fa 0/1
sh ip int des
traceroute 10.0.1.1
Прервать traceroute CTRL-SHIFT-6
auto secure ssh
show int description
ip local policy route-map <name-map>
show protocols
[править] Buffer Tuning
[править] Доступ к маршрутизатору
[править] 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
Ключами д