You are on page 1of 3

COMO CREAR UNA VPN CON SSH Y PPP Red de ejemplo

abc.ejemplo.com 208.8.8.8 xyz.ejemplo.com 207.7.7.7

PC1 192.168.1.10

PC4 192.168.2.15

lima.ejemplo.com 192.168.1.0/24

ABC Servidor VPN eth0 eth0

XYZ Cliente VPN

arequipa.ejemplo.com 192.168.2.0/24

PC2 ppp0 El servidor sshd escucha en el puerto 9876 SSH 192.168.254.254

Internet
ppp0 VPN SSH 192.168.254.253

PC5

PC3 El servidor sshd ABC escucha en el puerto 9876 las peticiones salientes de XYZ y lanza pppd para establecer la conexin de red.

PC6 El proceso pppd de XYZ se conecta con ABC a traves de ssh.

Configuracin manual PPP sobre SSH 1. Instalar y verificar PPP Verificar si PPP est instalado en nuestro cliente y servidor: En deban:
root@debian$ dpkg l ppp | grep ppp

En Red Hat:
root@redhat# rpm q ppp

La versin esperada debera ser mnimo 2.3.7 o superior. 2. Activar redireccionamiento IP


root# echo 1 > /proc/sys/net/ipv4/ip_forward

para el caso de conexiones host-host. 3. Creacin de usuarios VPN. Se crear el usuario que ejecutara los comandos VPN en ambos extremos.
Root# groupadd sshvpn Root# useradd m d /opt/ssh-vpn c SSH VPN User g sshvpn sshvpn

El comando useradd crea usuario con una contrasea bloqueada de forma predeterminada, asegurandose de que nadie puede conectarse con esa cuenta. El directorio base que utilizarnos para este usuario es /opt/ssh-vpn. Convenciones de nombres Los dos host a utilizarse en la implementacin se denominan respectivamente: cliente VPN y servidor VPN. El cliente VPN utilizara SSH para conectar con el servidor VPN. En caso de haber de configurar ms de una VPN entonces se podra diferenciarlas numerndola como VPNn.

4. Establecer inicio de sesin SSH sin contrasea. Nuestro usuario VPN del cliente VPN debe poder conectarse con el servidor VPN sin contrasea. Tenemos dos mtodos estndar para conseguirlo, la autenticacin basada en host y la autenticacin de identidad SSH. La autenticacin basada en host significa el establecimiento de una relacin de confianza entre hosts; en esta relacin, cualquier usuario de un host (cliente) puede conectar con el otro host (servidor) sin contrasea. Una identidad SSH es, sencillamente, un par de claves pblica-privada que se hospeda en el cliente SSH. Colocando la clave publica de esa identidad en el archivo $HOME/.ssh/authorized_keys del servidor SSH, cualquier usuario que tenga identidad correcta puede conectarse con el servidor. De este modo, un modelo de confianza que utilice una identidad SSH permitir al usuario VPN del cliente conectarse con el servidor sin contrasea. 5. Configurar la identidad SSH Crear la identidad SSH en el cliente VPN:
root@xyz-cliente# su sshvpn sshvpn@xyz-cliente$ pwd sshvpn@cliente$ mkdir .ssh sshvpn@cliente$ chmod 700 .ssh

Si se utiliza el protocolo SSH1, ejecutar:


sshvpn@xyz-cliente$ ssh-keygen t rsa1 N

Si se va a utilizar el protocolo SSH2, ejecutar:


sshvpn@xyz-cliente$ ssh-keygen t dsa N

Podemos verificar la parte publica de la identidad visualizando la versin .pub de nuestra clave:
sshvpn@xyz-cliente$ cat .ssh/identify.pub sshvpn@xyz-cliente$ cat .ssh/id_dsa.pub # para SSH1 # para SSH2

En el servidor creamos el directorio .ssh de sshvpn como sigue:


root@abc-server# su sshvpn sshvpn@abc-server$ mkdir .ssh sshvpn@abc-server$ chmod 700 .ssh

Ahora debemos copiar esta clave publica en el servidor. Podemos utilizar el mtodo que queramos. Si utilizamos SSH1, copiamos este archivop en ~sshvpn/.ssh/authorized_keys en el servidor VPN. Si estamos utilixando SSH2, copiamos este arcvhivo en ~sshvpn/.ssh/authorized_keys2 en el servidor VPN. Para SSH1:
sshvpn@abc-server$ ls l /opt/ssh-vpn/.ssh sshvpn@abc-server$ cat /opt/ssh-vpn/.ssh/authorized_keys

Para SSH2:

sshvpn@abc-server$ ls l /opt/ssh-vpn/.ssh sshvpn@abc-server$ cat /opt/ssh-vpn/.ssh/authorizzed_keys2

Aceptar y verificar la clave de host SSH del servidor. Para conectar con el servidor por primera vez haremos los siguiente:
sshvpn@xyz-cliente$ ssh server.ejemplo.com

Responder yes a la pregunta generada por la ejecucin del comando. Finalmente debe producirse la coenxion con el servidor sin haber introducido ninguna contrasea y habiendo guardado una copia de la clave de host SSH del servidor en el cliente. 6. Para verificar la clave de host de servidor:
sshvpn@xyz-cliente$ head -1 $HOME/.ssh/known_hosts

La clave contenida en este archivo debe coincidir con la clave publica del servidor. Esta le encontraremos ubicada en uno de los archivos siguientes:
/etc/ssh/ssh_host_key.pub /etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_host_dsa_key.pub Para verificar un registro sin contrasea sshvpn@xyz-cliente$ ssh server echo `hostname` sshvpn@xyz-cliente$