sábado, 23 de janeiro de 2010

MPLS

O protocolo MPLS encaminha os pacotes baseados em Labels ao invez de usar a tabela de roteamento. Ele trabalha junto com o CEF, o CEF coleta informações da RIB (Routing information Base) e cria uma tabela chamada FIB (Forward IB) então o MPLS com base na FIB cria uma base chamada LFIB (Label FIB) com base nessa tabela o MPLS efetua o processo de Push and Pop dos labels no MPLS header (4 Bytes).

LDP (Label Distribution Protocol)

Para o controle das Labels é utilizado o LDP, toda vez que o roteador aprende uma nova rede e faz a busca na RIB e cria a LFIB ele informa aos roteadores adjacentes qual label ele irá usar para aquela rota e assim sucessivamente:
















































MPLS TTL propagation


Quando efetuamos um tracert o MPLS usa o campo TTL do header MPLS para fazer esse controle.
Do mesmo modo podemos desabilitar o decremento do TTL de pacotes vindos do CPE (Forwarded) de modo que o cliente veja toda a rede MPLS apenas como um salto. Ou desabilitar o TTL de pacotes originados de um PE (local) escondendo o endereço dos roteadores da nuvem (Não recomendado para troubleshoting), com o comando no mpls ip ttl-propagation [local|forwarded]

sexta-feira, 22 de janeiro de 2010

Frame Relay


Antes das VPNs e MPLS havia o Frame Relay. Ele utiliza conexões virtuais (VC) para estabelecer uma rede dentro de uma nuvem atravéz de DLCI (Data link connection identifiers) que são cabeçalhos, geralmente de 10 bits.
Dentro da interface frame relay é trocado mensagens atravez de LMI (Link management Interface) que troca informações sobre o status do VC e informações sobre o DLCI geralmente a cada 10 segundos e a cada 6 mensagens ele troca uma full status message que contem informações mais detalhadas sobre o VC. Para desabilitar o LMI basta desativar o Keepalive da interface frame relay.







Configuração:

quarta-feira, 20 de janeiro de 2010

Security - Parte III (Layer 3)

Recomendações:
1 - Considerar o uso de SSH ao Telnet comum
2 - Habilitar segurança de SNMP (v3)
3 - Desabilita serviços desnecessários
4 - Habilitar syslog
5 - Habilitar autenticação dos IGP

Smurf attacks, Directed Broadcasts e RPF (Reverse Path Forwarding) check




Por default(IOS > 12.0) as interfaces usam o no ip direct-broadcast para prevenir esse tipo de ataque.











Além disso o RPF pode ser usado nas interfaces com o comando
ip verify unicast source reachable-via
{rx|any} [allow-default] [allow-self-ping]
rx - strict, verifica se a rota para a rede de origem aponta pra interface de onde o pacote veio.
any - Loose, verifica se existe qualquer rota para a rede.
allow-default - considera inclui a rota default
allow-self-ping - verifica se o host está acesivel por ping (não recomendado)

O livro fala muito de access-lists (Li por cima e acabei pulando essa parte)

Além disso ele recomenda a leitura sobre :
CBAC: Context-Based Access Control aqui ( http://www.cisco.com/en/US/docs/ios/12_0/security/configuration/guide/sccbac.html )

DMVPN: Dunamic Multipont VPN aqui ( http://www.cisco.com/en/US/products/ps6658/index.html )

Agora praticamente falta:
WAN (Frame-Relay), MPLS, IPV6 e Multicast.
Vamos ver se faço um por dia (quinta, sexta, sabado e domingo)

Security - Parte II (Layer 2)

Antes de mais nada, existe um link da cisco com muitas informaçòes sobre segurança no caso de duvidas. aqui ( http://www.cisco.com/en/US/netsol/ns954/index.html )

Principais recomendações
1 - Desabilitar CDP e DTP sempre que possivel.
2 - Deixar as portas sempre como access ports.
3 - Ativar BPDU Guard e Root Guard (spanning-tree { guard root | bpduguard ena }) em access ports
4 - Ativar o port security:

O port security não encaminha frames quando o numero de endereços MAC é excedido ou ele não está autorizado.
A limitação dos endereços pode ser:
-Estática
-Dinamica (Até o limite configurado) mas ele não salva os endereços no caso de um reload.
-Dinamica e o sw salva os endereços na running-config (Chamado de stick learning)

switchport port-secutity mac-address xxxx.xxxx.xxxx
switchport port-secutity maximum valor
switchport port-secutity mac-address sticky
switchport port-secutity [aging] [violation {protect | restrict | shutdown}]
*protect: faz o PS, restrict: faz o PS, log e envia traps snmp, shutdown poe a porta em err-disable

5 - Habilitar o dhcp snooping e o ip verify source
6 - Utilizar a autenticação 802.1X

Existem outras recomendações na documentação do SAFE.

Security - Parte I (Local)

A primeira parte de segurança deve ser ao acesso aos equipamentos (Telnet, console e AUX)
Pra relembrar, voltemos ao CCNA
Ex:
line con 0 // line vty 0 15
login #habilita o login :)
username USUARIO password MINHASENHA

existe o service password-encryption que codifica a senha que está armazenada em clear text para algo codificado, lembrando que se retirarmos esse comando a senha continua criptografada até ser salva uma senha por cima. Porem essa codificação é fraca e qualquer pessoa pode fazer ou achar um prograa para descodificar, serve apenas para evitar curiosos de ver as senhas por eventualizade.

Para o acesso enable (Modo privilegiado) podemos setar uma segurança melhor ao invez de codificar podemos fazer um hash MD5 que não é tão simples de quebrar (Por ser um Hash).

enable password SENHA
enable secret SENHASECRETA

Lembrando que o enable secret tem prioridade a senha de enable comum.

AAA (Authentication, authorization and accounting)

Além de localmente a autenticação pode ser feita utilizando um servidor RADIUS ou TACACS+ :









1 - Habilite o AAA com aaa new-model

2- Informe o endereço dos servidores (radius ou tacacs):
tacacs-server host x.x.x.x
tacacs-server key SENHA
radius-server host x.x.x.x

radius-server key SENHA


3- Defina o método de authenticação default ou por acesso (console,vty ou aux) para o login:
aaa authentication login {default | for-console | for-vty | for-aux} method

4- Defina o método de authenticação default ou por acesso (console,vty ou aux) para enable:
aaa authentication enable {default | for-console | for-vty | for-aux} method

terça-feira, 19 de janeiro de 2010

BGP - Tabela de Roteamento IP

Rotas eBGP

As rotas que saem da BGP table e vão para IP routing table, devem ser:
- Se eBGP, a rota tem que ser considerada "best"
-Se o mesmo prefixo foi aprendido por outro IGP a AD do BGP tem que ser menor.

Para alterar a AD do BGP podemos usar:
- O comando "distance bgp external internal local"
- distance ipadd mask [ip-list]

Backdoor Routes

Caso você aprenda uma rota via IGP e por eBGP e queira usar o IGP, é possivel configurar essa rede como backdoor, com o comado network x.x.x.x backdoor. Fazendo isso o BGP:

-Seta o AD dessa rota para 200
-Não propaga essa rota.

Rotas iBGP

As rotas que saem da BGP table e vão para IP routing table, devem ser:
- A rota tem que ser considerada "best"
-Se o mesmo prefixo foi aprendido por outro IGP a AD do BGP tem que ser menor.

Ao adicionar rotas iBGP na routing table devemos lembrar do conceito do BGP synchronization, para evitar problemas com o IGP.

Porém ao se trabalhar com iBGP você precisa ter uma rede full mesh, porque um peer iBGP não propaga rotas aprendidas por iBGP a outro peer iBGP, então é necessário um grande número de conexoes entre peers. Para reduzir esse número de peers podemos usar duas ferramentas BGP: Confederations e Route reflector.

Confederations

Definida pela RFC 3065 ele utiliza os parametros CONFED_SEQ e CONFED_SET (como no aggregate-address), quebrando um AS em sub-AS, onde os roteadores dentro de um sub-AS funcionam normalmente como iBGP (tendo de ser full mesh e não divulgando iBGP a outros peers iBGP) e as conexões entre sub-AS como eBGP.
Como demonstra o exemplo do livro.

Para configurar:
router bgp sub-AS
bgp confederation identifier AS
bgp confederation peers sub-AS














Route Reflectors

O router reflector concentra as informações em um unico router que age coo eBGP para os clients e iBGP para os non-clients, então se um non-cliente enviar um prefixo a um RR server ele encaminhará para os clients (eBGP) porém não encaminhará a outros non-clients (iBGP).

A configuração é tranquila, no cliente é configurado como um iBGP normal.
no RR bata adiciona:

bgp cluster-id numero
neighbor x.x.x.x route-reflector-client

segunda-feira, 18 de janeiro de 2010

BGP - Tabela BGP

A tabela da topologia BGP é chamada de RIB (Routing information Base), aonde é adicionado o NLRI (Network reachability information) e seus respectivos PAs. O NLRI é o prefixo IP e seu tamanho. (ex: 10.0.0.0/8)

Como nos IGPs. para inserir uma rede em sua RIB, basta apenas indicar com o comando network dentro do processo BGP, além do comando network, podemos redistribuir as rotas de redes diretamente conectadas, configuradas estaticamente ou vindas de outros protocolos, alémd e aplicar route maps na hora de redistribuir essas rotas, tudo isso com o comando redistribute.

Observe que o comando auto-summary funciona diferente para o comando redistribute e network.
Para o redistribute, ele irá anunciar a rede como classfull ao primeiro match de qualquer subnetwork.
Já para o comando network com o "no auto-summary", você precisa indicar a rede exata para o BGP poder divulgar, com o comando "auto-summary" ele divulga todas as subnetworks em formato classless que façam match com a rede divulgada pelo comando network.

Você também pode controlar as rotas sumarizadas utilizando o aggregate-address, para maiores informações aqui ( http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800c95bb.shtml#cidragg )
*Prestando atenção na diferença do AS_SEQ e AS_SET

O Atributo ORIGIN PATH

Nota: Quando o aggregate-address é usado o Origin pode variar:
-Se o as-set não for usado: i
-Se usado e todas as subnets estiverem presentes e forem i: i
-Se usado e alguma subnet for ? : ?



O anúncio de Rotas pelo BGP

O anúncio de rotas é feito pelo BGP Update message.
Quando um NLRI tem o mesmo PA ele é anunciado em um mesmo Update message, isso economiza banda e CPU. Se o NLRI tiver PA diferente ele é anunciado em uma outra Update message.

Existem algumas regras de quais rotas serão incluidas no BGP Update message.

BGP

O BGP efetua troca de informações sobre a topologia para encontrar o melhor caminho para um prefixo de IP a decisão do melhor caminho é feita utilizando atributos (BGP path attributes ou PAs).



Antes de efetuar qualquer troca de informação o BGP utiliza a famosa maquina de estado para estabelecer uma conexão TCP na porta 179 e fechar um relacionamento com um neighbor.
















No entando alguns requerimentos são necessário para se fechar um peering BGP


1- O roteador necessita receber uma solicitação TCP de uma origem que seja seu neighbor, caso contrário a conexão é recusada, por exemplo, se você usa uma loopback como neighbor o endereço de origem será a interface diretamente conectada e o roteador não reconhecera esse endereço, pois espera receber como origem o endereço de loopback do router remoto, então você configura o BGP do router remoto para enviar como endereço de origem o endereço da loopback.
2- O endereço de AS tem que ser igual com o configurado, senão eles não se tornarão neighbors.
3-O BGP RID tem que ser diferentes.
4-Se a autenticação MD5 estiver configurada ela precisa acontecer.

Comandos BGP

router bgp 123
##Os 3 proximos comandos são defaults em IOS > =12.3##
no synchronization
bgp log neighbor-changes
no auto-summary ## O comando no synchronization divulga rotas a um outro AS mesmo que o IGP não tenha as mesmas rotas que o BGP, caso contrário ele aguarda a sincronização, Maiores detalhes aqui ( http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800c95bb.shtml#synch )

bgp router-id 10.10.10.10 #Configura o RID ou o maior endereço UP/UP de loopback, depois maior endereço de interface UP/UP (No momento do estabelecimento do processo).

neighbor 2.2.2.2 remote-as 123 #Configura um iBGP devido ao mesmo AS
* neighbor 2.2.2.2 update-source Loopback1 #Indica que o end de origem deve ser da Loopback1
* neighbor 2.2.2.2 password Minhasenha #Habilita a autenticaçào entre neighbors (MD5)
neighbor 3.3.3.3 remote-as 456 #Configura o eBGP devido ao AS diferente
* neighbor 3.3.3.3 password Minhasenha
* neighbor 3.3.3.3 update-source Loopback1

Percerbam que os comandos marcados com * são os mesmos depois do endereço do neighbor, se tiver que configurar diversos neighbors com os mesmo parametros basta criar um peer-group com as configurações que são iguais e aplicar no neighbor, as configurações diferentes podem ser adicionadas normalmente. Ex:

neighbor MEUGRUPO peer-group
neighbor MEUGRUPO update-source Loopback1
neighbor MEUGRUPO password Minhasenha

neighbor 2.2.2.2 peer-group MEUGRUPO
neighbor 2.2.2.2 remote-as 123

neighbor 3.3.3.3 peer-group MEUGRUPO
neighbor 3.3.3.3 remote-as 456


E pra relembrar, a maquina de estados do BGP: