En este artículo voy a explicar cómo conectarse a una VPN Cisco (Cisco VPN 3000 Series Concentrator) desde un cliente GNU/Linux con CentOS 6.

Anteriormente, los usuarios de GNU/Linux debían conectarse a las VPN Cisco utilizando el problemático cliente propietario para Linux. Afortunadamente ahora existe el cliente para VPN Cisco vpnc, el cual permite conectar una workstation GNU/Linux contra firewalls PIX Cisco 3000 series.

El cliente vpnc para Cisco 3000 VPN Concentrator, crea una conexión IPSec en forma de túnel a través de un dispositivo de red local. Para ello utiliza el driver TUN/TAP (el mismo que utiliza OpenVPN).

Instalación de vpnc

Para instalar vpnc en CentOS 6 es necesario agregar el repositorio EPEL y luego ejecutar yum install vpnc.

Si no se desea agregar el repositorio EPEL, es posible instalar vpnc manualmente de la siguiente forma:

Cambiar a un directorio donde guardar el paquete. Personalmente utilizo el directorio ~/packages/ para llevar cuenta de los paquetes que instalo por fuera del manejador de paquetes:

[root@centos6 ~]# cd ~/packages/                                          

Descargar el paquete RPM desde el repositorio EPEL, actualmente está disponible la versión 0.5.3 (vpnc-0.5.3-4.el6.x86_64.rpm para 64 bit):

[root@centos6 packages]# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/vpnc-0.5.3-4.el6.x86_64.rpm
--2014-05-12 10:04:15--  http://dl.fedoraproject.org/pub/epel/6/x86_64/vpnc-0.5.3-4.el6.x86_64.rpm           
Resolving dl.fedoraproject.org... 209.132.181.25, 209.132.181.26, 209.132.181.27, ...                        
Connecting to dl.fedoraproject.org|209.132.181.25|:80... connected.                                          
HTTP request sent, awaiting response... 200 OK                                                               
Length: 83772 (82K) [application/x-rpm]                                                                      
Saving to: “vpnc-0.5.3-4.el6.x86_64.rpm”                                                                     

100%[============================================================================>] 83,772       113K/s   in 0.7s    

2014-05-12 10:04:16 (113 KB/s) - “vpnc-0.5.3-4.el6.x86_64.rpm” saved [83772/83772]

El paquete RPM ocupa aproximadamente 82 KBytes:

[root@centos6 packages]# ll vpn*
-rw-r--r-- 1 root root 82K Jul  5  2010 vpnc-0.5.3-4.el6.x86_64.rpm

Para instalar el paquete RPM, ejecutar directamente rpm -i:

[root@centos6 packages]# rpm -i vpnc-0.5.3-4.el6.x86_64.rpm     
warning: vpnc-0.5.3-4.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

También es posible descargar los fuentes para compilar e instalar manualmente desde vpnc - client for cisco vpn concentrator.

Una vez instalado, es posible comprobar que ahora existen los binarios vpnc y vpnc-disconnect:

[root@centos6 ~]# compgen -c vpnc
vpnc
vpnc-disconnect
[root@centos6 ~]# which vpnc vpnc-disconnect
/usr/sbin/vpnc
/usr/sbin/vpnc-disconnect

Configuración de vpnc

A modo de ejemplo, me voy a conectar a la VPN de "Pepe". El PIX Cisco 3000 VPN Concentrator tiene la dirección IP 192.168.34.13 y la VPN tiene el ID "TUNN-PEPE" y secreto "vpn-pepe". Para autenticarme utilizo el usuario "PEPE".

Es necesario definir un nuevo archivo de configuración para la VPN "Pepe" dentro del directorio /etc/vpnc/:

             
[root@centos6 packages]# nano /etc/vpnc/vpn_pepe.conf

Insertar el siguiente contenido:

IPSec gateway 192.168.34.13
IPSec ID TUNN-PEPE
IPSec secret vpn-pepe

Dentro del mismo archivo es posible "clavar" el nombre de usuario y contraseña de autenticación XAUTH con la siguiente sintaxis:

IPSec gateway 192.168.34.13
IPSec ID TUNN-PEPE
IPSec secret vpn-pepe
Xauth username PEPE
Xauth password pepe1234

Aunque no es recomendable desde el punto de vista de seguridad, ya que quedan las credenciales almacenadas en texto plano. Si es absolutamente necesario guardar el usuario y contraseña dentro del archivo de configuración, asegurarse de que los permisos de acceso en el archivo no permitan lectura para todo el mundo.

Si no se guarda el usuario y contraseña, el cliente lo solicita al iniciar la conexión. Para conectarse a la VPN "Pepe" definida en el archivo de configuración /etc/vpn_pepe.conf, ejecutar vpnc vpn_pepe:

                          
[root@centos6 packages]# vpnc vpn_pepe
Enter username for 192.168.34.13: PEPE
Enter password for PEPE@192.168.34.13:     
Connect Banner:                                 
| Esta es la red privada de Pepe.
| Si no es un usuario autorizado desconectese o muera.
| 

VPNC started in background (pid: 6354)...

Luego de autenticar exitosamente, el cliente crea una nueva interfaz TUN/TAP:

[root@centos6 packages]# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.11.12.78  P-t-P:10.11.12.78 Mask:255.255.255.255           
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  Metric:1                 
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                         
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                       
          collisions:0 txqueuelen:500                                                
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)                                     

Se observa que la interfaz tiene IP de la VPN, por lo que es posible hacer ping a cualquier host dentro de la misma para comprobar su funcionamiento:

[root@centos6 packages]# ping -c 5 10.11.12.5
PING 10.11.12.5 (10.11.12.5) 56(84) bytes of data.
64 bytes from 10.11.12.5: icmp_seq=1 ttl=63 time=24.6 ms
64 bytes from 10.11.12.5: icmp_seq=2 ttl=63 time=22.4 ms
64 bytes from 10.11.12.5: icmp_seq=3 ttl=63 time=23.0 ms
64 bytes from 10.11.12.5: icmp_seq=4 ttl=63 time=22.4 ms
64 bytes from 10.11.12.5: icmp_seq=5 ttl=63 time=23.0 ms

--- 10.11.12.5 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4029ms
rtt min/avg/max/mdev = 22.430/23.141/24.686/0.818 ms          

Para desconectarse de la VPN ejecutar:

                            
[root@centos6 packages]# vpnc-disconnect                
Terminating vpnc daemon (pid: 12148)

El dispositivo tun0 desaparece:

                          
[root@centos6 packages]# ifconfig tun0
tun0: error fetching interface information: Device not found


Tal vez pueda interesarte


Compartí este artículo