sexta-feira, 6 de junho de 2014

Backup de Configurações do IOS em Servidor TFTP no Linux

Olá Pessoal.

Um tópico importante para quem lida com dispositivos Cisco na infraestrutura de redes é a tarefa de backup dos arquivos de configuração presentes nos switches e roteadores. Embora essa tarefa possa ser facilmente realizada em cartões de memória e afins, na maioria dos casos é mais prático fazê-lo de maneira centralizada através da própria rede em uma máquina destinada exclusivamente para organizar os backups.

Uma vez que os switches e roteadores que rodam o IOS (e outros dispositivos) já possuem um cliente TFTP embutido, o backup pode ser facilmente realizado através do comando abaixo. No entanto, para que esse procedimento seja possível é importante executar o serviço de TFTP (Trivial File Transfer Protocol) em alguma máquina da rede que seja alcançável pelos dispositivos da infraestrutura. 

Router# copy running-config tftp://192.168.221.27 
Address or name of remote host [192.168.221.27]? <ENTER>
Destination filename [Router-confg]?  <ENTER>



A instalação e execução de um serviço TFTP é bastante simples de ser realizada em ambientes Linux através do APT (distribuições baseadas no Debian) e há diferentes opções disponíveis. Uma boa opção é o pacote "tftpd-hpa", que pode ser instalado através do comando abaixo:

root@Linux:/# apt-get install tftpd-hpa openbsd-inetd

Depois de instalar o pacote "tftpd-hpa", seu arquivo de configuração ficará localizado no diretório /etc/default/tftpd-hpa. Como o serviço de TFTP é leve e não permite a navegação em diretórios, diferente do FTP tradicional, é necessário informar previamente qual será o diretório que irá armazenar localmente os arquivos transferidos a partir dos dispositivos remotos.  Partindo do princípio de que iremos utilizar o diretório /srv/tftp para esse fim, o arquivo deve ser configurado da seguinte maneira:

#-- em /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"

O usuário padrão chama "tftp" e a porta padrão de operação do serviço é UDP/69, sendo que ambos podem ser alterados no arquivo de configuração. De nada adianta alterar o diretório padrão de armazenamento local dos arquivos remotos se ele não existir e se o usuário não tiver privilégios de escrita (e execução) no Linux, por isso é importante criá-lo e ajustar as permissões:

root@Linux:/# mkdir /srv/tftp
root@Linux:/# chmod -R 777 /srv
root@Linux:/# chown -R tftp:tftp /srv

Obs.: Nas linhas anteriores estamos criando o sub-diretório "tftp" dentro do diretório "/srv", localizado na raíz. Não é demais lembrar que o diretório "/srv" deve existir na raíz para esse procedimento funcionar, caso contrário será necessário criá-lo. Também cabe destacar que estamos atribuindo direito total de leitura, escrita e execução (777) para todo o diretório /srv (e seus sub-diretórios), o que pode não ser uma boa prática de segurança. Por fim, estamos alterando o proprietário/grupo do diretório, de acordo com aquele usuário previamente informado na configuração do serviço TFTP.

Feito isso, o serviço pode ser reinicializado com as novas configurações:

root@Linux:/# service tftpd-hpa restart

Pronto, agora é só fazer o procedimento de backup dos arquivos de configuração dos switches e roteadores da rede e verificar se eles foram armazenados localmente na máquina executando executando o serviço TFTP.

Obs.: Uma boa opção no Windows, dentre várias, é o "tftpd32" ou "tftpd64", cujo download e outras informações podem ser encontrados no seguinte link: http://tftpd32.jounin.net/tftpd32.html. O procedimento de instalação é bastante simples e a ferramenta é executada e configurada via interface gráfica. Aliás, apesar de ser bem simples, a ferramenta oferece vários outros recursos que podem ser úteis: Servidor DHCP, Servidor TFTP, Cliente TFTP, Servidor Syslog, etc. Façam seus testes...

Abraço.

Samuel.

11 comentários:

  1. Muito Bom!!! esse blog além de aprender sobre Tecnologia Cisco também se aprende outras tecnologias do Mercado :)

    ResponderExcluir
  2. Qual a utilidade do openbsd-inetd nessa configuração?

    ResponderExcluir
    Respostas
    1. No versão 12.04 LTS do Ubuntu há registros de um bug no serviço inetd (IPv4), daí a recomendação de (re)instalar o openbsd-inetd para atualizar esse serviço. Em outras versões essa reinstalação não é necessária, mas fazê-lo não irá causar nenhum problema.

      Excluir
    2. Olá , poderiam me ajudar ? eu preciso fazer transferencia rapidas e simples sem nenhuma segurança , pois so preciso alterar a ios do equipamento cisco e ja finalizo meu trabalho . então no windows eu costumava colocar a ios na area de trabalho para simplificar , no linux se eu alterar para : TFTP_DYRECTORY=" /home/daniel/Área de Trabalho"
      funciona de boa ou preciso fazer mais alguma coisa como dar permissão ? se sim quis comandos eu poderia usar para usar area de trabalho como diretorio TFTP para transferência de arquivos ?

      Excluir
    3. Exemplo : pego uma release Ios da cisco coloco na área de trabalho, actualizo faço backup do equipamento (baixo a ios atual na minha area de trabalho ) depois faco a upload da nova Ios ( Actualizada ).

      Por isso que coloco na área de trabalho pois e mais simples , pq trabalho em campo e actualizo diversos equipamentos por dia as vezes , e na área de trabalho e so copiar e colar ...rs no windows usava o 3Cdaemon

      Quem poder ajudar agradeço , to maio tempão procurando no google e o seu tutorial foi o mais próximo do que eu preciso ,

      Excluir
    4. Sim, funciona.
      Basta alterar o campo TFTP_DIRECTORY.

      Excluir
  3. esse IP adrress , deixo 0.0.0.0 como uma rota padrão ?

    Eu costumo colocar no meu note com IP 1.1.1.1 e
    o equipamento 1.1.1.2 /30 pra fazer actualização . Lan to Lan


    ResponderExcluir
    Respostas
    1. O IP 0.0.0.0 na configuração quer dizer apenas que o serviço TFTP está sendo ativado em todos os IPs válidos na máquina, seja esse IP de uma interface conectada na LAN ou mesmo na WAN.

      Excluir
  4. O "tftpd-hpa" aceita escutar tanto em IPv4 quanto em IPv6? Se sim, como ficaria a configuração do arquivo "/etc/default/tftpd-hpa" nesse caso?

    ResponderExcluir
    Respostas
    1. Opa, já descobri. Basta deixar assim, que ele abre o socket IPv4 e IPv6 nas portas UDP/UDP6 69:
      TFTP_ADDRESS=":69"

      Excluir
  5. Ola Samuel,

    só para lhe informar que este tutorial salvo-me!!

    #-- em /etc/default/tftpd-hpa

    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/srv/tftp"
    TFTP_ADDRESS="0.0.0.0:69"
    TFTP_OPTIONS="--secure --create"


    root@Linux:/# mkdir /srv/tftp
    root@Linux:/# chmod -R 777 /srv
    root@Linux:/# chown -R tftp:tftp /srv


    ResponderExcluir