Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin............................................................................... 1
Protocolos............................................................................... 1
Instalacin ................................................................................. 2
GNU/Linux .............................................................................. 2
Windows XP............................................................................. 4
Configuracin ............................................................................. 4
Punto a Punto .......................................................................... 5
Cliente Remoto (Road Warrior) .................................................... 30
Consideraciones de Seguridad y Compatibilidad ................................... 49
Alternativas .............................................................................. 50
Introduccin
En este documento seguiremos paso a paso las configuraciones necesarias para
cifrar el contenido de las comunicaciones entre dos equipos conectados a
Internet. Tomaremos en cuenta dos escenarios, que se detallarn ms
adelante: el de dos equipos que quieren cifrar todo el trfico que hay entre
ellos, y el de un usuario remoto que debe conectarse a una red de nuestra
organizacin.
Se describirn las configuraciones para el sistema operativo GNU/Linux, para
el primer esquema como uno de los extremos, y para el segundo como la
Puerta de entrada a nuestra red. Todos los ejemplos estarn basados en la
distribucin Debian, versin Sarge (o Testing), con Kernel verson 2.6.
Para el otro extremo, utilizaremos Windows XP. De todas maneras, la mayora
de los pasos tambin podrn ser seguidos sin modificaciones en Windows 2000.
Pero primero, veamos un poco de qu se trata IPSec.
Protocolos
IPsec
El cifrado que abordaremos en este documento se basa en el protocolo IPSec,
que consiste en la reimplementacin para IPV4 de las medidas de seguridad
originalmente diseadas para IPV6. IPSec define dos protocolos:
AH
Authentication Header, consiste en incluir en los paquetes enviados una
firma que permitir verificar su autenticidad. Este protocolo utiliza el
nmero de protocolo IP 51. Y por otro lado,
ESP
Encapsutaled Security Payload, que servir para cifrar todo el contenido de
los paquetes IP (salvo su IP origen y destino, por razones que dejamos a la
imaginacin del lector), adems de poder verificar su autenticidad. A su vez,
este protocolo, posee dos modos principales de operacin: El modo
transporte, donde simplemente es cifrado el contenido de los paquetes que
intercambian dos extremos, y el modo tunnel, donde in paquete IP es
encapsulado dentro de otro, creando lo que normalmente se conoce como un
tnel (Por ejemplo, utilizando los protocolso IPIP o GRE). El protocolo ESP
utiliza el nmero de protocolo IP 50.
Tanto AH como ESP son Estndares de Internet, publicados en las RFC 2402 y
2406 respectivamente.
Otros dos protocolos a tener en cuenta sern:
IKE
Internet Key Exchange es el protocolo de negociar, en una primera fase, la
autenticacin de los extremos. Esta etapa suporta diversos medios de
autenticacin, por ejemplo claves compartidas y certificados X.509, que son
los que utilizaremos. A su vez, soporta dos diferentes modos de inicializacin:
el modo main, y el modo aggressive. Este ltimo tiene la ventaja de ser
mucho ms eficiente en velocidad y trfico, pero tiene la desventade de ser
vulnerable a ataques de man in the middle cuando se utiliza junto con
claves compartidas.
En una segunda etapa, se negocian los protocolos de cifrado y autenticacin y
las respectivas claves que se utilizarn durante la transmisin de datos.
En estas dos etapas del protocolo IKE, ambos extremos utilizan el puerto
500/UDP para comunicarse entre s.
Y por ltimo, nombraremos al siguiente protocolo:
Nat-T
Originalmente IPSec no fue pensado para convivir con NAT. Es por ello que
posteriormente se defini el protocolo Nat-T, o Nat-Trasversal. Este
protocolo, que recientemente pas de la etapa de Internet Draft a
Proposed Standard, facilita la convivencia de IPSec con la traduccin de
direcciones.
Instalacin
GNU/Linux
Como mencionamos previamente, la presente gua se basa en dos condiciones:
1. Kernel 2.6 de Linux.
2. Distribucin Debian.
Comenzaremos con la instalacin de los paquetes necesarios para controlar
las funciones de IPSec del Kernel. En este caso utilizamos el software racoon,
acompaado por el paquete ipsec tools:
vpnserver:~# apt-get install racoon ipsec-tools
2
Windows XP
Windows XP ya tiene instalado todo el software necesario para la
configuracin de tneles IPSec, por lo que nos limitaremos a verificar que el
servicio que controla dicha funcionalidad se est ejecutando. Para ello,
dentro de Panel de Control, Herramientas Administrativas, Servicios, nos
aseguramos que el servico IPSec est configurado para arrancar de manera
automtica (Figura 3).
Figura 3 Servicio IPSec
Configuracin
Vamos a revisar los dos esquemas ms comunes de realizacin de tneles. En
el primero de ellos, utilizaremos cifrado IPSec entre todos los paquetes IP que
intercambien dos equipos (Figura 4). Para ello utilizaremos el protocolo ESP
de IPSec, en el modo transporte. Para este caso revisaremos la configuracin
de los extremos tanto utilizando GNU/Linux como Windows. Estas
combinaciones son intercambiables, y servirn tanto para utilizarse
combinadas, como con ambos extremos utilizando el mismo sistema
operativo.
Punto a Punto
GNU/Linux
Comenzaremos por configurar un extremo de la comunicacin cifrada
utilizando GNU/Linux. El extremo a configurar ser el Extremo A mencionado
en la Figura 4.
Comenzaremos con editar el archivo /etc/racoon/racoon-tool.conf:
vpnserver:~# cd /etc/racoon
vpnserver:/etc/racoon# vi racoon-tool.conf
peer(200.5.6.7):
exchange_mode: main
hash_algorithm[0]: sha1
encryption_algorithm[0]: 3des
authentication_method[0]: pre_shared_key
connection(linux-winxp):
src_ip: 200.2.3.4
dst_ip: 200.5.6.7
admin_status: enabled
authentication_algorithm: hmac_sha1
encryption_algorithm: 3des
pfs_group: modp1024
De esta manera hemos definido las siguientes propiedades para el cifrado
entre los extremos A y B:
Modo de Inicio de Sesin IPSec: main. Este modo es preferible a la alternativa
aggressive debido a la forma insegura en la que se eligen las claves de sesin
en este ltimo.
Algoritmos triple DES y SHA-1
Mtodo de autenticacin: clave compartida
Utilizacin de PFS1.
Slo resta configurar la clave que compartirn ambos extremos para
reconocerse entre s:
vpnserver:/etc/racoon# vi psk.txt
192.168.31.130 La eleccin de esta clave debe ser especialmente
cuidadosa. Una mala eleccin puede causar que la seguridad no sea
efectiva.
La primera cadena de texto que aparezca en cada lnea corresponder al
identificador del extremo en cuestin, en este caso el nmero IP del extremo
B. El resto de la lnea, incluyendo los espacios, corresponder a la clave
compartida entre ambos extremos. Como lo dice la misma clave, la eleccin
de la misma debe ser extremadamente cuidadosa, y en lo posible con una
importante cantidad de caracteres aleatorios para asegurar la eficiencia de la
misma.
Para asegurarnos el correcto funcionamiento de la nueva configuracin,
reiniciaremos el servicio IPSec:
vpnserver:/etc/racoon# /etc/init.d/racoon restart
Windows XP
Para Configurar Windows XP, el proceso es un poco ms largo. Comenzaremos
ejecutando el comando mmc desde Inicio / Ejecutar.
PFS: Perfect Forward Secrecy. Esta propiedad asegura que las claves IPSec utilizadas no son
derivadas de ninguna otra clave. Esto asegurar que si alguien logra vulnerar una clave, no
podr utilizarla para descifrar el contenido de ninguna otra asociacin IPSec.
Presionamos Add
10
11
En este momento, aunque no es indispensable, podemos borrar las tres polticas por defecto, y
slo veremos en la siguiente pantalla la poltica recin creada por nosotros:
12
Mediante un doble click en la poltica recin creada, podremos editar sus propiedades:
13
Avanzada
14
De los cuatro mtodos incluidos por defecto, slo conservaremos el que utiliza los algoritmos
triple DES y SHA-1, borrando los tres restantes:
15
16
Dentro de la nueva regla, tendremos que agregar una nueva lista de filtrado.
Completamos los datos descriptivos de la nueva regla, y agregamos un filtro mediante el botn
Add.
17
Completamos los datos de la conexin, sin olvidarnosde marcar el cuadro Mirrored.., lo que
har que tanto el trfico de ida como el devuelta concuerde con esta regla.
Al apretar OK, podremos ver el filtro que acabamos de crear,
18
19
A continuacin, definiremos que accin se tomar con los paquetes que concuerden con esta
regla:
20
21
22
23
24
Ser tambin conveniente incluir un nombre descriptivo por el cual podamos identificar esta
accin.
25
26
Kerberos no est entre nuestros planes, por lo que utilizaremos el botn Add
27
Y seleccionamos el mtodo de clave compartida. Es muy importante que la clave ingresada sea
exactamente igual a la ingresada en el archivo psk.txt en Linux para evitar problemas
engorrosos de descubrir.
28
29
El ltimo paso restante para finalizar esta configuracin consiste en Aplicar la poltica que
acabamos de crear mediante el men Action / Assign.
Comprobacin
La mejor manera de comprobar el correcto funcionamiento es realizando un
ping desde el equipo windows. En un principio, el ping fallar con el mensaje
Negociando Seguridad IP, pero seguidamente comenzar a funcionar. Si
realizamos el ping desde el host linux, debemos tener la precaucin de
permitir el tipo de paquetes correspondientes en el Firewall de Windows XP
para que funcione correctamente.
GNU/Linux
Como mencionamos en la seccin anterior, utilizaremos L2TP, por lo que
tendremos que instalar el paquete correspondiente a este servicio. El nombre
del paquete para GNU/Linux Debian es l2tpd, y es recomendable utilizar una
30
31
32
33
/etc/racoon/certs/
root 1054 2005-04-08 07:29 cacert.pem
root 1675 2005-04-08 07:29 vpnpriv.pem
root 4072 2005-04-08 07:29 vpnpub.pem
/etc/racoon/certs/
root
10 2005-04-08 07:29 34e7346a.0 -> vpnpub.pem
root 1054 2005-04-08 07:29 cacert.pem
root
10 2005-04-08 07:29 f79292af.0 -> cacert.pem
root 1675 2005-04-08 07:29 vpnpriv.pem
root 4072 2005-04-08 07:29 vpnpub.pem
/etc/racoon/certs/
root
10 2005-04-08 07:29 34e7346a.0 -> vpnpub.pem
root 1054 2005-04-08 07:29 cacert.pem
root
10 2005-04-08 07:29 f79292af.0 -> cacert.pem
root 1675 2005-04-08 07:29 vpnpriv.pem
root 4072 2005-04-08 07:29 vpnpub.pem
vpnserver:~#
34
local ip = 10.1.0.2
require chap = yes
refuse pap = yes
require authentication = yes
name = VPNServer
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes
Aqu definimos, como vemos en la Figura 6, el IP donde escuchar el servidor
L2TP (el IP externo de nuestro concentrador de tneles), el rango de IPs que
sern asignados a los clientes remotos, y el IP correspondiente al extremo del
tnel residente en el concentrador.
Como veremos en la configuracin del cliente Windows XP, el certificado al
asignado al cliente se corresponder con el equipo, seguramente una
notebook, y no con el usuario en s, por lo tanto utilizaremos un nombre de
usuario y contrasea para autenticarlo. Si bien el trfico ya est cifrado y no
es necesario, utilizaremos el protocolo MS-Chap V2 para el intercambio de la
clave.
vpnserver:~# vi /etc/ppp/options.l2tpd
+mschap-v2
mtu 1400
mru 1400
Adems, y para evitar inconvenientes en la transmisin de paquetes debido a
los mltiples encapsulamientos, disminuimos el tamao mximos de
transmisin y recepcin de frames.
En el archivo /etc/ppp/chap-secrets configuramos los usuarios que se
conectarn, con sus respectivos passwords, y el rango de IPs desde el cual
pueden utilizarlos (el rango asignado a los clientes en la configuracin de
l2tpd).
vpnserver:~# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret
IP addresses
tomas
*
"ll&%$s#-.32"
10.1.0.128/26
Por ltimo, si queremos que los paquetes del cliente lleguen a nuestra red
interna, deber estar habilitado el ruteo en el concentrador de tneles. Para
activarlo inmediatamente utilizaremos el siguiente comando:
vpnserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
35
Windows
De la misma manera que lo hicimos para las polticas IP, agregamos el mdulo
de Certificados utilizando Start / Run / mmc:
36
37
38
39
40
41
42
43
44
45
46
47
48
Consideraciones de Seguridad y
Compatibilidad
A continuacin, destacaremos algunos detalles importantes a tener en cuenta.
Aggressive Mode
Este modo de IKE, que no utilizamos en este caso, no debe ser utilizado en
conjuncin con claves compartidas (PSK), ya que permitir ataques que
podrn ver y modificar de manera inadvertida el trfico cifrado.
PFS
Esta propiedad puede ser utilizada tanto en la etapa de IKE, como en la de
transmisin de datos, y nos asegurar que cualquier clave que se pueda haber
filtrado por error, u obtenido por algn otro mtodo (por ejemplo fuerza
bruta), no sirva para descifrar el contenido de una conexin. En el ayudante
de configuracin de conexiones de red de Windows XP utilizado para el
segundo esquema de esta gua, no existe la posibilidad de habilitarlo (por
razones desconocidas).
PSK
Las claves compartidas son un mtodo vlido de autenticacin cuando slo dos
extremos la conocen, y adems se utilizan claves suficientemente fuertes.
Las principales desventajas que posee son, que no son seguras, por un
problema de diseo, cuando se utilizan junto al aggressive mode, y que en
el caso de ser compartidas por ms de un extremo (por ejemplo, si las
queremos utilizar para usuarios remotos), no podemos identificar quin de
los usuarios es el que se conecta, y peor an, si no se utiliza PFS, se corre
el riesgo de que un usuario malicioso utilice la clave para ver o modificar
conexiones ajenas.
NAT
Ninguno de los dos esquemas presentados funciona correctamente con NAT.
Para que el primer esquema funcione con Nat-t, debera modificarse la
configuracin para utilizar el modo tunnel en lugar del modo transporte, y
aplicar Nat-t. Sin embargo, la configuracin de un host Windows sera un
tanto ms compleja, y consideramos que el uso de NAT no es el caso ms
comn para este esquema.
En el segundo esquema, el cliente de Windows utiliza el modo transporte, por
lo que no podr utilizarse racoon, ya que hasta el da de hoy slo implementa
(correctamente) nat-t en modo tunnel. Por este motivo, en el caso de
necesitar utilizar NAT, se deber recurrir a otra implementacin de IPSec, por
ejemplo, Openswan.
49
Firewalls
En la mayora de los casos, un firewall instalado entre dos extremos que
intenten comunicarse por los medios descriptos en esta gua no permitir la
conexin. Para que sta pueda realizarse, habr que configurarlo para que
permita el paso del protocolo 50(ESP), y del puerto 500/UDP (IKE).
Alternativas
En esta seccin, presentamos otras implementaciones que podran utilizarse
para ste u otro tipo de tneles cifrados.
OpenVPN
OpenVPN es una implementacin multiplataforma que utiliza el protocolo
SSL/TLS para encapsular paquetes IP dentro de conexiones TCP o paquetes
UDP. Es un protocolo robusto y con implementaciones en varios sistemas
operativos. Tiene un cliente que puede bajarse en modo binario para ser
utilizado en Windows 2000/XP.
SSH
El protocolo SSH, usualmente utilizado como reemplazo seguro del telnet,
tambin tiene la capacidad de encapsular otras conexiones. Si bien no puede
considerarse exactamente un tnel, servir para encapsular conexiones
individuales.
Openswan
OpenSwan es una alternativa a la implementacin nativa de IPSec del kernel
2.6. Soporta Nat-t tanto en modo transport como en modo tunnel.
Recientemente fue incorporado a la versin unstable de Debian, y se espera
que en un futuro alcance la versin testing. A continuacin, se incluye la
configuracin necesaria para utilizar OpenSwan en el esquema nmero 2 en
lugar de racoon:
Colocar el certificado de la CA (cacert.pem) en el directorio
/etc/ipsec.d/cacerts.
Colocar la clave pblica del servidor (vpnpub.pem) en el directorio
/etc/ipsec.d/certs
Colocar la clave privada del servidor (vpnpriv.pem) en el directorio
/etc/ipsec.d/private.
Colocar la siguiente entrada en el archivo /etc/ipsec.secrets:
: RSA vpnpriv.pem
Utilizar la siguiente configuracin en el archivo /etc/ipsec.conf:
config setup
nat_traversal=yes
conn roadwarrior
50
authby=rsasig
pfs=no
left=%defaultroute
leftcert=vpnpub.pem
leftprotoport=17/1701
right=%any
rightrsasigkey=%cert
rightid="C=AR, ST=BA, O=ArCERT, CN=*, E=*"
rightprotoport=17/1701
auto=add
reemplazando el parmetro rightid por las propiedades de los certificados
que queremos permitir, o simplemente eliminndolo para aceptar todos
los certificados emitidos por la CA.
Y por ltimo, y muy importante, no usen debug en la versin 2.3.0 de
Openswan porque perdern preciadas horas intentando dilucidar por qu
razn la conexin no se realiza con xito, hasta descubrir que es el mismo
debug quien la impide .
51