ï»
Interconectividad IPsec
Autor: kING_z <king@v2project.com>
Data: 29-Oct-01.
Rev: 01102901.
Este documento pretende mostrar a compatibilidade que possui o sistema FreeBSD com outros sistemas como por exemplo plataformas Windows >, nesta ocasi³ interconectividad a nível de protocolo cifrado de comunicações IPsec entre FreeBSD e PGPnet de Networks Associates em sua versi³ para uso pessoal.
Que é IPsec?
O mecanismo IPsec provê de uma transmisi³ segura para as comunicações da capa IP e a capa Socket, pode assegurar o tr¡ tanto IPv4 como IPv6.
IPsec pode ser usado para construir tuneles entre subredes (modo tunel) ou assegurar as comunicações entre duas maquinas diretamente (modo transporte) com a garantia de que os pacotes estan cifrados, autenticados e protegidos com anti-replay.
Por dise±#O
As cabeceiras do pacote permanecem intactas. Se não queres encriptar o trafico, podes usar IPsec num modo chamado AH (Cabeceira Autenticada). Neste modo o conteúdo do pacote não esta encriptado, mas os campos das cabeceiras são hasheados usando um algoritmo seguro, e se a± ao pacote uma cabeceira adicional que permite que a informaci³ do pacote seja autenticada. Neste documento se tratasse o modo transporte para a comunicacion entre duas m¡.
Implementaci³ do suporte IPsec em kernel
A± as seguintes lineas no fichero de configuraci³ do kernel
options IPSEC #IP security
options IPSEC_ESP #IP security (crypto; define w/ IPSEC)
options IPSEC_DEBUG #debug for IP security
Para instruções de como criar um novo kernel, dirigir-se à seccion “Configurando o Kernel em FreeBSD” do handbook.
Implementaci³ do meio seguro
Partimos da idéia de que nossa rede consta de duas maquinas
FreeBSD: 192.168.1.1
Windows: 192.168.1.2
Para poder prover de um sistema autom¡ para o intercâmbio de chaves entre as duas m¡. precisa-se o pacote racoon que se pode encontrar nos ports (/usr/ports/security/racoon), para nosso prop³ não é necessário modificar o fichero de configuracion (/usr/local/etc/racoon/racoon.conf) basta com a± a contrase±#A
Exemplo do fichero psk.txt
# /usr/local/etc/racoon/psk.txt
# IPv4/v6 addresses
#
192.168.1.2 eldemonio
O fichero de claves deve estar protegido com permissões 0600 de não ter as permissões adequadas racoon não arrancar¡:
# chown root.wheel /usr/local/etc/racoon/psk.txt
# chmod 0600 /usr/local/etc/racoon/psk.txt
Para que o daemon arranque quando o sistema se inicie, pode-se usar um script como o seguinte no fichero (/etc/rc.local).
#!/bin/sh
#
# /etc/rc.local
#
# racoon key exchange server
if %[ -x /usr/local/sbin/racoon ]; then
echo -n “racoon "
/usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf
fi
Agora são necessários os passos nos que se requer conexion autenticada e encriptada desde e para as ips das maquinas anteriormente definidas, para fazer isso há que a± as seguintes lineas ao fichero (/etc/ipsec.conf), e fazê-las ativas mediante
setkey -f /etc/ipsec.conf
Fichero de exemplo:
/etc/ipsec.conf
spdadd 192.168.1.1 192.168.1.2 any -P out ipsec esp/transport//require ;
spdadd 192.168.1.2 192.168.1.1 any -P in ipsec esp/transport//require ;
Desde este momento a maquina FreeBSD não aceitasse nenhuma conexion que não tenha sido autenticada e encriptada mediante a clave anteriormente descrita.
Para que a configuracion do ipsec fica ativa desde o arranque é necessário a± no /etc/rc.conf as seguintes l:
ipsec_enable="YES” # Set to YES to run setkey on ipsec_file
ipsec_file="/etc/ipsec.conf” # Name of config file for setkey
Configuracion do cliente
Como já se comentou antes o cliente que utilizaremos sera PGPnet que forma parte do pacote PGP freeware 7.03 que se pode descarregar gratuitamente de http://www.pgpi.com.
Tela About:
Tela principal do PGPnet:
Para a correta comunicacion com o sistema de intercâmbio de chaves e o suporte IPsec da maquina FreeBSD a configuracion dos algoritmos de encriptacion do PGPnet devem ficar como o seguinte:
Agora há que a± um host ao que conectar (usaremos o modo experto):
Ficando a ventada de estado como o seguinte:
Muito importante: para este tipo de provas se recomenda se façam contra uma ip virtual do servo FreeBSD, porque caso contrário ante um erro pode fica incomunicado totalmente.
Agora qualquer conexion para a ip 192.168.1.1 (Maquina FreeBSD) lanzar¡ #el