6.12. Configuração Rede-a-Rede do IPsec

O IPsec também pode ser configurado para conectar uma rede inteira (como uma LAN ou WAN) a uma rede remota através de uma conexão rede-a-rede. Este tipo de conexão requer a configuração de roteadores IPsec em cada lado das redes conectadas para processar e rotear informações de um nódulo de uma rede para outro nódulo de uma rede remota. O Figura 6-2 mostra uma conexão IPsec rede-a-rede passando por um túnel.

Figura 6-2. Uma conexão IPSec Rede-a-rede passando por um túnel

O diagrama mostra duas LANs (lan0 e lan1) separadas pela Internet. Estas redes usam roteadores IPSEC para autenticar e iniciar uma conexão, usando um túnel seguro através da Internet. Os pacotes interceptados em trânsito requerem descriptografia muito forte para crackear a cifra protegendo os pacotes entre estas LANs. O processo de comunicação entre um nódulo no intervalo IP 192.168.1.0/24 e outro no 192.168.2.0/24 é completamente transparente aos nódulos, já que o processamento, criptografia/descriptografia e roteamento dos pacotes IPSEC são executados inteiramente pelo roteador IPSEC.

As informações necessárias para uma conexão rede-a-rede incluem:

Por exemplo: suponha que a LAN A (lana.example.com) e LAN B (lanb.example.com) queiram se interconectar através de um túnel IPsec. O endereço de rede da LAN A está no intervalo 192.168.1.0/24, enquanto a LAN B usa o intervalo 192.168.2.0/24. O endereço IP da porta de comunicação (gateway) é 192.168.1.254 para a LAN A e 192.168.2.254 para a LAN B. Os roteadores IPSEC estão separados de cada porta de comunicação da LAN e usam dois dispositivos de rede: à eth0 é atribuído um endereço IP estático acessível externamente, que acessa à Internet, enquanto eth1 atua como um ponto de roteamento para processar e transmitir pacotes da LAN de um nódulo da rede a outros nódulos da rede remota.

A conexão IPsec entre as redes usa uma chave pré-compartilhada com o valor r3dh4tl1nux, e os administradores de A e B concordam em deixar que o racoon gere automaticamente e compartilhe uma chave de autenticação entre os roteadores IPsec. O administrador da LAN A decide nomear a conexão IPSEC como ipsec0, enquanto o administrador da LAN B nomeia a conexão IPSEC como ipsec1.

Veja seguir o arquivo ifcfg para uma conexão IPsec rede-a-rede da LAN A. O nome único para identificar a conexão neste exemplo é ipsec1, portanto o arquivo resultante é nomeado como /etc/sysconfig/network-scripts/ifcfg-ipsec1.

TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

A conexão é configurada para iniciar na inicialização da máquina (ONBOOT=yes) e usa o método de autenticação de chave pré-compartilhada (IKE_METHOD=PSK). O administrador da LAN A indica a porta de comunicação (gateway) de destino, que é a porta de comunicação da LAN B (DSTGW=192.168.2.254) e também a porta de comunicação de origem, que é o endereço IP da porta de comunicação da LAN A (SRCGW=192.168.1.254). O administrador então indica a rede de destino, que é o intervalo de rede da LAN B (DSTNET=192.168.2.0/24) e também a rede de origem (SRCNET=192.168.1.0/24). Finalmente, o administrador indica o endereço IP de destino, que é o endereço IP externamente acessível da LAN B (X.X.X.X).

Veja a seguir o arquivo da chave pré-compartilhada (chamado /etc/sysconfig/network-scripts/keys-ipsecX onde X é 0 para a LAN A e 1 para a LAN B) que as duas redes usam para autenticarem-se entre si. O conteúdos deste arquivo devem ser idênticos e somente o usuário root pode ser capaz de acessar ou gravar este arquivo.

IKE_PSK=r3dh4tl1nux

ImportanteImportante
 

Para alterar o arquivo keys-ipsec0 para que somente o usuário root possa acessá-lo ou editá-lo, execute o seguinte comando após criar o arquivo:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1

Para alterar a chave de autenticação a qualquer momento, edite o arquivo keys-ipsecX nos dois roteadores IPsec. As duas chaves devem ser idênticas para que a conexão funcione apropriadamente.

Veja a seguir o arquivo de configuração /etc/racoon/racoon.conf da conexão IPsec. Note que a linha include na parte inferior do arquivo aparece somente se estiver conectada ao túnel IPsec no momento, porque é automaticamente gerada cada vez que a conexão IPsec é ativada.

# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.

path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";

sainfo anonymous
{
	pfs_group 2;
	lifetime time 1 hour ;
	encryption_algorithm 3des, blowfish 448, rijndael ;
	authentication_algorithm hmac_sha1, hmac_md5 ;
	compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"

Veja a seguir o arquivo de configuração específico da conexão à rede remota. O arquivo é nomeado como X.X.X.X.conf (substitua X.X.X.X pelo endereço IP do roteador IPsec remoto). Note que este arquivo é gerado automaticamente quando o túnel IPsec é ativado e não deve ser editado diretamente.

;
remote X.X.X.X
{
        exchange_mode aggressive, main;
        my_identifier address;
        proposal {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2 ;
        }
}

Antes de iniciar a conexão IPsec, o encaminhamento de IP deve ser habilitado no kernel. Como root, habilite o encaminhamento de IP numa janela de comandos:

  1. Edite /etc/sysctl.conf e defina net.ipv4.ip_forward para 1.

  2. Execute o seguinte comando para habilitar a alteração:

    sysctl -p /etc/sysctl.conf

Para iniciar a conexão IPsec, reinicialize os roteadores IPsec ou execute o seguinte comando como root em cada roteador:

/sbin/ifup ipsec0

As conexões são ativadas e as duas LANs, A e B, são capazes de se comunicarem. As rotas são criadas automaticamente através do script de início invocado pela execução do ifup na conexão IPsec. Para exibir uma lista de rotas da rede, execute o seguinte comando:

/sbin/ip route list

Para testar a conexão IPsec, execute o utilitário tcpdump no dispositivo externamente roteável (eth0 neste exemplo) para visualizar os pacotes de rede sendo transferidos entre as máquinas (ou redes) e para verificar se estão criptografados com IPsec. Por exemplo: para verificar a conectividade da LAN A, digite o seguinte:

tcpdump -n -i eth0 host lana.example.com

O pacote deve incluir um cabeçalho AH e deve ser exibido como um pacote ESP. ESP significa que está criptografado. Por exemplo (barras invertidas denotam a continuação de uma linha):

12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
	  lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
	  (ipip-proto-4)