sexta-feira, 15 de março de 2013

Configurando Roteador CISCO no braço


Um roteador, ou router, nada mais é que um computador especializado em realizar uma tarefa específica. Neste caso, o roteador é especializado em interconectar redes. Sejam redes a quilômetros de distância ou duas redes no mesmo prédio: o roteador define como chegar de uma rede à outra, define quais rotas o pacote pode pegar e também faz um filtro de pacotes (através das ACL‘s) básico, para controlar o acesso.
Cisco Systems é hoje a maior fornecedora de equipamentos de rede do mundo. Fundada em 1984 por Len Bosack e Sandy Lerner, a Cisco Systems produz diversos equipamentos de rede para finalidades distintas: roteadores, switches, telefones IP, etc., atendendo desde redes pequenas e bem simples, até redes de grandes provedores e companhias telefônicas (como a Telefônica, por exemplo). Atualmente, também está entrando no mercado doméstico através da aquisição da Linksys e das câmeras Flip.
Neste post vou te ensinar a fazer a configuração básica de um roteador Cisco. Coisas como definir hostname, descrição de uma determinada interface, configurar endereços IP’s, etc., que você deve sempre saber de cór e salteado. Além disso, grande parte do que explico aqui é tópico na prova Cisco CCNA.

Como obter ajuda rapidamente no IOS

Enquanto você está executando os comandos é natural que dúvidas em relação à eles surjam: pode ser que você esqueça qual parâmetro realiza alguma tarefa, pode ser que você simplesmente esqueceu qual a sintaxe de um comando específico. Ou então, você quer saber quais os comandos disponíveis em um determinado contexto de configuração. Vou dar uma rápida descrição aqui de como se virar nessas situações.
Para verificar quais comandos você pode executar em um determinado modo do IOS, basta pressionar a tecla “?” uma vez para que todos os comandos sejam listados junto com uma breve descrição de sua função:
Osiris#?
Exec commands:
access-enable    Create a temporary Access-List entry
access-profile   Apply user-profile to interface
access-template  Create a temporary Access-List entry
alps             ALPS exec commands
archive          manage archive files
audio-prompt     load ivr prompt
bfe              For manual emergency modes setting
call             Load IVR call application
cd               Change current directory
clear            Reset functions
clock            Manage the system clock
configure        Enter configuration mode
connect          Open a terminal connection
copy             Copy from one file to another
debug            Debugging functions (see also ‘undebug’)
delete           Delete a file
dir              List files on a filesystem
disable          Turn off privileged commands
disconnect       Disconnect an existing network connection
elog             Event-logging control commands
enable           Turn on privileged commands
–More–
Note o “–More–” no fim da listagem. Isso indica que, por motivos de espaço na tela, nem todos os comandos foram listados ainda. Para continuar vendo as opções, pressione a barra de espaço. Semelhante aos comandos “more” e “less” do Linux/UNIX.
Agora que você já descobriu o comando que quer usar, como verificar quais as opções que ele suporta? Basta digitar o comando, um espaço e a “?” novamente. Por exemplo, o comando “ip”. Para verificar quais as opções que ele suporta, você faz o seguinte:
Osiris(config-if)# ip ?
Interface IP configuration subcommands:
access-group        Specify access control for packets
accounting          Enable IP accounting on this interface
address             Set the IP address of an interface
audit               Apply IDS audit name
auth-proxy          Apply authenticaton proxy
authentication      authentication subcommands
bandwidth-percent   Set EIGRP bandwidth limit
bgp                 BGP interface commands
broadcast-address   Set the broadcast address of an interface
cef                 Cisco Express Fowarding interface commands
cgmp                Enable/disable CGMP
directed-broadcast  Enable forwarding of directed broadcasts
dvmrp               DVMRP interface commands
hello-interval      Configures IP-EIGRP hello interval
helper-address      Specify a destination address for UDP broadcasts
hold-time           Configures IP-EIGRP hold time
igmp                IGMP interface commands
inspect             Apply inspect name
irdp                ICMP Router Discovery Protocol
load-sharing        Style of load sharing
mask-reply          Enable sending ICMP Mask Reply messages
–More–
Novamente, note o “–More–” no final da listagem. Ainda há mais opções do que as exibidas nesta primeira listagem. Lembre-se sempre disso!
Uma última dica é o auto-complete de comandos. Esta funcionalidade do IOS completa a digitação de comandos automaticamente para você, poupando um pouco de digitação. Por exemplo, se você digitar apenas:
Osiris(config-if)# ip add<TAB>
Ele irá completar a digitação para:

Osiris(config-if)# ip address
E você pode digitar apenas os parâmetros que não podem ser completados automaticamente. Vale lembrar que esta funcionalidade só pode ser utilizada quando não há ambiguidade no nome dos comandos. Por exemplo, se houverem dois comandos diferentes (dentro do mesmo contexto) que comecem com a letra “c”, você precisa digitá-los até o ponto em que eles são diferentes e aí sim pressionar a tecla TAB para que o auto-complete funcione corretamente.

O assistente de configuração inicial

Se esta é a primeira vez que você está ligando o roteador, ou se você ainda não tem uma configuração salva (mesmo que já tenha utilizado o dispositivo anteriormente) o IOS irá perguntar se você deseja utilizar o assistente de configuração (chamado por ele de initial configuration dialog). Particularmente, não sou muito fã deste assistente não. Ele é um pouco complexo e deixa de oferecer várias opções interessantes de configuração.
Recomendo que você responda que não quer utilizar o assistente para configurar o roteador (respondendo “no” na pergunta e pressionando enter):
% Please answer ‘yes’ or ‘no’.
Would you like to enter the initial configuration dialog? [yes/no]: no
Depois é só teclar enter mais uma vez e você entrará no modo usuário e já pode começar a configuração do roteador.

Modificando o hostname

O hostname que você configura direto no roteador tem relevância apenas localmente, ou seja, outros roteadores na sua rede não poderão se referir ao seu roteador pelo nome que você definir através do comando “hostname”. Para que seja possível definir um nome com relevância global (permitindo que outros roteadores utilizem o nome escolhido para a comunicação com este roteador) você deve alterar a zona correspondente no seu servidor DNS.
Para configurar o hostname, você deve acessar o seu roteador (se você ainda não configurou a senha para o telnet, você poderá apenas acessá-lo através do console. Mais adiante neste post você irá aprender a definir todas as senhas necessárias para acessar o dispositivo através da rede) e ir para o modo de configuração:
Router> enable
Router# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#
O comando “configure terminal” o levará para o modo de configuração global do IOS. Aqui você pode alterar todas as configurações do sistema, por exemplo, definir os IP’s das interfaces, habilitar/desabilitar interfaces, definir rotas, configurar protocolos de roteamento dinâmico (como RIPv2, OSPF, etc), definir banners, etc.
Estando no modo de configuração, execute o seguinte comando para definir o hostname:
Router(config)# hostname NomeDesejado
Por exemplo,
Router(config)# hostname Osiris
Osiris(config)#
Note que, logo após você modificar o hostname, ele já passa a ser utilizado no prompt. Porém, não se engane: se você reiniciar o roteador agora o nome “desaparecerá”. Para que o nome fique configurado permanentemente no roteador, você deve salvar as configurações. Veremos como fazer isso mais adiante no post.

Configurando o servidor DNS

No IOS, você pode utilizar servidores DNS para que o roteador seja capaz de resolver nomes de domínio. Essa configuração é simples, porém é muito importante e pode ser de grande ajuda quando você está realizando testes de conectividade. Como em qualquer sistema operacional moderno, você poderá especificar um ou mais servidores DNS que serão consultados pelo roteador.
Para fazer a configuração, você irá utilizar o comando “ip name-server” no modo de configuração global:
Osiris(config)# ip name-server 8.8.8.8
Se você deseja configurar mais de um IP:

Osiris(config)# ip name-server 8.8.8.8 8.8.4.4 1.2.3.4 5.6.7.8
E pronto! Servidores DNS configurados.

Configurar banners

Os banners são mensagens exibidas para usuários quando eles tentam se conectar ao roteador pela rede. Através destas mensagens você pode avisá-los sobre manutenção, regras relacionadas ao uso, instruções de segurança, etc.
Existem alguns tipos diferentes de banners que podem ser configurados no IOS:
  • exec: A mensagem do tipo exec é exibida quando uma sessão exec é iniciada;
  • incoming: Esta mensagem é exibida para usuários que se conectem ao roteador através do console ou linha auxiliar;
  • login: Este banner é apresentado depois do motd e antes de aparecer o prompt e é exibido em todos os terminais conectados;
  • motd: O banner motd (message of the day, mensagem do dia) é o banner mais comum e utilizado em dispositivos Cisco. A mensagem definida como motd, será exibida para todos os que tentarem se conectar ao seu roteador não importando a forma (Telnet, console, auxiliar, etc.).
Como você já deve ter percebido, a diferença entre os tipos de banners é o momento em que eles são exibidos. Como o motd é o único que sempre é exibido, não importa o modo de conexão, geralmente é ele quem eu uso. A não ser que você tenha que exibir mensagens diferenciadas para cada tipo de usuário, recomendo que faça o mesmo.
Para configurar o banner motd:

Osiris(config)# banner <tipo do banner> <caracter delimitador da mensagem>
Depois de definir o tipo do banner, você deve indicar qual caracter delimitará a mensagem que você vai digitar, ou seja, o caracter indicado no comando irá definir o fim da mensagem do banner. Por exemplo:
Osiris(config)# banner motd @Enter TEXT message.  End with the character ‘@’.
Banner de teste do roteador Cisco!@
No exemplo acima, a mensagem definida é “Banner de teste do roteador Cisco!”. O “@” não é considerado parte da mensagem. Vale lembar que o caracter que você escolher não pode aparecer no texto que você quer definir como sendo o conteúdo do banner.
Todos os outros tipos de banners seguem a mesma lógica. Para verificar todos os tipos de banners suportados pela sua versão de IOS digite o comando:
Osiris(config)# banner ?
Esse comando irá exibir a lista de opções aceitas pelo comando.

Configurar o CDP

CDP (Cisco Discovery Protocol) é um protocolo proprietário da Cisco, ou seja, apenas dispositivos Cisco o suportam. Ele é um protocolo de camada 2 (camada de Enlace de Dados) que não depende de qualquer outro protocolo.
Quando o CDP está habilitado, o dispositivo envia, a cada 60 segundos (por padrão), pacotes para o endereço multicast 01-00-0c-cc-cc-cc (este mesmo endereço também é usado pelo protocolo VTP, por exemplo) para que seus vizinhos consigam encontrá-lo na rede. Como este pacote é de camada 2, ou seja, não tem informações sobre rede, ele não é um protocolo roteável (por exemplo, as informações que ele envia não podem ir para outras redes). As informações fornecidas pelo protocolo podem ser utilizadas em aplicações que entendem SNMP (basta fazer com que ela acesse o MIB do CDP para que as informações passem a ser monitoradas pelo software.
As interfaces pelas quais o CDP envia informações devem, obrigatoriamente, suportar cabeçalhos SNAP (Subnetwork Access Protocol). Exemplos de interfaces suportadas são Ethernet, Frame Relay e ATM (Asynchronous Transfer Mode). Informações recebidas de outros dispositivos CDP podem ser visualizadas no modo “enable”:
Osiris# show cdp neighbors
Este comando irá identificar o tipo do dispositivo (roteador, switch, bridge) e todas as outras informações que tenham sido aprendidas através do CDP.
Como você já deve ter deduzido, a finalidade dele é obter e enviar informações sobre os dispositivos que estão diretamente conectados a ele (isto é, na mesma rede. O CDP não é um protocolo roteável) através da rede para facilitar a administração. Algumas informações que ele consegue monitorar são:
  • Nomes de dispositivos (configurados através do comando hostname, explicado anteriormente);
  • Versão do sistema operacional;
  • Todos os endereços de todos os protocolos em interfaces que suportam o CDP;
  • Modelo do dispositivo;
  • Domínio VTP (caso seja um switch);
  • VLAN nativa;
  • E mais algumas outras.
Como você viu, o CDP oferece muita informação sem qualquer tipo de autenticação. Por isso, é muito importante que você habilite este protocolo apenas em interfaces que façam parte da sua rede interna. Preste muita atenção se estas informações não estão sendo enviadas por uma interface conectada à Internet ou à uma DMZ!
Por padrão o CDP já vem habilitado em todos os dispositivos Cisco. Se você não quiser utilizá-lo:
Osiris(config)# no cdp run
Este comando irá parar completamente o serviço e nenhuma informação sobre o dispositivo em questão será enviado pela rede. Para ativá-lo novamente:
Osiris(config)# cdp run
Agora, vamos ver algumas configurações interessantes que podem ser feitas no CDP para que ele se adeque melhor à sua rede. Para utilizar a versão 2 do protocolo:
Osiris(config)# cdp advertise-v2
Para especificar o intervalo (em segundos) em que seu dispositivo deverá enviar os pacotes com informações:
Osiris(config)# cdp timer 120
Se a sua rede raramente muda, é interessante colocar um valor mais alto nesta opção para que você não fique ocupando a rede à toa. O padrão é 60 segundos.
Você também pode definir por quanto tempo as informações recebidas de vizinhos são válidas e devem ser mantidas em memória. Para isso o seguinte comando:
Osiris(config)# cdp holdtime 240
Isso fará com que as informações recebidas tenham uma validade de 240 segundos.
Para desabilitar o CDP em uma interface específica, você precisa entrar no modo de configuração desta interface e desabilitar o protocolo:
Osiris(config)# interface FastEthernet 0/0
Osiris(config-if)# no cdp enable
Para habilitar o protocolo, entre no modo de configuração da interface e:
Osiris(config-if)# cdp enable
Pronto! Com isso você já tem uma configuração melhor para o CDP :)

Configurar endereços IP

Por motivos óbvios, você precisa configurar endereços IP em todas as interfaces que estão sendo utilizadas pelo seu roteador.
Este processo é bem simples, não leva nem 5 minutos. Para isso, você deve saber exatamente quais interfaces existem em seu roteador e quais delas você deseja configurar. Para isso, utilize o comando:
Osiris# show interfaces
Além do nome, várias informações relacionadas às interfaces são exibidas. Guarde bem os nomes das interfaces que você deseja configurar e vá para o modo de configuração global:
Osiris# configure terminal
Osiris(config)#
Uma vez no modo de configuração global, você precisa entrar no contexto da interface que você quer configurar. Para isso, basta utilizar o comando “interface” seguido do nome dela:
Osiris(config)# interface FastEthernet 0/0
Osiris(config-if)#
Neste modo, como você já viu, você poderá configurar todas as opções desta interface apenas. Para configurar opções de outras placas, você deve entrar no contexto de configuração delas. Para configurar o endereço IP nesta interface faça o seguinte:
Osiris(config-if)# ip address 192.168.1.1 255.255.255.0
Este comando já define tanto o endereço IP que será utilizado nesta interface quanto a máscara de sub-rede. Não é obrigatório, mas é interessante que você configure o endereço de broadcast também:
Osiris(config-if)# ip broadcast-address 192.168.1.255
As interfaces de roteadores Cisco por padrão estão sempre desabilitadas. Depois que você fizer a configuração delas, você deve ativá-las se não, mesmo que tudo tenha sido configurado corretamente, você não será capaz de acessar a rede. Seguindo o padrão Cisco, basta você colocar um “no” na frente do comando “shutdown” no contexto de configuração da interface para que ela seja ativada:
Osiris(config-if)# no shutdown
Como você já deve ter deduzido, para desabilitar a interface você deve executar o comando “shutdown” no modo de configuração da interface específica. O status de todas as interfaces do dispositivo pode ser visualizado utilizando-se o comando “show interfaces” ou “show interfaces FastEthernet 0/0″ no modo enable. A seguinte linha:
FastEthernet0/0 is administratively down, line protocol is down
Indica uma interface desabilitada. Sempre que uma interface está parada por decisão do administrador do sistema, o status terá “administratively down”. Caso esta expressão não apareça, é muito provável que algum outro problema está impedindo o correto funcionamento (um problema no cabo, por exemplo). Uma interface ativa mostraria uma linha parecida com:
FastEthernet0/0 is up, line protocol is up

Descrições de interfaces

Se você configura muitos roteadores diferentes, pode acabar ficando meio difícil lembrar exatamente a qual rede uma determinada interface está conectada, ou qual o papel de uma determinada interface. Para isso, o IOS permite que você adicione descrições sobre cada interface presente em seu roteador.
Esta configuração também deve ser feita no contexto de configuração da interface em questão, utilizando o comando “description”. Por exemplo:
Osiris(config-if)# description Interface que liga o roteador a rede do provedor.
Você pode definir uma configuração de no máximo 240 caracteres. Pode utilizar espaços, porém não é bom utilizar acentuação. A descrição que você utiliza com o comando “description” pode ser vista quando você digita o comando “show interfaces” no modo enable:
Osiris# show interfaces
FastEthernet0/0 is administratively down, line protocol is down
Hardware is AmdFE, address is c800.342d.0000 (bia c800.342d.0000)
Description: Interface que liga o roteador a rede do provedor
Internet address is 192.168.1.1/24
Como já disse, isso é opcional mas pode ajudar muito você ou quem for administrar o roteador e ainda não o conheça.

Configurando as senhas para acesso remoto

Antes de você configurar qualquer senha no roteador, o IOS não permite qualquer tipo de conexão remota a ele: apenas o console permite que você se conecte a ele para que você consiga configurar o roteador. Então, para permitir que você utilize o Telnet para administrar o roteador daqui para frente, vou te mostrar aqui como configurar as senhas para esse serviço.
No IOS, você deve referir-se ao Telnet como linhas VTY. A quantidade de linhas VTY varia de modelo para modelo, não há uma quantidade fixa. Para descobrir quantas linhas o seu roteador disponibiliza para você, faça o seguinte. No modo de configuração global:
Osiris(config)# line vty ?
<0-4>  First Line number
No dispositivo que estou usando, existem 5 linhas numeradas de 0 a 4. Para definir a senha:
Osiris(config)# line vty 0 4
Osiris(config-line)# login
Osiris(config-line)# password senha
Agora, quando você tentar se conectar ao seu roteador através do Telnet basta fornecer a senha que você especificou no comando “password”, não importa qual o número da linha à qual você está se conectando. Se você quiser permitir que logins sejam feitos através de Telnet mesmo que uma senha não tenha sido configurada (o que não é nada recomendado), basta negar o comando “login” no contexto de configuração da linha:
Osiris(config-line)# no login
E você poderá se logar no roteador sem precisar de uma senha.
Embora o Telnet seja o padrão para administração remota de roteadores e switches Cisco, ele não é nada seguro. Todo o tráfego trocado entre cliente e servidor é transmitido em texto claro, permitindo que alguém sniffe a conexão e consiga descobrir o seu usuário e senha. Para mitigar este problema, o mais recomendado atualmente é configurar o SSH no dispositivo e utilizá-lo ao invés de usar o Telnet. Já expliquei como funciona este processo em outro post. Clique aqui e aprenda a configurar o SSH em um roteador Cisco.

Configurando senha de console

Se você se conectar ao roteador através da porta de console, o padrão é não ter senha para que você consiga configurar o switch assim que ele sai da caixa. Porém, é uma boa prática proteger esta conexão com uma senha.
No caso do console, a linha utilizada se chama console e geralmente existe apenas 1: a porta 0. Para configurá-la, você deve fazer o seguinte:
Osiris(config)# line console 0
Osiris(config-line)# password senha
Agora, sempre que você se conectar ao console você deverá digitar a senha informada ao comando “password” como descrito acima.

Senha para modo enable

Além de senhas para as linhas, também é possível definir uma senha para proteger o modo enable, que dá mais poderes ao usuário.
Para definir esta senha, acesse o modo de configuração global e utilize o comando “enable secret”:
Osiris(config)# enable secret senha
Isso irá criar uma senha criptografada que será utilizada sempre que você tentar acessar o modo enable do roteador, não importa a forma pela qual você se conecte ao dispositivo. Você também pode criar uma senha não-criptografada utilizando o comando “enable password”:
Osiris(config)# enable password senha
Se você definir tanto a secret quanto a password, a senha secret sempre terá preferência e é ela a que sempre será utilizada. Embora você tenha a opção de utilizar uma senha não-criptografada, é recomendado que você utilize apenas a senha criptografada com o comando “enable secret”.

Armazenando senhas de forma criptografada

Por padrão, a única senha criptografada no IOS é a senha definida pelo comando “enable secret”. Todas as outras são exibidas em texto claro através do comando “show running-config”. Para impedir que isso aconteça, você deve ativar o serviço de criptografia de senhas. É muito importante que você ative este serviço, já que ele é praticamente a sua única proteção para as senhas armazenadas na memória do roteador.
Habilitar o serviço é muito simples. No modo de configuração global, execute o seguinte comando:
Osiris(config)# service password-encryption
E pronto, agora sempre que as suas senhas forem ser exibidas, apenas o hash da criptografia aparecerá melhorando um pouco mais a segurança do sistema.

Definindo timeouts

Como medida de segurança, não apenas no IOS mas também em qualquer outro sistema que você acesse remotamente, é interessante que você defina timeouts para fazer com que sessões ociosas sejam terminadas automaticamente depois de um determinado tempo. Esses timeouts são configurados para cada linha, ou seja, o timeout do console pode ser diferente do timeout da VTY.
Como a configuração pode ser diferente para cada linha, você deve estar no contexto de configuração da linha para poder modificar o parâmetro. Uma vez no contexto correto, basta utilizar o comando “exec-timeout”:
Osiris(config)# line vty 0 4
Osiris(config-line)# exec-timeout <MINUTOS> <SEGUNDOS>
Por exemplo, para definir o timeout em 1:30s você deveria executar o comando:
Osiris(config-line)# exec-timeout 1 30
Para desabilitar o timeout, basta informar “0 0″ para minutos e segundos.

Salvar as configurações

Todas as configurações que você acabou de fazer não são salvas automaticamente. Você precisa instruir o IOS a salvá-las para que você não perca tudo caso o roteador reinicie por algum motivo.
Todas as alterações que você fez até agora estão presentes na “running-config” do IOS. Esta configuração fica presente apenas na memória RAM e é perdida quando o dispositivo é reiniciado. Para salvar as alterações permanentemente, você deve copiar todos os parâmetros da “running-config” para a “startup-config” ou configuração de inicialização, traduzindo ao pé da letra.
Para fazer essa cópia, você deve utilizar o seguinte comando (no modo enable):

Osiris# copy running-config startup-config

Destination filename [startup-config]?
Ele irá te perguntar qual será o nome do arquivo que será criado com as configurações. O padrão, que geralmente é o aceito, é startup-config. Para aceitar o padrão basta pressionar a tecla enter. A seguinte mensagem irá confirmar que a operação foi efetuada com sucesso:

Router#copy running-config startup-config

Destination filename [startup-config]?
Building configuration…
[OK]
Agora sim, se você reiniciar o roteador todas as configurações que você fez serão restauradas e o dispositivo poderá começar a trabalhar sem qualquer intervenção por parte do administrador.
Fonte: pedropereira.

2 comentários:

  1. legal mano. show de bola e parabens! me ajudou bastante

    ResponderExcluir
  2. amigo preciso de um ajuda vc sabe desabilitar mensagens indesejadas na console e desabilitar resolução dinâmica de nomes em um Switch ?

    ResponderExcluir