Revista Do Linux
 
  
  
 

OUTRAS SEÇÕES
  Cartas
  Variedades
  Rádio Linux
  Mensagem ao Leitor
  CD do Mês
  Coluna do Augusto
  Dicas e Truques
  Opinião
 

Instalando e Configurando o FreeS/WAN

Veja neste artigo como instalar e configurar o FreeS/WAN em um sistema com o Red Hat Linux 7.3

O Linux FreeS/WAN é uma implementação de IPSEC & IKE para Linux. O IPSEC é o Internet Protocol Security. Ele usa criptografia forte para prover autenticação e serviços de criptografia. A autenticação assegura que os pacotes são do remetente correto e que não foram alterados em trânsito. A criptografia previne leitura não-autorizada do conteúdo dos pacotes.

Estes serviços lhe permitem construir túneis seguros por redes não confiáveis. Tudo que passa através da rede não confiável é codificado pela máquina gateway IPSEC e é decodificado pelo gateway na outra ponta. O resultado é uma Virtual Private Network ou VPN, isto é, uma rede que é efetivamente privada, embora inclua máquinas em vários locais diferentes conectados pela Internet.

Baixando os pacotes

Todos os arquivos necessários podem ser obtidos em rpms.steamballoon.com/freeswan/. Baixe os seguintes pacotes:

~U O código-fonte do kernel com suporte a IPsec compatível com o seu sistema. Neste exemplo utilizamos o kernel-source-2.4.18-3ipsec.i386.rpm.
~U As ferramentas do FreeS/WAN: freeswan-1.97-0.i386.rpm.

Salve os arquivos em um diretório temporário, por exemplo, /tmp.

Compilando e instalando o novo Kernel

Instale o pacote contendo o código fonte do kernel (com o comando rpm -ivh kernel-source-2.4.18-3ipsec.i386.rpm) e vá até o diretório que o contém (geralmente /usr/src/linux-2.4). Configure o kernel (make menuconfig), não se esquecendo de habilitar as opções do IPsec, no menu Networking Options:

-> IP Security Protocol (FreeS/WAN IPSEC)
-> IPSEC: IP-in-IP encapsulation (tunnel mode)
-> IPSEC: Authentication Header
-> HMAC-MD5 authentication algorithm
-> HMAC-SHA1 authentication algorithm
-> IPSEC: Encapsulating Security Payload
-> 3DES encryption algorithm
-> IPSEC: IP Compression
-> IPSEC: Debugging Option

Aconselhamos compilar estar opções diretamente no Kernel. Em caso de dúvida, veja mais detalhes no documento The Linux Kernel HOWTO. Compile o kernel com o comando:

[root@faith linux-2.4]# make menuconfig dep clean bzImage_install modules modules_install

Não se esqueça de manter uma cópia de segurança do seu kernel atual para caso de falhas no novo kernel (veja lilo(8)ou grub(8)).

Instalando e configurando o FreeS/WAN

Com o novo kernel instalado, reinicialize o sistema e logue-se como root. Instale o pacote com as ferramentas do FreeS/WAN com o comando:

[root@faith tmp]# rpm -ivh freeswan-1.97-0.i386.rpm

Agora está tudo certo para podermos começar a configurar o FreeS/WAN. Todo o processo acontece no arquivo /etc/ipsec.conf. Daremos 2 exemplos de configuração: HOST-TO-HOST e VPN. Vamos começar com o exemplo HOST-TO-HOST. O FreeS/WAN considera uma das máquinas como leftit e a outra como rightit. Primeiro, precisamos das chaves RSA de ambas as máquinas. Na máquina left (que em nosso caso se chama faith), digite:

[root@faith /]# ipsec showhostkey ~Wleft
#RSA 2048 bits host data
leftrsasigkey=......

Agora, logamos na máquina right e fazemos:

[root@right /]# ipsec showhostkey ~Wright
#RSA 2048 bits host data
rightrsasigkey=......

Com estes dados, estamos prontos para montar a configuração. Você vai precisar saber os endereços IP das duas máquinas. Editando o /etc/ipsec.conf, você verá que existem três partes: a configuração geral (setup), a conexão padrão (default) e as conexões que você cria. setup e default ficariam assim:

config setup
interfaces="ipsec0=eth0"
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
uniqueids=yes
conn %default
keyingtries=0
disablearrivalcheck=no
authby=rsasig
leftrsasigkey=%dns
rightrsasigkey=%dns
type=transport

Agora vamos montar a conexão host-to-host.

A configuração é bem simples. Você já possui os dados leftrsasigkey e righttrsasigkey. Basta substituí-los no arquivo, por algo assim:

conn host-to-host
leftrsasigkey=......
rightrsasigkey=......
left=172.16.129.4
leftnexthop=
right=172.16.129.1
rightnexthop=
spi=0x300
esp=3des-md5-96
espenckey=0x0a5b47ab_fec52b0c_6200e505_28ebcbee_d79c3726_7d02a827
espauthkey=0x7767e921_3debaeef_66bc49ee_0ca71cb7
type=tunnel
auto=add

Depois, troque os endereços IP, e a configuração está pronta. Você deve copiar esse arquivo ipsec.conf para a máquina right. Depois, executamos os comandos a seguir nas duas máquinas:

[root@faith /]# service ipsec stop
[root@faith /]# service ipsec start

Escolha uma das máquinas para levantar a conexão. Nós escolhemos a faith (nossa left). Então, digite:

[root@faith /]# ipsec auto ~Wup host-to-host

Pronto, estamos com a conexão estabelecida!

Agora vamos fazer a conexão como uma VPN. A idéia é que tenhamos 2 máquinas, uma em cada lado, que funcionarão como gateways entre as 2 redes.

O esquema não muda muito em relação ao primeiro exemplo. Vamos precisar das chaves, e o resto é mais ou menos a mesma coisa.

conn vpn
leftrsasigkey=......
rightrsasigkey=......
left=200.200.200.200
leftsubnet=192.168.0.0/24
leftnexthop=
right=100.100.100.100
rightsubnet=192.168.1.0/24
rightnexthop=
spi=0x300
esp=3des-md5-96
espenckey=0x0a5b47ab_fec52b0c_6200e505_28ebcbee_d79c3726_7d02a827
espauthkey=0x7767e921_3debaeef_66bc49ee_0ca71cb7
type=tunnel
auto=add

Salve estas alterações, copie o /etc/ipsec.conf para as duas máquinas e digite os comandos abaixo em ambas:

[root@faith /]# service ipsec stop
[root@faith /]# service ipsec start

Agora, escolhemos uma das máquinas para levantar a conexão:

[root@faith /]# ipsec auto ~Wup vpn

Pronto, a conexão está estabelecida!

Possíveis problemas

Durante a instalação, tivemos problemas com filtros, iptables e NAT.

Primeiramente, existe um arquivo chamado rp_filter em /proc/sys/net/ipv4/conf/eth0/rp_filter e, talvez, haja outro em /proc/sys/net/ipv4/conf/ipsec0/rp_filter, que você deve configurar para 0 antes de levantar a conexão, como no exemplo:

[root@faith /]# echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
[root@faith /]# echo 0 > /proc/sys/net/ipv4/conf/ipsec0/rp_filter

O segundo comando acima foi necessário em uma máquina com o Mandrake Linux. Depois dos comandos, você pode levantar as conexões:

[root@faith /]# ipsec auto ~Wup vpn

ou:

[root@faith /]# ipsec auto ~Wup host-to-host

Outro problema que encontramos foi com o iptables. Verifique se o iptables não está filtrando a porta 500 TCP e UDP. Se estiver, providencie para que ele pare de filtrar estas portas. No nosso caso, desligamos o iptables durante os testes:

[root@faith /]# /etc/rc.d/init.d/iptables stop
[root@faith /]# ipsec auto ~Wup vpn

Nos campos de configuração indicados por leftnexthop e rightnexthop em /etc/ipsec.conf, costuma-se colocar o endereço de um gateway, que fica entre a máquina que está sendo configurada e a rede insegura, pela qual passará o túnel.

E uma dica: SEMPRE olhe os logs. Os logs são a alma do negócio. Através dos logs você consegue descobrir onde estão os erros e o que está acontecendo. São particularmente importantes os arquivos: /var/log/secure e /var/log/messages. Bom, é isso. Boa sorte!

Para saber mais:
HOW-TOs da Dextra Sistemas: www.dextra.com.br/opensource/howto.htm
FreeSWAN: www.freeswan.org
The Linux Kernel HOWTO: www.ibiblio.org/pub/Linux/docs/HOWTO/Kernel-HOWTO


Marcelo Feitoza Parisi Dextra Sistemas
www.dextra.com.br
info@dextra.com.br

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux