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