El post que buscas se encuentra eliminado, pero este también te puede interesar

vpn usando ssh como herramienta

Anuncios

(Como pongo en todos mis posts estos artículos son recopilados de páginas y algunas cosas son traducidas asi que pido disculpas por adelantado si alguna parte del texto esta mal traducida)
Lo importante de esto es la intención de compartir con ustedes estas informaciones para ir aumentando nuestros conocimientos como lo dice TARINGA (INTELIGENCIA COLECTIVA) cualquier critica será aceptada para asi poder mejorar


Este articulo nos enseña como hacer trabajar el SSH como una VPN
.


Introducción y configuración del servidor

El SSH normalmente es usado con la principal finalidad del acceso remoto, con esta potente herramienta, hay muchas cosas mas que pueden ser realizadas, una de ellas es crear tuneles encriptados temporales y una VPN real.

En este articulo vamos a abordar como configurar su servidor SSH para ejecutar como un servidor VPN para conexión punto a punto. No se trata de una configuración complicada.

El túnel que sera creado utilizará la interface TUN/TAP, en los ejemplos utilizaremos TAP para establecer la conexión entre cliente y servidor.

El primer paso es editar el archivo "/etc/ssh/sshd_config" en el servidor (usted puede usar el propio SSH para acceder y después editar el archivo) adicionando la linea de abajo:

PermitTunnel yes


Es necesario tambien que la linea "PermitRootLogin = yes" este presente, ya que, por seguridad, solo el root puede crear la VPN.

Si no queremos permitir logins como 'root' devido a la cuestion de seguridad, una buena opción es combinarla con la linea "PermitRootLogin = forced- commands-only", como muestra abajo:

PermitRootLogin = yes
PermitRootLogin = forced-commands-only


Eso pone el acceso como 'root' un poco mas restrictivo, pues permite apenas el uso del 'root' para la ejecución de comandos (como el que usaremos para crear el túnel) y no para loguearse directamente. Despues de realizar estas modificaciones, reiniciamos el servidor SSH para que los cambios esten funcionando.

Reiniciamos el servidor con el comando:

# /etc/init.d/ssh restart

Después de configurar el servior y reiniciar el mismo, nuestro servidor estara ejecutando el SSH y listo para establecer la conexión VPN por el protocolo de criptografia del SSH.

En caso de que aparezca algun error, puede ser que la versión del SSH que usted esta utilizando sea mas antigua, pues el SSH solo tiene este recurso a partir de la versión 4.3.

En este caso, recomiendo instalar la versión mas reciente desde el gerenciador de paquetes o descargando e instalando manualmente, para entonces poder realizar la configuración y conexión de la VPN.

Los errores que pueden aparecer, en caso de que la SSH que utilizamos sea de una versión anterior a la 4.3. son:

/etc/ssh/sshd_config: line 27: Bad configuration option: PermitTunnel
/etc/ssh/sshd_config: terminating, 1 bad configuration options
Estableciendo la conexión - Tunel punto a punto
Después de realizar la configuración en el servidor, es hora de establecer la conexión con el mismo y comenzaar a usar nuestra VPN.

Logueado como 'root' (en el cliente), escribimos en la terminal el comando de abajo:

# ssh -f -w 0:0 -o Tunnel=ethernet root@xxx . xxx . xxx . xx ifconfig tap0 xx . x . x . x netmask xxx . xxx . xxx . x

Obs.: Es necesario escribirlo usando el usuario 'root', pues solo el tiene los permisos administrativos para generar el dispositivo virtual en el servidor y en el cliente. La autenticación realizada va a seguir la configuración del servidor, puede ser atraves de la contraseña 'root' o a traves de las llaves de autenticación (lo que es mas seguro).

En caso de introducir el comando sin estar logueado como 'root' tiene permisos de loguearse via SSH (configuración echa en "/etc/ssh/sshd_config" en la primera pagina), probablemente devuelva un error mostrado mas abajo:

Tunel device open failed
Could not request tunnel forwarding


En caso de que aparezca este error descrito mas abajo, significa que el SSH del servidor esta usando una versión mas antigua o la opción 'PermitTunnel' está deshabilitada:

SIOCSIFADDR: Dispositivo inexistente
tap0: ERROR while getting interface flags: Dispositivo inexistente
SIOCSIFNETMASK: Dispositivo inexistente


Resumen de las opciones usadas:

-f:- Esta opcion hace que con el comando sea ejecutado en segundo plano y no quede ocupando su terminal durante la ejecución.
-w 0:0:- Es usada para crear el tune, en este caso creando la interface 'tap0' en el cliente y la interface 'tap0' en el servidor.
-o Tunnel=ethernet:- Indica que debe ser creada una interface virtual TAP. O default del SSH(cuando la opción es omitida) y crear una interface TUN. La gran diferencia entre las dos es que la interface TAP puede ser usara para crear un 'bridge', y que permite efectivamente unir las dos redes.
root@xxx . xxx . xxx . xx :- O 'xxx . xxx . xxx . xx' representa la dirección de IP del servidor, debe ser sustituido por la dirección de IP del servidor SSH a configurar y el 'root' se refiere al usuario que ira logueado en el servidor.
ifconfig tap0 xx . x . x . x netmask xxx . xxx . xxx . x :- Configura la dirección de IP y la mascara que será usada por la interface 'tap0' que será creada en el servidor. Usted puede usar su dirección y mascara que quisiera, llevando en cuenta que tiene que ser diferente a las IPs uasada en la red local.


Después de ejecutar el comando en el cliente y que no haya generado ningún error como comentario en el inicio de la pagina, nos logueamos en el servidor como 'root' y ejecutamos el siguiente comando:

# ifconfig

Y vemos que la interface 'tap0' fue creada:

tap0 Encapsulamento del Link: Ethernet dirección de HW EA:CE:66B:1AG
inet end.: xx . x . x . x Bcast: xx . x . x . xxx Masc: xxx . xxx . x . x
direccion inet6: fe80::e8ce:ecff:fefb:1add/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
paquetes RX:4 erros:0 descartados:0 excesso:0 quadro:0
paquetes TX:26 erros:0 descartados:0 excesso:0 portadora:0
colisiones:0 txqueuelen:500
RX bytes:328 (328.0 b) TX bytes:4317 (4.2 KiB)


Observe que fue creada hasta un MAC para la interface virtual.

Ahora es hora de configurar la interface 'tap0' del cliente que todavia no fue activada. Para esto ejecutamos en la terminal como 'root':

# ifconfig tap0 xx . x . x . x netmask xxx . xxx . xxx . x up

testeamos, usando ping:

# ping -c 3 xx . x .. x . x

Definiendo rutas

Todo el trabajo anterior, fue solo para establecer la conexión del cliente con el servidor permitiendo asi la comunicación entre ambos.

Sin embargo, para el despliegue de una red VPN, si no se consigue comunicar con los otros 'hosts' de la red?

Como este no es el proposito del articulo, entonces vamos a adicionar rutas para hacer que el cliente se conecte con los 'hosts' de la red del servidor

En el servidor, ejecute los comandos de abajo para hacer el ruteamiento usando el usuario 'root':

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -s xx . x . x . x -A POSTROUTING -o eth0 -j MASCARA

Explición:

El primer comando hace que el redireccionamiento de paquetes sea activado en el servidor, permitiendo que los paquetes del cliente sea redireccionado para los otros 'hosts' de la red y vice-versa.

El segundo comando hace que todo el trafico venido del cliente sea enmascarado, en este caso se supone que la interface 'eth0' sea la interface conectada a la red local del servidor.

En el cliente, activamos una ruta para la red local del servidor:

# route add -net xxx . xxx . xxx . x netmask xxx . xxx . xxx . x gw xx . x . x . x dev tap0

El comando superior ' xxx . xxx . xxx' indica el rango de direcciones que se utilizan en el servidor de LAN. O 'xxx . xxx . xxx . x' indica la máscara, y 'xx . x . x . x' indica la dirección de iterface 'tap0' del servidor.

Con eso el cliente pasa a encaminar todas las tentativas de acceso a dirección de la caja especificada para el servidor (usando la interface 'tap0'), y el servidor las encamina para la itnerface de red local.

Conclusión
Esta es una forma de utilizar una VPN usando SSH como herramienta principal y es bastante segura

Anuncios

4 comentarios - vpn usando ssh como herramienta

@piruo7 +1
Gracias por compartir se que en algun momento me sera util +10...
@Allowski +1
Gracias por compartir!