Google
 

martes, 10 de junio de 2008

Openswan: ipsec en linux (II de III)

Vamos a seguir con Ipsec en Linux, de los tres modos de autenticación ya vimos el de utilizar claves compartidas.

Ahora vamos a utilizar criptografía asimétrica de la mano de RSA. Como en la anterior ocasión hay que configurar los ficheros ipsec.conf e ipsec.secrets.
Comencemos por ipsec.conf, añadimos al final del fichero una nueva conexión:

conn linux-linux-RSA
left=192.168.1.100
leftid=@laptop.dbx
# RSA 2192 bits dlaptop Tue May 13 20:10:44 2008
leftrsasigkey=0sAQNczAL[..]fsrX9K0rMaLwIApKd5mVjAAMWJ
right=192.168.1.2
right=@xbase.dbx
# RSA 2192 bits david-desktop Tue May 13 20:17:55 2008
rightrsasigkey=0sAQNl9vOb[..]QvbpgolCJIzhnfStWhvwsArsZKd8L
auto=add


(CUIDADO: todas la líneas referentes a una conexión necesitan un tabulado, es decir, desde la línea left=192... hasta la última auto... necesitan ser tabuladas)

Como veis ya no se indica el modo de autenticación ( authby ), pues por defecto openswan toma RSA, y se han añadido las claves públicas de los extremos del túnel.

Para generar las claves se ejecuta en cada máquina:
#:/>ipsec newhostkey --output - >> /etc/ipsec.secrets

Para ver la clave pública de lado izquierdo se ejecuta en la máquina:
#:/>ipsec showhostkey --left
# RSA 2192 bits dlaptop Tue May 13 20:10:44 2008
leftrsasigkey=0sAQNczAL[..]fsrX9K0rMaLwIApKd5mVjAAMWJ


Y análogo para la máquina de la derecha:
#:/>ipsec showhostkey --right
# RSA 2192 bits david-desktop Tue May 13 20:17:55 2008
rightrsasigkey=0sAQNl9vOb[..]QvbpgolCJIzhnfStWhvwsArsZKd8L



Al igual que con claves compartidas, esta configuración es para dos máquinas que estén en la misma red o que se vean entre sí. Si quisiéramos conectar dos redes mediante Internet habría que añadir, al fichero ipsec.conf:

leftnexthop=%defaultroute
rightnexthop=%defaultroute

El fichero ipsec.secrets ya lo hemos configurado al crear las claves, por lo que sólo nos queda copiar el fichero ipsec.conf en los extremos del túnel.

Como siempre habrá que hacer, reiniciamos el servicio ipsec:
#:/>/etc/init.d/ipsec restart

Levantamos el túnel linux-linux-RSA:
#:/>ipsec auto --up linux-linux-RSA
104 "linux-linux-RSA" #1: STATE_MAIN_I1: initiate
003 "linux-linux-RSA" #1: ignoring unknown Vendor ID payload [4f456c4c4f5d5264574e5244]
003 "linux-linux-RSA" #1: received Vendor ID payload [Dead Peer Detection]
003 "linux-linux-RSA" #1: received Vendor ID payload [RFC 3947] method set to=110
106 "linux-linux-RSA" #1: STATE_MAIN_I2: sent MI2, expecting MR2
003 "linux-linux-RSA" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): no NAT detected
108 "linux-linux-RSA" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "linux-linux-RSA" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536}
117 "linux-linux-RSA" #2: STATE_QUICK_I1: initiate
004 "linux-linux-RSA" #2: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0xa4853f99 <0x32508ece xfrm="" natd="none" dpd="none}">

Podemos comprobar que todo ha ido bien haciendo un ping y viendo los paquetes que se envian con algún analizador de red como wireshark:
#:/>ping 192.168.1.100
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=1.16 ms


Como se puede ver, los paquetes van cifrados de extremo a extremo.

[Aclaración] Cuando hablo de extremos del túnel, son las máquinas desde y hasta donde va a ir cifrada la conexión. [/Aclaración]

David