terça-feira, 28 de março de 2017

Transferência Segura de Arquivos no Cisco IOS via SCP

Olá Pessoal,

Em outro artigo do blog intitulado "Backup de Configurações do IOS em Servidor TFTP no Linux" o leitor aprendeu a configurar um servidor TFTP no Linux (ou Windows) para fazer o backup de arquivos de switches e roteadores Cisco que rodam o IOS, uma vez que esses dispositivos já possuem um cliente TFTP embutido. No entanto, por mais simples que seja executar um servidor TFTP na rede, nem sempre temos um disponível quando precisamos fazer uma transferência rápida de arquivos entre nossa máquina e um roteador/switch.

Não seria ainda mais interessante fazer essa transferência de arquivos via SCP (Secure Copy Protocol) sem a necessidade de executar nenhum servidor TFTP em nossa máquina? Diferente do TFTP, o SCP é um protocolo seguro para transferência de arquivos que opera a partir do SSH. Esse detalhe é interessante porque atualmente é muito provável que todos os switches e roteadores da empresa já estejam configurados para aceitar conexões remotas seguras via SSH. Nesses casos em que o SSH já está configurado na caixa, é ainda mais simples ativar o suporte ao SCP. 


Partindo do princípio de que o serviço SSH esteja devidamente configurado no roteador ou switch seguindo os passos da configuração abaixo, basta entrar com o comando destacado em amarelo para ativar o suporte ao SCP para fins de transferência segura de arquivos ao dispositivo. Ou seja, uma única linha em qualquer caixa com suporte a SSH é suficiente para ativar o SCP. 

Router(config)# hostname R1
R1(config)# ip domain-name labcisco.com.br
R1(config)# username ADMIN privilege 15 secret SENHA
R1(config)# crypto key generate rsa 
[gerar chave de 1024 bits]
R1(config)# ip ssh version 2
R1(config)# line vty 0 15
R1(config-line)# transport input ssh
R1(config-line)# login local
R1(config-line)# exit
R1(config)# ip scp server enable

Uma vez ativado o SCP com base nas configurações anteriores, já é possível fazer a transferência segura de arquivos entre o roteador e outra(s) máquina(s) sem a necessidade de um servidor TFTP. A partir de uma máquina executando Linux ou MacOS, é possível utilizar o próprio cliente SCP já embutido no sistema. Para aqueles que utilizam o Windows, uma aplicação gratuita e bastante comum para esse fim é o WinSCP. Por exemplo, no Linux um arquivo denominado teste.txt no diretório local poderia ser copiado na raiz da memória flash do roteador (com IP 192.168.0.1) através do seguinte comando:

shbbrito@Linux:~# scp teste.txt ADMIN@192.168.0.1:flash:teste.txt
Password: <SENHA>
teste.txt                                100%      0    100K
Connection to 192.168.0.1 closed by remote host.

Também é possível fazer o processo reverso, ou seja, copiar um arquivo da memória do roteador para uma máquina, através do comando abaixo:

shbbrito@Linux:~# scp ADMIN@192.168.0.1:flash:teste.txt /home/shbbrito/teste.txt

Simples assim, seguro e prático, muito prático!

Façam seus testes...

Samuel.

segunda-feira, 20 de março de 2017

Falha de Segurança no Telnet em Switches Cisco Catalyst

Olá Pessoal,

Em 17/03/2017 pp. a Cisco anunciou uma vulnerabilidade de segurança em vários switches da família Catalyst que foi descoberta a partir do vazamento recém apelidado de Vault 7, oportunidade em que mais de 8000 documentos e arquivos foram vazados no Wikileaks com detalhes de táticas e ferramentas de hacking  utilizados pela Agência Central de Inteligência (CIA) dos EUA.

O bug em questão afeta 264 switches Catalyst, 51 switches industriais Ethernet e outros 3 dispositivos, caso eles estejam executando o IOS e configurados para aceitar conexões Telnet que, convenhamos, já não deveria mais ser utilizado como protocolo de acesso remoto há anos. Segundo a Cisco, a falha estaria relacionada ao Cluster Management Protocol (CMP) no código do IOS que utiliza o Telnet internamente como protocolo de sinalização. A vulnerabilidade é que um atacante poderia explorar esse protocolo enviando opções Telnet deformadas do CMP para ganhar acesso remoto ao dispositivo e executar comandos privilegiados sem necessidade de efetuar qualquer autenticação.


Abaixo trago uma relação de todos os equipamentos afetados pela falha de segurança:

  • Cisco Catalyst 2350-48TD-S Switch
  • Cisco Catalyst 2350-48TD-SD Switch
  • Cisco Catalyst 2360-48TD-S Switch
  • Cisco Catalyst 2918-24TC-C Switch
  • Cisco Catalyst 2918-24TT-C Switch
  • Cisco Catalyst 2918-48TC-C Switch
  • Cisco Catalyst 2918-48TT-C Switch
  • Cisco Catalyst 2928-24TC-C Switch
  • Cisco Catalyst 2960-24-S Switch
  • Cisco Catalyst 2960-24LC-S Switch
  • Cisco Catalyst 2960-24LT-L Switch
  • Cisco Catalyst 2960-24PC-L Switch
  • Cisco Catalyst 2960-24PC-S Switch
  • Cisco Catalyst 2960-24TC-L Switch
  • Cisco Catalyst 2960-24TC-S Switch
  • Cisco Catalyst 2960-24TT-L Switch
  • Cisco Catalyst 2960-48PST-L Switch
  • Cisco Catalyst 2960-48PST-S Switch
  • Cisco Catalyst 2960-48TC-L Switch
  • Cisco Catalyst 2960-48TC-S Switch
  • Cisco Catalyst 2960-48TT-L Switch
  • Cisco Catalyst 2960-48TT-S Switch
  • Cisco Catalyst 2960-8TC-L Compact Switch
  • Cisco Catalyst 2960-8TC-S Compact Switch
  • Cisco Catalyst 2960-Plus 24LC-L Switch
  • Cisco Catalyst 2960-Plus 24LC-S Switch
  • Cisco Catalyst 2960-Plus 24PC-L Switch
  • Cisco Catalyst 2960-Plus 24PC-S Switch
  • Cisco Catalyst 2960-Plus 24TC-L Switch
  • Cisco Catalyst 2960-Plus 24TC-S Switch
  • Cisco Catalyst 2960-Plus 48PST-L Switch
  • Cisco Catalyst 2960-Plus 48PST-S Switch
  • Cisco Catalyst 2960-Plus 48TC-L Switch
  • Cisco Catalyst 2960-Plus 48TC-S Switch
  • Cisco Catalyst 2960C-12PC-L Switch
  • Cisco Catalyst 2960C-8PC-L Switch
  • Cisco Catalyst 2960C-8TC-L Switch
  • Cisco Catalyst 2960C-8TC-S Switch
  • Cisco Catalyst 2960CG-8TC-L Compact Switch
  • Cisco Catalyst 2960CPD-8PT-L Switch
  • Cisco Catalyst 2960CPD-8TT-L Switch
  • Cisco Catalyst 2960CX-8PC-L Switch
  • Cisco Catalyst 2960CX-8TC-L Switch
  • Cisco Catalyst 2960G-24TC-L Switch
  • Cisco Catalyst 2960G-48TC-L Switch
  • Cisco Catalyst 2960G-8TC-L Compact Switch
  • Cisco Catalyst 2960L-16PS-LL Switch
  • Cisco Catalyst 2960L-16TS-LL Switch
  • Cisco Catalyst 2960L-24PS-LL Switch
  • Cisco Catalyst 2960L-24TS-LL Switch
  • Cisco Catalyst 2960L-48PS-LL Switch
  • Cisco Catalyst 2960L-48TS-LL Switch
  • Cisco Catalyst 2960L-8PS-LL Switch
  • Cisco Catalyst 2960L-8TS-LL Switch
  • Cisco Catalyst 2960PD-8TT-L Compact Switch
  • Cisco Catalyst 2960S-24PD-L Switch
  • Cisco Catalyst 2960S-24PS-L Switch
  • Cisco Catalyst 2960S-24TD-L Switch
  • Cisco Catalyst 2960S-24TS-L Switch
  • Cisco Catalyst 2960S-24TS-S Switch
  • Cisco Catalyst 2960S-48FPD-L Switch
  • Cisco Catalyst 2960S-48FPS-L Switch
  • Cisco Catalyst 2960S-48LPD-L Switch
  • Cisco Catalyst 2960S-48LPS-L Switch
  • Cisco Catalyst 2960S-48TD-L Switch
  • Cisco Catalyst 2960S-48TS-L Switch
  • Cisco Catalyst 2960S-48TS-S Switch
  • Cisco Catalyst 2960S-F24PS-L Switch
  • Cisco Catalyst 2960S-F24TS-L Switch
  • Cisco Catalyst 2960S-F24TS-S Switch
  • Cisco Catalyst 2960S-F48FPS-L Switch
  • Cisco Catalyst 2960S-F48LPS-L Switch
  • Cisco Catalyst 2960S-F48TS-L Switch
  • Cisco Catalyst 2960S-F48TS-S Switch
  • Cisco Catalyst 2960X-24PD-L Switch
  • Cisco Catalyst 2960X-24PS-L Switch
  • Cisco Catalyst 2960X-24PSQ-L Cool Switch
  • Cisco Catalyst 2960X-24TD-L Switch
  • Cisco Catalyst 2960X-24TS-L Switch
  • Cisco Catalyst 2960X-24TS-LL Switch
  • Cisco Catalyst 2960X-48FPD-L Switch
  • Cisco Catalyst 2960X-48FPS-L Switch
  • Cisco Catalyst 2960X-48LPD-L Switch
  • Cisco Catalyst 2960X-48LPS-L Switch
  • Cisco Catalyst 2960X-48TD-L Switch
  • Cisco Catalyst 2960X-48TS-L Switch
  • Cisco Catalyst 2960X-48TS-LL Switch
  • Cisco Catalyst 2960XR-24PD-I Switch
  • Cisco Catalyst 2960XR-24PD-L Switch
  • Cisco Catalyst 2960XR-24PS-I Switch
  • Cisco Catalyst 2960XR-24PS-L Switch
  • Cisco Catalyst 2960XR-24TD-I Switch
  • Cisco Catalyst 2960XR-24TD-L Switch
  • Cisco Catalyst 2960XR-24TS-I Switch
  • Cisco Catalyst 2960XR-24TS-L Switch
  • Cisco Catalyst 2960XR-48FPD-I Switch
  • Cisco Catalyst 2960XR-48FPD-L Switch
  • Cisco Catalyst 2960XR-48FPS-I Switch
  • Cisco Catalyst 2960XR-48FPS-L Switch
  • Cisco Catalyst 2960XR-48LPD-I Switch
  • Cisco Catalyst 2960XR-48LPD-L Switch
  • Cisco Catalyst 2960XR-48LPS-I Switch
  • Cisco Catalyst 2960XR-48LPS-L Switch
  • Cisco Catalyst 2960XR-48TD-I Switch
  • Cisco Catalyst 2960XR-48TD-L Switch
  • Cisco Catalyst 2960XR-48TS-I Switch
  • Cisco Catalyst 2960XR-48TS-L Switch
  • Cisco Catalyst 2970G-24T Switch
  • Cisco Catalyst 2970G-24TS Switch
  • Cisco Catalyst 2975 Switch
  • Cisco Catalyst 3550 12G Switch
  • Cisco Catalyst 3550 12T Switch
  • Cisco Catalyst 3550 24 DC SMI Switch
  • Cisco Catalyst 3550 24 EMI Switch
  • Cisco Catalyst 3550 24 FX SMI Switch
  • Cisco Catalyst 3550 24 PWR Switch
  • Cisco Catalyst 3550 24 SMI Switch
  • Cisco Catalyst 3550 48 EMI Switch
  • Cisco Catalyst 3550 48 SMI Switch
  • Cisco Catalyst 3560-12PC-S Compact Switch
  • Cisco Catalyst 3560-24PS Switch
  • Cisco Catalyst 3560-24TS Switch
  • Cisco Catalyst 3560-48PS Switch
  • Cisco Catalyst 3560-48TS Switch
  • Cisco Catalyst 3560-8PC Compact Switch
  • Cisco Catalyst 3560C-12PC-S Switch
  • Cisco Catalyst 3560C-8PC-S Switch
  • Cisco Catalyst 3560CG-8PC-S Compact Switch
  • Cisco Catalyst 3560CG-8TC-S Compact Switch
  • Cisco Catalyst 3560CPD-8PT-S Compact Switch
  • Cisco Catalyst 3560CX-12PC-S Switch
  • Cisco Catalyst 3560CX-12PD-S Switch
  • Cisco Catalyst 3560CX-12TC-S Switch
  • Cisco Catalyst 3560CX-8PC-S Switch
  • Cisco Catalyst 3560CX-8PT-S Switch
  • Cisco Catalyst 3560CX-8TC-S Switch
  • Cisco Catalyst 3560CX-8XPD-S Switch
  • Cisco Catalyst 3560E-12D-E Switch
  • Cisco Catalyst 3560E-12D-S Switch
  • Cisco Catalyst 3560E-12SD-E Switch
  • Cisco Catalyst 3560E-12SD-S Switch
  • Cisco Catalyst 3560E-24PD-E Switch
  • Cisco Catalyst 3560E-24PD-S Switch
  • Cisco Catalyst 3560E-24TD-E Switch
  • Cisco Catalyst 3560E-24TD-S Switch
  • Cisco Catalyst 3560E-48PD-E Switch
  • Cisco Catalyst 3560E-48PD-EF Switch
  • Cisco Catalyst 3560E-48PD-S Switch
  • Cisco Catalyst 3560E-48PD-SF Switch
  • Cisco Catalyst 3560E-48TD-E Switch
  • Cisco Catalyst 3560E-48TD-S Switch
  • Cisco Catalyst 3560G-24PS Switch
  • Cisco Catalyst 3560G-24TS Switch
  • Cisco Catalyst 3560G-48PS Switch
  • Cisco Catalyst 3560G-48TS Switch
  • Cisco Catalyst 3560V2-24DC Switch
  • Cisco Catalyst 3560V2-24PS Switch
  • Cisco Catalyst 3560V2-24TS Switch
  • Cisco Catalyst 3560V2-48PS Switch
  • Cisco Catalyst 3560V2-48TS Switch
  • Cisco Catalyst 3560X-24P-E Switch
  • Cisco Catalyst 3560X-24P-L Switch
  • Cisco Catalyst 3560X-24P-S Switch
  • Cisco Catalyst 3560X-24T-E Switch
  • Cisco Catalyst 3560X-24T-L Switch
  • Cisco Catalyst 3560X-24T-S Switch
  • Cisco Catalyst 3560X-24U-E Switch
  • Cisco Catalyst 3560X-24U-L Switch
  • Cisco Catalyst 3560X-24U-S Switch
  • Cisco Catalyst 3560X-48P-E Switch
  • Cisco Catalyst 3560X-48P-L Switch
  • Cisco Catalyst 3560X-48P-S Switch
  • Cisco Catalyst 3560X-48PF-E Switch
  • Cisco Catalyst 3560X-48PF-L Switch
  • Cisco Catalyst 3560X-48PF-S Switch
  • Cisco Catalyst 3560X-48T-E Switch
  • Cisco Catalyst 3560X-48T-L Switch
  • Cisco Catalyst 3560X-48T-S Switch
  • Cisco Catalyst 3560X-48U-E Switch
  • Cisco Catalyst 3560X-48U-L Switch
  • Cisco Catalyst 3560X-48U-S Switch
  • Cisco Catalyst 3750 Metro 24-AC Switch
  • Cisco Catalyst 3750 Metro 24-DC Switch
  • Cisco Catalyst 3750-24FS Switch
  • Cisco Catalyst 3750-24PS Switch
  • Cisco Catalyst 3750-24TS Switch
  • Cisco Catalyst 3750-48PS Switch
  • Cisco Catalyst 3750-48TS Switch
  • Cisco Catalyst 3750E-24PD-E Switch
  • Cisco Catalyst 3750E-24PD-S Switch
  • Cisco Catalyst 3750E-24TD-E Switch
  • Cisco Catalyst 3750E-24TD-S Switch
  • Cisco Catalyst 3750E-48PD-E Switch
  • Cisco Catalyst 3750E-48PD-EF Switch
  • Cisco Catalyst 3750E-48PD-S Switch
  • Cisco Catalyst 3750E-48PD-SF Switch
  • Cisco Catalyst 3750E-48TD-E Switch
  • Cisco Catalyst 3750E-48TD-S Switch
  • Cisco Catalyst 3750G-12S Switch
  • Cisco Catalyst 3750G-12S-SD Switch
  • Cisco Catalyst 3750G-16TD Switch
  • Cisco Catalyst 3750G-24PS Switch
  • Cisco Catalyst 3750G-24T Switch
  • Cisco Catalyst 3750G-24TS Switch
  • Cisco Catalyst 3750G-24TS-1U Switch
  • Cisco Catalyst 3750G-48PS Switch
  • Cisco Catalyst 3750G-48TS Switch
  • Cisco Catalyst 3750V2-24FS Switch
  • Cisco Catalyst 3750V2-24PS Switch
  • Cisco Catalyst 3750V2-24TS Switch
  • Cisco Catalyst 3750V2-48PS Switch
  • Cisco Catalyst 3750V2-48TS Switch
  • Cisco Catalyst 3750X-12S-E Switch
  • Cisco Catalyst 3750X-12S-S Switch
  • Cisco Catalyst 3750X-24P-E Switch
  • Cisco Catalyst 3750X-24P-L Switch
  • Cisco Catalyst 3750X-24P-S Switch
  • Cisco Catalyst 3750X-24S-E Switch
  • Cisco Catalyst 3750X-24S-S Switch
  • Cisco Catalyst 3750X-24T-E Switch
  • Cisco Catalyst 3750X-24T-L Switch
  • Cisco Catalyst 3750X-24T-S Switch
  • Cisco Catalyst 3750X-24U-E Switch
  • Cisco Catalyst 3750X-24U-L Switch
  • Cisco Catalyst 3750X-24U-S Switch
  • Cisco Catalyst 3750X-48P-E Switch
  • Cisco Catalyst 3750X-48P-L Switch
  • Cisco Catalyst 3750X-48P-S Switch
  • Cisco Catalyst 3750X-48PF-E Switch
  • Cisco Catalyst 3750X-48PF-L Switch
  • Cisco Catalyst 3750X-48PF-S Switch
  • Cisco Catalyst 3750X-48T-E Switch
  • Cisco Catalyst 3750X-48T-L Switch
  • Cisco Catalyst 3750X-48T-S Switch
  • Cisco Catalyst 3750X-48U-E Switch
  • Cisco Catalyst 3750X-48U-L Switch
  • Cisco Catalyst 3750X-48U-S Switch
  • Cisco Catalyst 4000 Supervisor Engine I
  • Cisco Catalyst 4000/4500 Supervisor Engine IV
  • Cisco Catalyst 4000/4500 Supervisor Engine V
  • Cisco Catalyst 4500 Series Supervisor Engine II-Plus
  • Cisco Catalyst 4500 Series Supervisor Engine II-Plus-TS
  • Cisco Catalyst 4500 Series Supervisor Engine V-10GE
  • Cisco Catalyst 4500 Series Supervisor II-Plus-10GE
  • Cisco Catalyst 4500 Supervisor Engine 6-E
  • Cisco Catalyst 4500 Supervisor Engine 6L-E
  • Cisco Catalyst 4900M Switch
  • Cisco Catalyst 4928 10 Gigabit Ethernet Switch
  • Cisco Catalyst 4948 10 Gigabit Ethernet Switch
  • Cisco Catalyst 4948 Switch
  • Cisco Catalyst 4948E Ethernet Switch
  • Cisco Catalyst 4948E-F Ethernet Switch
  • Cisco Catalyst Blade Switch 3020 for HP
  • Cisco Catalyst Blade Switch 3030 for Dell
  • Cisco Catalyst Blade Switch 3032 for Dell M1000E
  • Cisco Catalyst Blade Switch 3040 for FSC
  • Cisco Catalyst Blade Switch 3120 for HP
  • Cisco Catalyst Blade Switch 3120X for HP
  • Cisco Catalyst Blade Switch 3130 for Dell M1000E
  • Cisco Catalyst C2928-24LT-C Switch
  • Cisco Catalyst C2928-48TC-C Switch
  • Cisco Catalyst Switch Module 3012 for IBM BladeCenter
  • Cisco Catalyst Switch Module 3110 for IBM BladeCenter
  • Cisco Catalyst Switch Module 3110X for IBM BladeCenter
  • Cisco Embedded Service 2020 24TC CON B Switch
  • Cisco Embedded Service 2020 24TC CON Switch
  • Cisco Embedded Service 2020 24TC NCP B Switch
  • Cisco Embedded Service 2020 24TC NCP Switch
  • Cisco Embedded Service 2020 CON B Switch
  • Cisco Embedded Service 2020 CON Switch
  • Cisco Embedded Service 2020 NCP B Switch
  • Cisco Embedded Service 2020 NCP Switch
  • Cisco Enhanced Layer 2 EtherSwitch Service Module
  • Cisco Enhanced Layer 2/3 EtherSwitch Service Module
  • Cisco Gigabit Ethernet Switch Module (CGESM) for HP
  • Cisco IE 2000-16PTC-G Industrial Ethernet Switch
  • Cisco IE 2000-16T67 Industrial Ethernet Switch
  • Cisco IE 2000-16T67P Industrial Ethernet Switch
  • Cisco IE 2000-16TC Industrial Ethernet Switch
  • Cisco IE 2000-16TC-G Industrial Ethernet Switch
  • Cisco IE 2000-16TC-G-E Industrial Ethernet Switch
  • Cisco IE 2000-16TC-G-N Industrial Ethernet Switch
  • Cisco IE 2000-16TC-G-X Industrial Ethernet Switch
  • Cisco IE 2000-24T67 Industrial Ethernet Switch
  • Cisco IE 2000-4S-TS-G Industrial Ethernet Switch
  • Cisco IE 2000-4T Industrial Ethernet Switch
  • Cisco IE 2000-4T-G Industrial Ethernet Switch
  • Cisco IE 2000-4TS Industrial Ethernet Switch
  • Cisco IE 2000-4TS-G Industrial Ethernet Switch
  • Cisco IE 2000-8T67 Industrial Ethernet Switch
  • Cisco IE 2000-8T67P Industrial Ethernet Switch
  • Cisco IE 2000-8TC Industrial Ethernet Switch
  • Cisco IE 2000-8TC-G Industrial Ethernet Switch
  • Cisco IE 2000-8TC-G-E Industrial Ethernet Switch
  • Cisco IE 2000-8TC-G-N Industrial Ethernet Switch
  • Cisco IE 3000-4TC Industrial Ethernet Switch
  • Cisco IE 3000-8TC Industrial Ethernet Switch
  • Cisco IE-3010-16S-8PC Industrial Ethernet Switch
  • Cisco IE-3010-24TC Industrial Ethernet Switch
  • Cisco IE-4000-16GT4G-E Industrial Ethernet Switch
  • Cisco IE-4000-16T4G-E Industrial Ethernet Switch
  • Cisco IE-4000-4GC4GP4G-E Industrial Ethernet Switch
  • Cisco IE-4000-4GS8GP4G-E Industrial Ethernet Switch
  • Cisco IE-4000-4S8P4G-E Industrial Ethernet Switch
  • Cisco IE-4000-4T4P4G-E Industrial Ethernet Switch
  • Cisco IE-4000-4TC4G-E Industrial Ethernet Switch
  • Cisco IE-4000-8GS4G-E Industrial Ethernet Switch
  • Cisco IE-4000-8GT4G-E Industrial Ethernet Switch
  • Cisco IE-4000-8GT8GP4G-E Industrial Ethernet Switch
  • Cisco IE-4000-8S4G-E Industrial Ethernet Switch
  • Cisco IE-4000-8T4G-E Industrial Ethernet Switch
  • Cisco IE-4010-16S12P Industrial Ethernet Switch
  • Cisco IE-4010-4S24P Industrial Ethernet Switch
  • Cisco IE-5000-12S12P-10G Industrial Ethernet Switch
  • Cisco IE-5000-16S12P Industrial Ethernet Switch
  • Cisco ME 4924-10GE Switch
  • Cisco RF Gateway 10
  • Cisco SM-X Layer 2/3 EtherSwitch Service Module

O relatório oficial da Cisco (CVE-2017-3881) sobre essa falha está disponível no link abaixo:

Por ora, até que uma correção de segurança seja lançada, a recomendação da Cisco é que qualquer acesso remoto via Telnet seja desativado. É fato que por várias outras razões já passou da hora de desativar o Telnet e substituí-lo pelo SSH para acesso remoto aos seus dispositivos da infraestrutura, principalmente por causa confidencialidade e autenticidade viabilizadas pela criptografia nativa do SSH. Em outro artigo do blog intitulado "Acesso Seguro ao Roteador via SSH" o leitor pode encontrar mais informações sobre como fazer essa configuração nos seus switches e roteadores.

Fiquem atentos!

Samuel. 

quarta-feira, 1 de março de 2017

VPN IPSec Site-to-Site no Debian GNU/Linux

Olá Pessoal,

No Lab27 do livro Laboratórios de Tecnologias Cisco explico ao leitor como configurar dois roteadores Cisco para estabelecer uma VPN IPSec  e conectar duas redes locais (LAN) remotamente através da Internet (site-to-site). Neste artigo trago um laboratório bastante similar com base na topologia apresentada na figura abaixo, só que dessa vez irei fazê-lo através de utilização de dois servidores instalados com o Debian 8 GNU/Linux que serão configurados como roteadores VPN


Antes de abordar as configurações, é importante um pouco de discussão sobre a escolha de uma solução de VPN para ambientes Linux. Por se tratar de um ambiente aberto, no Linux existe uma grande diversidade de soluções que podem ser utilizadas para implementar uma VPN para fins de estabelecimento de um túnel virtual privativo entre duas (ou mais) unidades remotas. Além de existirem várias ferramentas, também existem diferentes tipos de soluções para implementação da VPN, o que faz com que o primeiro desafio de um administrador seja a escolha da solução mais adequada no contexto do seu ambiente.

As VPNs são tradicionalmente implementadas através de túneis IPSec (solução padronizada em RFC) ou de túneis SSL/TLS. As duas abordagens trazem excelentes resultados, mas é importante ter em mente que a solução IPSec é implementada em nível de rede, enquanto que a solução TLS é implementada em nível de aplicação. De maneira simplista isso quer dizer que uma VPN IPSec é implementada diretamente entre os roteadores (em nível de rede), enquanto que uma VPN TLS é implementada entre os softwares servidor/cliente (em nível de aplicação).

Cada uma dessas modalidades tem vantagens e desvantagens. Por exemplo, como a VPN TLS é estabelecida entre as aplicações (e não entre as máquinas), normalmente ela é mais atrativa para a criação de VPNs do tipo client-to-site, em que o objetivo é que um cliente em casa ou outro local fora da empresa possa se conectar aos recursos da infraestrutura de rede da empresa, afinal o próprio software cliente da máquina do usuário se encarrega de esconder do usuário toda a complexidade de configuração da VPN. Por outro lado, a principal vantagem de implementar uma VPN através do IPSec em nível de rede, ao invés do SSL em nível de aplicação, é que existe interoperabilidade entre as soluções de diferentes fabricantes.

Obs.: Reocmendo a leitura do artigo no link abaixo caso o leitor tenha interesse em estabelecer uma VPN através da integração de uma ponta que possui um roteador Cisco (baseado no IOS) e outra ponta que possui um servidor Linux Debian (baseado no strongSwan):

http://www.cisco.com/c/pt_br/support/docs/ip/internet-key-exchange-ike/117258-config-l2l.html

Particularmente neste artigo o objetivo é trazer os procedimentos de configuração de uma VPN IPSec para interconexão de duas unidades remotas de uma empresa através de um túnel virtual. Mesmo depois de tomada essa decisão, ainda existem várias ferramentas no Linux que podem ser utilizadas para esse fim, por exemplo: strongSwan, OpenSwan, LibreSwan, etc... Uma das soluções mais tradicionais é o strongSwan, já que seu desenvolvimento ainda é bastante ativo e por isso a ferramenta é repleta de novos recursos, diferente do OpenSwan que parece estar estagnado apenas para versões antigas do kernel.


Abaixo baixo trago as configurações básicas de rede que foram utilizadas em cada um dos roteadores Debian, seguindo a lógica da topologia apresentada no início do artigo. Além das configurações abaixo, também é importante alterar para 1 a flag do kernel que indica ao sistema que ele tem permissão para fazer roteamento entre redes, o que pode ser feito através do comando: sysctl -w net.ipv4.ip_forward=1

###--- Router-Site1: /etc/network/interfaces

# Interface Loopback
auto lo
iface lo inet loopack

# Conexao WAN (Internet)
auto eth0
iface eth0 inet static
    address 203.0.113.2
    netmask 255.255.255.252
    gateway 203.0.113.1

# Conexao LAN
auto eth1
iface eth1 inet static
    address 192.168.100.1
    netmask 255.255.255.0



###--- Router-Site2: /etc/network/interfaces

# Interface Loopback
auto lo
iface lo inet loopack

# Conexao WAN (Internet)
auto eth0
iface eth0 inet static
    address 198.51.100.2
    netmask 255.255.255.252
    gateway 198.51.100.1

# Conexao LAN
auto eth1
iface eth1 inet static
    address 192.168.200.1
    netmask 255.255.255.0

Vamos à configuração da VPN IPSec...

1) Instalação do Serviço strongSwan de VPN IPSec

Feita essa breve contextualização, vamos à instalação da ferramenta strongSwan. Assim como nos outros artigos do blog, estou considerando que os servidores estão instalados com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação do pacote denominado strongswam para que os servidores Linux possam ser posterirmente configurados como roteadores VPN. Essa tarefa é simples e rápida através do APT:

root@Router-SiteA:/# apt-get update
root@Router-SiteA:/# apt-get install strongswan

root@Router-SiteB:/# apt-get update
root@Router-SiteB:/# apt-get install strongswan

2) Edição do Arquivo de Configuração e Definição da(s) VPN(s)

Dois dos arquivos mais importantes de configuração do strongSwan ficam localizados em /etc/ipsec.conf e /etc/ipsec.secrets.  O arquivo ipsec.conf é responsável pelas configurações gerais, além das configurações específicas de cada uma das conexões VPN. Logo, devemos editar esse arquivo em ambos os roteadores com as seguintes configurações para criar uma VPN coerente entre os pares:

###--- Router-Site1: /etc/ipsec.conf (strongSean IPSec config file)

###--- Configuracoes Gerais
config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no

###--- Definicao da(s) VPN(s)
conn VPN-Site1-to-Site2
        left=203.0.113.2
        leftsubnet=192.168.100.0/24
        right=198.51.100.2
        rightsubnet=192.168.200.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel
     


###--- Router-Site2: /etc/ipsec.conf (strongSean IPSec config file)

###--- Configuracoes Gerais
config setup
        charondebug="all"
        uniqueids=yes
        strictcrlpolicy=no

###--- Definicao da(s) VPN(s)
conn VPN-Site1-to-Site2
        left=198.51.100.2
        leftsubnet=192.168.200.0/24
        right=203.0.113.2
        rightsubnet=192.168.100.0/24
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!
        keyingtries=0
        ikelifetime=1h
        lifetime=8h
        dpddelay=30
        dpdtimeout=120
        dpdaction=restart
        authby=secret
        auto=start
        keyexchange=ikev2
        type=tunnel

Obsrevem nas linhas destacadas em amarelo que os parâmetros left e right fazem referência às pontas da VPN. Para facilitar o processo de cópia do arquivo de configuração nos dois roteadores Linux não faz diferença qual ponta será associada com o parâmetro left ou right, uma vez que o sistema observa as configurações das interfaces de rede para identificar a ponta local. No entanto, é interessante manter as infomações organizadas de forma a utilizar o parâmetro left para fazer referência ao ponto local, enquanto que o parâmetro right fica reservado para o ponto remoto. O leitor interessado em detalhes sobre os demais parâmetros pode obter mais informações na documentação oficial do strongSwan, disponível no link abaixo:

https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection

3) Definição da Chave Pré-Compartilhada (PSK)

O segundo arquivo importante de configuração do strongSwan é o /etc/ipsec.secrets, responsável por armazenar a(s) chave(s) pré-compartilhadas que será(ão) utilizada(s) durante o processo de associação dos pares nas fases prévias de estabelecimento da VPN.  Devemos editar esse arquivo em ambos os roteadores com as seguintes configurações para criar uma VPN coerente entre os pares:

###--- Router-Site1: /etc/ipsec.secrets
203.0.113.2 198.51.100.2 : PSK : 'senha13579senha02468'

###--- Router-Site2: /etc/ipsec.secrets
198.51.100.2 203.0.113.2 : PSK : 'senha13579senha02468'

Obs.: Para fins de simplicidade, neste artigo foi utilizada uma chave pré-compartilhada entre os roteadores VPN. No entanto, também é possível a utilização de certificados digitais e chaves privada/pública para adicionar mais segurança ao processo de estabelecimento do túnel. A configuração de uma VPN com uso de certificados/chaves no strongSwan não é complicada, embora demande alguns passos adicionais. Caso haja interesse dos leitores, essa configuração pode ser objeto  de um próximo artigo no blog.

4) Manipulação e Checagem do Serviço da VPN IPSec

Depois de realizadas as configurações anteriores, a VPN IPSec está devidamente configurada para entrar em operação. Para ativá-la basta utilizar o comando ipsec restart e para visualizar seu status basta utilizar os comandos ipsec status ou ipsec statusall, conforme pode ser observado nas saídas trazidas abaixo:

Router-Site1:/# ipsec statusall
Status of IKE charon daemon (strongSwan 5.2.1, Linux 3.16.0-4-586, i686):
(...) Saída Omitida
Connections:
VPN-Site1-to-Site2:  203.0.113.2...198.51.100.2  IKEv2, dpddelay=30s
VPN-Site1-to-Site2:   local:  [203.0.113.2] uses pre-shared key authentication
VPN-Site1-to-Site2:   remote: [198.51.100.2] uses pre-shared key authentication
VPN-Site1-to-Site2:   child:  192.168.100.0/24 === 192.168.200.0/24 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 connecting):
VPN-Site1-to-Site2[1]: ESTABLISHED 14 seconds ago, 203.0.113.2[203.0.113.2]...198.51.100.2[198.51.100.2]
(...) Saída Omitida
VPN-Site1-to-Site2{1}:  AES_CBC_256/HMAC_SHA2_256_128, 0 bytes_i, 0 bytes_o, rekeying in 7 hours
VPN-Site1-to-Site2{1}:   192.168.100.0/24 === 192.168.200.0/24 

O leitor pode constatar que a configuração de uma VPN IPSec no Linux não é tão difícil quanto alguns dizem. Na realidade, possivelmente essa informação seja decorrente da comparação da configuração de uma VPN IPSec com uma VPN TLS através do OpenVPN que é reconhecida por ser mais rápida e simples.

Ainda é importante destacar que caso os roteadores Debian GNU/Linux estejam conectados atrás de um firewall de borda, é importante liberar as portas 500/UDP (utilizada na troca de chaves do ISAKMP) e 4500/UDP (utilizada pelo NAT-T). Além disso, os pacotes IPSec usam dois numéros dedicados de protocolos na camada de rede: 50 (ESP) e 51 (AH).

Por exemplo, supondo que os roteadores estejam atrás de um firewall baseado em iptables, então é necessário aceitar os pacotes nessas portas e traduzir o endereço público de destino (do firewall de borda) para o endereço privado do roteador VPN, de forma que as regras para liberação do tráfego IPSec seriam as seguintes:

iptables -t nat -A PREROUTING -p udp -d <IP_WAN> --dport  500 -j DNAT --to <IP>
iptables -t nat -A PREROUTING -p udp -d <IP_WAN> --dport 4500 -j DNAT --to <IP>

Caso o roteador Debian GNU/Linux seja o próprio firewall, o que é comum em ambientes menores, então é necessário apenas uma regra de entrada para o ISAKMP, já que não ocorre tradução (NAT-T):

iptables -t filter -A INPUT  -p udp --dport 500 -j ACCEPT

Façam seus testes...

Samuel.