How to
How-to IPSEC FreeS/WAN
Instalando e Configurando o FreeS/WAN em RedHat 7.3
11/11/2002
1) Download dos arquivos necessários
Os arquivos necessários a esta instalação podem ser obtidos em
"http://rpms.steamballoon.com/freeswan/". Nós fizemos os seguintes
downloads:
- O source do kernel com suporte a IPsec compatível com o seu sistema.
Aconselhamos: "kernel-source-2.4.18-3ipsec.i386.rpm"
- As ferramentas do FreeS/WAN: "freeswan-1.97-0.i386.rpm"
Salvamos os arquivos em um diretório temporário, por exemplo "/tmp".
2) Extração do source do kernel
[root@faith tmp]# rpm -ivh kernel-source-2.4.18-3ipsec.i386.rpm
[root@faith tmp]# cd /usr/src/linux-2.4/
3) Compilação do kernel
Compilamos o kernel como fazemos usualmente, sem esquecer de habilitar as opções de IPsec dele.
Aqui segue a lista das opções do IPsec que ficam 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 colocar suporte nativo para essas opções.
Veja detalhes sobre compilação do kernel em "The Linux Kernel HOWTO"
"http://www.ibiblio.org/pub/Linux/docs/HOWTO/Kernel-HOWTO".
[root@faith linux-2.4]# make menuconfig
[root@faith linux-2.4]# make dep
[root@faith linux-2.4]# make clean
[root@faith linux-2.4]# make bzImage install
[root@faith linux-2.4]# make modules
[root@faith linux-2.4]# make modules_install
Não se esqueça de manter uma cópia do seu kernel atual para caso de
falhas no novo kernel (veja "lilo(8)" ou "grub(8)").
4) Reinicialização do sistema
[root@faith linux-2.4]# init 6
Logue como root ao entrar no sistema novamente.
5) Instalação das ferramentas do FreeS/WAN
[root@faith tmp]# rpm -ivh freeswan-1.97-0.i386.rpm
6) Configuração do FreeS/WAN
Agora está tudo certo para que possamos começar a configurar o
FreeS/WAN. A configuração toda acontece no arquivo "/etc/ipsec.conf".
Daremos 2 exemplos de configuração: HOST-TO-HOST e VPN.
O FreeS/WAN considera uma máquina como sendo left e a outra como sendo right.
Vamos começar com o exemplo HOST-TO-HOST.
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 --left
#RSA 2048 bits host data
leftrsasigkey=...<aqui vem a chave>...
[root@faith /]#
Agora logamos na máquina right, e fazemos:
[root@right /]# ipsec showhostkey --right
#RSA 2048 bits host data
rightrsasigkey=...<aqui vem a chave>...
[root@right /]#
Com estes dados, estamos prontos para montar a configuração. Você vai
precisar saber os IPs das duas máquinas.
Editando o /etc/ipsec.conf, você verá que existem 3 partes: o setup
geral, a conexão default e as conexões que você cria. A parte do 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. Como no exemplo:
+--------+
+--------+
| Host 1 |<-------INTERNET------->| Host 2 |
+--------+
+--------+
|
|
172.16.129.4
172.16.129.1
A configuração é bem simples:
Você já possui os dados leftrsasigkey e rightrsasigkey. Basta substituir no arquivo, por algo assim:
conn host-to-host
leftrsasigkey=...<chave>...
rightrsasigkey=...<chave>...
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 ipsec.conf para a máquina right. Depois executamos os comandos a seguir:
[root@faith /]# service ipsec stop
[root@faith /]# service ipsec start
E depois, na outra máquina, fazemos a mesma coisa:
[root@right /]# service ipsec stop
[root@right /]# service ipsec start
Escolha uma das máquinas para levantar a conexão. Nós escolhemos a faith. Então:
[root@faith /]# ipsec auto --up 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. Exemplo:
+-------+
+------+
+-------+ +-------+
| rede1 |<--->| GW 1 |<----INTERNET---->| GW 2
|<--->| rede2 |
+-------+
+------+
+-------+ +-------+
| |
|
| |
|
| |
200.200.200.200 100.100.100.100
|
|
|
192.168.0.1
192.168.1.1 |
|
|
192.168.0.0/24
192.168.1.0/24
O esquema não muda muito em relação ao primeiro. Vamos precisar das
chaves, e o resto é mais ou menos a mesma coisa.
conn vpn
leftrsasigkey=...<chave>...
rightrsasigkey=...<chave>...
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 nas 2 máquinas e vamos aos comandos:
[root@faith /]# service ipsec stop
[root@faith /]# service ipsec start
E depois, como fizemos anteriormente, temos que dar estes comandos na outra máquina:
[root@right /]# service ipsec stop
[root@right /]# service ipsec start
Agora escolhemos uma das máquinas para levantar a conexão:
[root@faith /]# ipsec auto --up vpn
Pronto, a conexão está estabelecida!
7) 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 tenha outro também em
/proc/sys/net/ipv4/conf/ipsec0/rp_filter, que você deve setar 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 (tivemos que fazer isso
num Mandrake)
Depois dos comandos, você pode levantar as conexões:
[root@faith /]# ipsec auto --up vpn
ou:
[root@faith /]# ipsec auto --up host-to-host
Outro problema que encontramos foi com o iptables. Verifique se o
iptables não esta filtrando a porta 500 UDP e TCP. Se estiver,
providencie para que ele pare de filtrar estas portas. No nosso caso,
desliguamos o iptables no teste:
[root@faith /]# /etc/rc.d/init.d/iptables stop
[root@faith /]# ipsec auto --up vpn
Outro ponto importantíssimo que não tivemos a oportunidade de testar é o seguinte:
existem boatos de que é um tanto complicado configurar um GW IPsec com NAT. Costuma acontecer confusão
demais nisso. Se tivermos a oportunidade de testar,
publicaremos algo.
SEMPRE olhe os logs. Os logs são a alma do negócio. Através dos logs você consegue descobrir aonde estão os erros e o que está acontecendo. A dica é: /var/log/secure e /var/log/messages .
Nos
campos de configuração indicados por leftnexthop e rightnexthop,
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 tunel.
Bom, é isso. Boa sorte!
Dextra Sistemas

