quarta-feira, 28 de julho de 2010

Utilizando Autenticação EIGRP para 'Neighborship's Controlling'

Neste artigo falarei sobre autenticação EIGRP.

Do ponto de vista do design da rede, a autenticação EIGRP ajuda a prevenir contra ataques de Denial of Service (DoS), embora não ofereça qualquer segurança para seus dados caso eles sejam capturados, como por exemplo, em LANs, onde os up-dates são propagados pela rede multicast [224.0.0.10], fazendo com que qualquer atacante que consiga capturar os pacotes que estão no grupo multicast, possa ler seus dados sem maiores problemas. Mais apesar disto, a principal vantagem da autenticação EIGRP é que ela previne que atacantes criem relações de vizinhança com seus roteadores EIGRP como se fossem legítimos, e ainda propagem informações inconsistentes de redes.

Para fazer a autenticação EIGRP, os roteadores precisam usar a mesma "chave", mais conhecida como Preshared Key (PSK), criando assim uma hash MD5 para cada mensagem EIGRP baseada na nossa Preshared Key (PSK).

----> Nota: Um arquivo MD5 é um algoritmo de hash unidirecional de 128 bits, que consiste em transformar uma seqüência de texto que no caso serão nossas chaves, em uma seqüência de números ou letras que não podem mais serem retornadas a palavra ou chave inicial que as deu origem. Utilizando esta seqüência para identificar informações ou arquivos.

Quando um roteador já configurado com autenticação EIGRP recebe uma mensagem de um outro roteador também configurado com autenticação, ele imediatamente compara a informação chegada com os seus dados de autenticação. Se o hash MD5 não bater com suas configurações, então ele simplesmente começará a descartar os pacotes vindo deste roteador, fazendo assim com que uma relação de vizinhança não ocorra, pois ele irá ignorar todas as mensagem 'EIGRP Hello', fundamentais na criação de adjacências.

O processo de autenticação podemos dividir em basicamente três etapas que se seguem:

----> 1° Etapa: Criar uma chave de autenticação (key chain), e dar um nome em modo de configuração global (key chain nome). Este nome não tem que combinar com o nome que será dado no outro roteador, pois ele não é avaliado no processo de autenticação, ou seja, é só para uso interno.

Imediatamente após a criação da key chain, entra-se em modo de configuração da chave key chain. Estando agora em modo de configuração key chain, você deverá criar em seguida as suas key numbers, que simplesmente é a criação de números pra suas respectivas chaves (caso você queira configurar mais de uma chave, onde do contrário você criaria apenas uma única key number). Lembrando também que a key number não precisa coincidir com a que será configurada no outro roteador, pois ela também não é considerada na autenticação, sendo assim como a key chain, um valor apenas para uso interno.

Depois de entrar em modo de configuração key chain e criar a sua key number, está na hora de dentro de key number criar a sua key-string NOME. Aqui é onde você de fato cria a sua senha, que em seguida será transformada em uma seqüência hash MD5, que será usada como chave para comparar com a do outro roteador. Reforçando, apenas na criação da nossa key-string é que os valores têm que ser exatamente iguais aos valores configurados nos outros roteadores que queremos formar adjacência.

Obs.: Na criação de nossas chaves podemos definir o seu tempo de validade, dizendo a partir de quando determinada chave começa a valer, e a partir de quando ela expira. Para isso usamos os comandos (accept-lifetime e/ou send-lifetime) dentro do modo de configuração key-number, assim como fazemos para criar a key-string.


----> 2ª Etapa: Neste ponto temos que identificar por qual interface o seu roteador esta se comunicando com o outro. Por qual porta ele está enviando suas atualizações e suas mensagens 'EIGRP Hello'. Descoberto a interface ( vamos supor que seja a Serial 0/0 ), você tem que habilitar a autenticação EIGRP MD5 dentro da sua interface usando o comando [ ip authentication mode eigrp asn md5 ].

----> 3ª Etapa: Aqui para finalizar, você tem que apenas referenciar a sua key chain na interface pelo comando [ ip authentication key-chain eigrp asn nome_da_sua_keychain ].

Na prática é mais simples do que parece. Vamos logo ao exemplo:

------------------------------------------------------------
!
R1(config)#key chain chave_segura

R1(config-keychain)#key 1

R1(config-keychain-key)#key-string fortaleza

R1(config-keychain-key)#key 2

R1(config-keychain-key)#key-string ceara
!
!
!
R1(config)#int serial0/0

R1(config-if)#ip authentication mode eigrp 100 md5

R1(config-if)#ip authentication key-chain eigrp 100 chave_segura
!
------------------------------------------------------------

Aqui configuramos nossas duas chaves (fortaleza, ceara) como chaves 1 e 2 respectivamente, tudo dentro de nossa key chain, onde a ela demos o nome de chave_segura. Depois entramos na interface que o nosso roteador usa para se conectar e para propagar as atualizações EIGRP. Em seguida configuramos o algoritmo MD5 e logo depois chamamos nossa key chain pelo nome que demos. Em ambos os casos, sempre referenciamos o protocolo eigrp e sua 'asn' que no exemplo foi '100'. Em seguida é só fazer a mesma configuração no outro roteador que queremos formar adjacência, e pronto, nossos roteadores agora estão conectados por seus protocolos, e excluíram todos os outros que não possuem a mesma chave.

Agora, caso alguma coisa dê errado na nossa configuração, ou simplesmente queremos verificar o que foi feito, temos dois comando que nos auxiliarão na resolução deste problema. Os comandos são os seguintes:

----> (1): show key chain

----> (2): debug eigrp packet

No primeiro (1) comando, ele nos mostra quais foram as chaves configuradas, e quais deles estão valendo no momento. Vamos ver o exemplo:

------------------------------------------------------------

R1#show key chain

Key-chain chave_segura:

key 1 -- text "fortaleza"

accept lifetime (always valid) - (always valid) [valid now]

send lifetime (always valid) - (always valid) [valid now]

key 2 -- text "ceara"

accept lifetime (always valid) - (always valid) [valid now]

send lifetime (always valid) - (always valid) [valid now]

------------------------------------------------------------

Neste caso podemos ver claramente o nome das chaves que foram configuradas, e vemos também a nossa opção por não configurar o prazo de validade das chaves, embora configurar este parâmetro dê uma boa incrementada na segurança.

Agora no segundo (2) comando, em caso de falha na formação de adjacência, podemos obter informações valiosas sobre a causa do problema. Vejamos:


------------------------------------------------------------

R1#debug eigrp packet

EIGRP Packets debugging is on

(UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)

R1#

Apr 1 08:09:01.951: EIGRP: Sending HELLO on Serial0/0

Apr 1 08:09:01.951: AS 100, Flags 0x0,Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0

Apr 1 08:09:01.967: EIGRP: pkt key id = 2, authentication mismatch

Apr 1 08:09:01.967: EIGRP: Serial0/0: ignored packet from 172.16.1.2,

opcode = 5 (invalid authentication)

Apr 1 08:09:02.287: EIGRP: Serial0/0: ignored packet from 172.16.1.4,

opcode = 5 (missing authentication)

Apr 1 08:09:03.187: EIGRP: Serial0/0: ignored packet from 172.16.1.3, opcode

= 5 (missing authentication)

------------------------------------------------------------

Aqui neste exemplo podemos ver destacados diferentes problemas. Vemos claramente pela primeira mensagem que diz "authentication mismatch", onde aqui ela já nos informa que algo não esta certo, então devemos acompanhar as outras mensagens que se seguem para tentarmos saber qual foi a origem do problema.

Vamos conhecer os erros:

Vindo de R2 a mensagem "invalid authentication", indica que o hash MD5 contido na mensagem esta inválido.

Com a mensagem "missing authentication", indica que a mensagem não inclui um hash MD5.

Bom, o nosso assunto sobre autenticação EIGRP se resume a isso. É importante sempre ter em mente qua a nossa rede pode ser um alvo em potêncial, e com base nisto, devemos projeta-la sempre visando ao maximo a segurança de seus dados, que implica também na segurança das pessoas ou empresas que fazem o uso desta rede. Então cabem aos engenheiros de redes penssar em todas as possíveis vulnerabilidades de sua rede, e previamente sana-las antes que os outros as descubram.

Dúvidas postem...

Abraço.




Nenhum comentário:

Postar um comentário