Настройка и проверка аутентификации протокола EIGRP
Вы можете защитить свой маршрутизатор от получения мошеннических обновлений маршрутизации, настроив аутентификацию между соседями.
Содержание
Аутентификация между маршрутизаторами
- Использование аутентификации позволяет предотвратить получение мошеннических EIGRP-обновлений. По умолчанию аутентификация EIGRP-пакетов выключена. При включенной аутентификации маршрутизатор проверяет источник полученных обновлений по ключам аутентификации или паролям, известных как передающему, так и принимающему маршрутизатору
- Простая аутентификация по паролю (plain-text authentication) поддерживается:
- IS-IS
- OSPF
- RIPv2
- Аутентификация MD5 (message digest) поддерживается:
- OSPF
- RIPv2
- BGP
- EIGRP
Как только в маршрутизаторе на интерфейсе была сконфигурирована аутентификации, любое сообщение протокола маршрутизации должно быть аутентифицировано для всех смежных маршрутизаторов, подключённых к сети этого интерфейса, должен быть сконфигурирован тот же тип аутентификации, что и у данного устройства; кроме того, пароль должен совпадать. По умолчанию никакая аутентификация для пакетов протокола маршрутизации не используется, что представляет серьёзную угрозу безопасности (например, злоумышленник анонсирует неверные маршруты, перенаправляет трафик в свою сеть для анализа и расшифровки).
Простая аутентификация vs MD5-аутентификация
- Simple password authentication:
- Router sends packet and key.
- Neighbor checks if received key matches its key.
- Is not secure.
- MD5 authentication:
- Configure a “key” (password) and key-id; router generates a message digest, or hash, of the key, key-id and message.
- Message digest is sent with packet; key is not sent.
- Is secure.
Маршрутизаторы поддерживают два типа аутентификации:
- Простая аутентификация по паролю (plain-text authentication) - поддерживается IS-IS, OSPF, RIPv2
- Аутентификация MD5 (message digest) - поддерживается OSPF, RIPv2, BGP и EIGRP.
Обе формы аутентификации работают одинаково, с одним исключением: md5 отправляет хэш-сумму, а не сам ключ аутентификации. Хэш-сумма генерируется с использованием ключа (и идентификатора ключа с некоторыми протоколами) и сообщения, но сам ключ не пересылается, что не даёт злоумышленнику узнать пароль.
При plain-text аутентификации получателю пакета передается ключ аутентификации. Ключ настраивается на маршрутизаторе, и оба соседа должны иметь одинаковый ключ.
При MD5 аутентификации ключ не посылается, в целях исключения его перехвата. Аутентификация MD5 является криптографической. Ключ и идентификатор (ID) ключа настраиваются на каждом маршрутизаторе. C помощью ключа, ID ключа и пакета генерируется хэш (hash), который присоединяется к отправляемому пакету.
MD5 является рекомендованным средством обеспечения безопасности. Описан в RFC 1321. Plain-text аутентификация не рекомендуется, т.к. является уязвимой для атак: любой, имеющий анализатор пакетов, может легко посмотреть пароль. Первичная роль plain-text аутентификации - предотвращение случайного изменения структуры маршрутизации в сети.
Очень важно заботиться о сохранности ключей и паролей, используемых при аутентификации соседей. Будьте бдительны выполняя и не игнорируйте риск передачи ключей через небезопасные протоколы управления (например, SNMP).
MD5 используется только для аутентификации! Сами пакеты протоколов маршрутизации не шифруются!
MD5-аутентификация
- EIGRP поддерживает MD5 аутентификацию
- Маршрутизатор генерирует и проверяет каждый EIGRP пакет
- Маршрутизатор генерирует и проверяет каждый пакет EIGRP. Маршрутизатор проверяет подлинность источника каждого пакета обновления маршрутизации, которые он получает.
- Настройте key (пароль) и key ID; каждый участвующий сосед должен иметь ту же конфигурацию ключа.
- Аутентификация EIGRP MD5:
- Маршрутизатор генерирует хэш ключа, key ID и сообщение.
- Для конфигурирования нескольких ключей или наборов ключей используется концепция цепочек ключей.
- Укажите key ID(номер, ключ и время жизни ключа)
- First valid activated key, in order of key numbers, is used.
По умолчанию никакая аутентификация в EIGRP не используется. Когда аутентификация соседей настроена на маршрутизаторе, он проверяет источник каждого пакета маршрутизации, который получает. MD5 создает хэш для каждого EIGRP-пакета, предотвращая тем самым получение сообщений от несанкционированных источников.
ID ключа (key ID) и ключ (key) аутентификации (иногда называемый паролем) должен быть настроен для MD5-аутентификации как на передающем, так и на принимающем маршрутизаторе.
ID ключа и ключ хранятся локально. Для управления ключами используются цепочки ключей (key chains). Каждый ID в цепочке может иметь собственный интервал времени, в течении которого он действует. Каждый маршрутизатор используя key и key ID генерирует хэш, который он прикрепляет к каждому пакету протокола маршрутизации, отправляемому соседу. Маршрутизатор, получивший такой пакет, вычисляет MD5-хэш исходя из полученной информации. Если хэш совпадает с полученным, пакет принимается, иначе дропается.
Каждый key имеет свой key ID, хранящийся локально. Комбинация key ID и интерфейса, связанного с сообщением, однозначно идентифицирует алгоритм аутентификации и используемый ключ аутентификации MD (and MD5 authentication key in use).
Улучшить безопасность аутентификации MD5 в EIGRP можно настроив смену ключей. EIGRP позволяет управлять ключами использця цепочки ключей. Каждому ключу в цепочке можно задать интервал для которого этот ключ будет использоваться (его время жизни). В течении жизни этого ключа, пакеты обновлений маршрутизации рассылаются с ним.
Внимание! Названия цепочек на маршрутизаторах совпадать не должны, а номера ключей - должны.
Для того, чтобы маршрутизаторы знали в какой момент использовать какой ключ, нужно задать на них правильное время.
Независимо от того, сколько ключей действует в настоящий момент, для передачи пакета используется лишь один: первый (по ID key) действующий (по времени жизни) ключ в цепочке. Другими словами, используется valid key с наименьшем key номером в цепочке ключей. При получении пакетов все текущие валидные ключи проверяются пока не найдётся совпадение. Поэтому для цепочки рекомендуется перекрывать интервалы действия ключей, во избежание появления периодов отсутствия действующих ключей. Если нет действующего ключа, аутентификация не состоится, и обновление маршрутизации будет отброшено. Для успешной аутентификации маршрутизаторы должны синхронно производить ротацию ключей в цепочке.
Планирование аутентификации EIGRP
- Прежде чем настраивать EIGRP аутентификацию, следующие параметры должны быть определены:
- номер AS EIGRP
- режим аутентификации (MD5)
- в соответствии с планом обеспечения безопасности сети, задать один или несколько ключей для аутентификации пакетов EIGRP
- Если используются несколько ключей, необходимо задать для них время жизни (lifetime)
- После определения параметров, должны быть сделаны следующие шаги:
- Шаги 1-2. настроить режим аутентификации для EIGRP
- Шаги 3-5. Настроить цепочку ключей.
- Шаги 6-7.(Опционально) настроить время жизни ключей.
- Шаг 8. Запустить аутентификацию пакетов EIGRP (Enable authentication) с использованием ключа(ключей) из ключевой цепочке.
Конфигурирование EIGRP MD5-аутентификации
Настраивается на всех интерфейсах между двумя соседами за несколько шагов:
Шаг 1. Войти в режим конфигурации интерфейса, для которого включаем аутентификацию.
R(config)#interface <интерфейс>
Шаг 2. Включить MD5-аутентификацию для EIGRP-пакетов.
R(config-if)#ip authentication mode eigrp <AS> md5
<AS> - номер автономной системы
Шаг 3. Войти в режим конфигурации цепочки ключей.
R(config)#key chain <имя_цепочки>
Шаг 4. Назначить ID ключа и войти в режим конфигурации ключа.
R(config-keychain)#key <key-ID>
key-ID - номер ключа аутентификации в цепочке ключей. Диапазон <0-2147483647>. Номер не должен быть последовательным.
Шаг 5. Назначить ключ (пароль) аутентификации для данного ID.
R(config-keychain-key)#key string <пароль>
Длина пароль от 1 до 80 символов в верхнем или нижнем регистре, первый символ не может быть цифрой. Ключ для данного key-ID должен совпадать на обоих маршрутизаторах.
Шаг 6. Необязательно. Назначить интервал времени, в течении которого данный ключ будет использоваться для входящих пакетов.
R(config-keychain-key)#accept-lifetime <нач.время> {infinite | <конечн.время> | duration <секунды>}
<нач.время> - start-time - время начала действия ключа чч:мм:сс месяц день год [hh:mm:ss month/date date/month year] (день - 1...31, месяц - первые 3 буквы месяца, год - 4 цифры). infinite - бесконечно с начала отсчёта. <конечн.время> - время окончания действия ключа (формат аналогично <нач.время>) от нач. до кон. <секунды> - продолжительность времени действия ключа в секундах. Диапазон значений <1-2147483646>
Шаг 7. Необязательно. Назначить интервал времени, в течении которого данный ключ будет использоваться для отправляемых пакетов.
R(config-keychain-key)#send-lifetime <нач.время> {infinite | <конечн.время> | duration <секунды>}
<нач.время> - start-time - время начала действия ключа чч:мм:сс месяц день год [hh:mm:ss month/date date/month year] (день - 1...31, месяц - первые 3 буквы месяца, год - 4 цифры). infinite - бесконечно с начала отсчёта. <конечн.время> - время окончания действия ключа (формат аналогично <нач.время>) от нач. до кон. <секунды> - продолжительность времени действия ключа в секундах. Диапазон значений <1-2147483646>
Шаг 8. Назначить цепочку ключей для аутентификации.
R(config-if)#ip authentication key-chain eigrp <AS> <цепочка>
<цепочка> - имя цепочки ключей
Внимание! Если команда service password-encryption не используется, то пароли хранятся как простой текст. Если активировать команду service password-encryption, то пароли будут храниться и отображаться зашифрованными (перед паролем будет указано encryption-type 7).
Пример настройки MD5-аутентификации
На рисунке изображена сеть, используемая для демонстрации процесса настройки, проверки и устранения неполадок MD5-аутентификации.
R1# show running-config ! <output omitted> ! key chain R1chain key 1 key-string FIRST-KEY accept-lifetime 04:00:00 Jan 1 2009 infinite send-lifetime 04:00:00 Jan 1 2009 04:00:00 Jan 31 2009 key 2 key-string SECOND-KEY accept-lifetime 04:00:00 Jan 25 2009 infinite send-lifetime 04:00:00 Jan 25 2009 infinite ! <output omitted> ! interface FastEthernet0/0 ip address 172.16.1.1 255.255.255.0 ! interface Serial0/0/0 bandwidth 64 ip address 192.168.1.101 255.255.255.224 ip authentication mode eigrp 100 md5 ip authentication key-chain eigrp 100 R1chain ! router eigrp 100 network 172.16.1.0 0.0.0.255 network 192.168.1.0 auto-summary
Конфиг показывает настройку маршрутизатора R1. MD5-аутентификация включается на интерфейсе Serial0/0/0 и использует цепочку ключей R1chain. В цепочке R1chain определены два ключа с идентификаторами 1 и 2. Ключ 1 имеет кодовую фразу first-key и действует на прием с 4:00 1 января 2009 бесконечно, на передачу с 4:00 1 января 2009 до 4:01 31 января 2009. Ключ 2 имеет такой же интервал времени для входящих пакетов, для исходящих действует с 25 января, и бесконечный интервал времени начиная с 4:00 25 января 2009 для исходящих.
Вспомните, что маршрутизатор использует первый по номеру ключа, валидный ключ для отправки пакетов. Таким образом маршрутизатор R1 будет использовать ключ 1 для отправки, с 1 до 31 января 2009, и ключ 2 для отправки с 4 a.m. 31 января 2009. R1 будет принимать ключ 1 для входящих пакетов с 1 января 2009 и также принимать ключ 2 для получаемых пакетов с 25 января 2009. Все другие пакеты MD5 будут дропаться.
R2# show running-config ! <output omitted> ! key chain R2chain key 1 key-string FIRST-KEY accept-lifetime 04:00:00 Jan 1 2009 infinite send-lifetime 04:00:00 Jan 1 2009 infinite key 2 key-string SECOND-KEY accept-lifetime 04:00:00 Jan 25 2009 infinite send-lifetime 04:00:00 Jan 25 2009 infinite ! <output omitted> ! interface FastEthernet0/0 ip address 172.17.2.2 255.255.255.0 ! interface Serial0/0/0 bandwidth 64 ip address 192.168.1.102 255.255.255.224 ip authentication mode eigrp 100 md5 ip authentication key-chain eigrp 100 R2chain ! router eigrp 100 network 172.17.2.0 0.0.0.255 network 192.168.1.0 auto-summary
R2 будет принимать EIGRP-пакеты с ключами 1 или 2. Для передачи EIGRP-пакетов будет использоваться ключ 1, как первый из цепочки действующий ключ.
Проверка корректности работы MD5-аутентификации в EIGRP
Проверка MD5-аутентификации
В примере показан вывод информации с маршрутизатора R1. Таблица соседей содержит запись 192.168.1.102, что указывает на установление соседских отношений. Таблица маршрутизации демонстрирует, что сеть назначения была обнаружена протоколом EIGRP через последовательный интерфейс. Результат команды ping указывает на то, что соединение работает.
R1#
*Apr 21 16:23:30.517: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.1.102 (Serial0/0/0) is up:new adjacency
R1#sh ip eigrp neighbors
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 192.168.1.102 Se0/0/0 11 00:00:17 27 2280 0 4
R1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
D 172.17.0.0/16 [90/40537600] via 192.168.1.102, 00:00:24, Serial0/0/0
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.16.0.0/16 is a summary, 00:25:44, Null0
C 172.16.1.0/24 is directly connected, FastEthernet0/0
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.96/27 is directly connected, Serial0/0/0
D 192.168.1.0/24 is a summary, 00:23:41, Null0
R1#ping 172.17.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.17.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/14/16 ms
Для просмотра цепочки ключей и ключей (паролей) используйте команду show key chain [name-of-chain]
R1# show key chain
Key-chain R1chain:
key 1 -- text “FIRST-KEY"
accept lifetime (04:00:00 Jan 1 2009) - (always valid) [valid now]
send lifetime (04:00:00 Jan 1 2009) - (04:00:00 Jan 31 2009)
key 2 -- text “SECOND-KEY"
accept lifetime (04:00:00 Jan 25 2009) - (always valid) [valid now]
send lifetime (04:00:00 Jan 25 2009) - (always valid) [valid now]
Команда show ip eigrp interface detail также может быть использована для отображения подробной информации об интерфейсах EIGRP определённого процесса EIGRP, включая информацию о режиме аутентификации и используемой цепочке ключей.
Поиск и устранение неисправностей MD5-аутентификации
Для этого примера пароль (key string) для ключа №2 маршрутизатора R1, используемого для отправки EIGRP пакетов, меняют на отличный от ожидаемого маршрутизатором R2.
R1(config)#key chain R1chain R1(config-keychain)#key 2 R1(config-keychain-key)#key-string wrongkey
Вывод debug eigrp packets на R2 показывает, что принят EIGRP-пакет с ключом 2 и аутентификация не состоялась (authentication mismatch). Этот пакет игнорируется и соседские отношения отменяются, что подтверждает вывод команды show ip eigrp neighbors.
R2# debug eigrp packets
EIGRP Packets debugging is on
(UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)
*Jan 21 16:50:18.749: EIGRP: pkt key id = 2, authentication mismatch
*Jan 21 16:50:18.749: EIGRP: Serial0/0/0: ignored packet from 192.168.1.101, opcode = 5 (invalid authentication)
*Jan 21 16:50:18.749: EIGRP: Dropping peer, invalid authentication
*Jan 21 16:50:18.749: EIGRP: Sending HELLO on Serial0/0/0
*Jan 21 16:50:18.749: AS 100, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0
*Jan 21 16:50:18.753: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.1.101
(Serial0/0/0) is down: Auth failure
R2#
R2# show ip eigrp neighbors
IP-EIGRP neighbors for process 100
R2#
Оба маршрутизатора пытаются переустановить соседство.
В примере показано, что R1 на какое-то время заносит в таблицу соседей R2.
R1#
*Apr 21 16:54:09:234: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.1.102 (Serial0/0/0) is down: retry
limit exceeded
*Apr 21 16:54:11:364: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.1.102 (Serial0/0/0) is up: new adjacency
R1# show ip eigrp neighbors
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 192.168.1.102 Se0/0/0 13 00:00:06 1 5000 2 0
С точки зрения R1 соседские отношения сохраняются, ведь он получает пакеты с ID ключа = 1, и аутентификация проходит успешно. Но R2 не подтверждает получение пакетов от R1, на что указывает Q Cnt = 2. Через некоторое время лимит повторной передачи пакетов исчерпан, и R1 отменяет соседские отношения с R2 (первое сообщение). Получая очередной hello-пакет, R1 вновь устанавливает соседство (второе сообщение).