Kung Fu Style Linux: VPN gratuita sobre SSH

Si ve muchos anuncios publicitarios en algunos sitios, sabrá que si no usa una VPN (red privada virtual), los piratas informáticos muy pronto se harán cargo y arruinarán su computadora y quemarán su hogar. Bueno, al menos definitivamente están planeando algo así. De hecho, hay dos razones principales por las que alguien podría necesitar una conexión VPN. Por supuesto, puedes comprar una suscripción al servicio correspondiente, pero si tienes acceso SSH a cualquier computadora con acceso a Internet, esto significa que puedes crear tu propio servicio VPN sin gastar un centavo en él.



La idea básica aquí es conectarse a una computadora remota en una red y hacer que todo el tráfico de su red parezca local en esa red.







La primera razón por la que alguien podría necesitarlo es para mejorar la seguridad y eliminar las amenazas potenciales de manera temprana. Por ejemplo, es posible que deba imprimir en una impresora de red sin "exponer" esta impresora a Internet normal. Como resultado, por ejemplo, alguien puede sentarse en un café y, habiéndose conectado a la red a través de VPN, imprimir documentos en la impresora, sentirse como si estuviera en su escritorio y la impresora está parada a un par de metros de él. El uso de una VPN también significará que los datos transmitidos a través de la red WiFi del café estarán encriptados.



La segunda razón es ocultar la ubicación real del usuario de miradas indiscretas. Digamos que a alguien le gusta ver videos de la BBC pero vive en Ecuador. Esto significa que para que los videos no se le bloqueen, deberá conectarse a través de VPN a una red ubicada en el Reino Unido. Si las autoridades de un determinado país controlan y censuran Internet, los residentes de ese país también pueden beneficiarse de la oportunidad de disfrazar su tráfico.



El uso de SSH para establecer una conexión VPN está bien para las dos tareas anteriores. Sin embargo, si está interesado principalmente en el primero de ellos, es mejor que utilice un enrutador dedicado o una computadora pequeña, como la Raspberry Pi, destinada a resolver su problema. Debo decir que si alquila un servidor en algún lugar, entonces "VPN sobre SSH" no es para usted.



Preparación preliminar









VPN



Solo necesita acceso de root a ambas máquinas. Se debe instalar un servidor SSH en la computadora remota. Por supuesto, también necesitará un cliente SSH. Tanto las máquinas locales como las remotas deberán realizar alguna configuración. Yo uso KDE, así que utilizo NetworkManager para realizar los ajustes necesarios, pero puede ir al revés. Usar NetworkManager simplemente facilita las cosas.



Es necesario realizar algunas configuraciones especiales en el servidor, pero es muy posible que ya estén hechas en él. Entonces, el archivo/etc/ssh/sshd_config



debe contener una líneaPermitTunnel=yes



. Además, es posible que deba establecer unyes



parámetropara el valorAllowTCPForwarding



. El cortafuegos también puede necesitar algunas configuraciones. Sin embargo, las instrucciones para configurar el complemento NetworkManager puede ser útil incluso para aquellos que no utilizan este programa.



Configuración del lado del cliente



Si está utilizando NetworkManager, necesitará el complemento adecuado. Para Neon y otras distribuciones basadas en Debian, el paquete está bien network-manager-ssh



. Esto es todo lo que necesita. Si no desea utilizar NetworkManager, puede utilizar los siguientes comandos del material del autor del complemento:



ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@YOUR_SSH_SERVER \
'/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && \
/sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1

      
      





Esto requiere acceso de root a ambos sistemas, ya que estamos creando un túnel. Esto, incluso cuando se usa el complemento, genera varios problemas. Obviamente, no nos gustaría que nos pidieran constantemente una contraseña para la conexión SSH y verificar la clave. Pero si configura manualmente la VPN, puede solucionar estos problemas.



Problemas



La mayoría de los sistemas modernos no le permiten iniciar sesión como root con una contraseña y, a veces, no le permiten conectarse al sistema en este modo. Por lo tanto, en primer lugar, debemos resolver este problema. Además, cuando NetworkManager inicia SSH, busca claves para el usuario raíz, no para el usuario normal. Si no puede encontrar algo, simplemente se detiene. Por lo tanto, debemos proporcionar un inicio de sesión de root sin problemas.



Para proporcionar la capacidad de iniciar sesión como root en el servidor, debe editar el archivo /etc/ssh/sshd_config



y establecer el parámetro PermitRootLogin



enyes



... Le recomiendo que trabaje en este modo exactamente el tiempo que sea necesario para completar los siguientes pasos de configuración del servidor. A continuación, deberá reiniciar el servidor sshd, por ejemplo, con el siguiente comando:



systemctl restart sshd

      
      





También puede utilizar este comando:



/etc/init.d/ssh restart

      
      





Luego, al iniciar sesión en la máquina local con una cuenta normal, debe usar ssh-copy-id



para instalar el certificado en la máquina host. Una vez hecho esto, debe volver al servidor y cambiar el /etc/ssh/sshd_config



valor PermitRootLogin



a prohibit-password



. Esto le permitirá iniciar sesión en el servidor como root usando un certificado, pero no usando una contraseña.



Si ya ha iniciado sesión con su cuenta raíz, es posible que ya se le haya preguntado si desea aceptar la clave del servidor. Si no es así, entonces tenemos un problema. Si puede, inicie sesión y responda sí a la pregunta correspondiente, después de lo cual el sistema dejará de hacerla. Pero, si esto no se puede hacer, podemos solucionar el problema deshabilitando StrictHostKeyChecking



.



En teoría, puede pasar opciones ssh adicionales al complemento NetworkManager, pero por alguna razón este enfoque no funciona con la versión del complemento de los repositorios. Si no usa el complemento, haciendo todo manualmente, puede realizar los ajustes necesarios usted mismo. La configuración SSH para el usuario root se puede establecer en /root/.ssh/config



. También puede establecer la configuración global en /etc/ssh/ssh_config



.



Si cambia la configuración global, si el sistema lo admite, considere usar /etc/ssh/ssh_config.d



. Gracias a esto, podrá configurar parámetros para un host específico, que no se sobrescribirán cuando se actualice el sistema. Por ejemplo, puede crear un archivo en el directorio apropiado con el nombre hackaday.conf



:



Host *.hackaday.com hackaday.com
StrictHostKeyChecking no
Tunnel yes

      
      





Nuevamente, si no le gusta la idea de verificar la clave de host, simplemente inicie sesión una vez como root y acepte manualmente la clave remota. O, si eres valiente, edita manualmente /root/.ssh/known_hosts



.



Conexión



Todo debería estar listo para funcionar ahora. Si está utilizando el complemento para NetworkManager, solo necesita establecer una nueva conexión. Es decir, debe ir a la sección de conexiones VPN y seleccionar SSH.









Seleccionar el tipo de conexión



Ahora necesita configurar varios parámetros de la nueva conexión. Incluido: debe especificar el certificado que planea usar para iniciar sesión en el sistema remoto.









Configuración de una conexión



Después de guardar la configuración de la conexión, esta conexión se puede activar, como cualquier otra interfaz de red. Si desea probar su nueva VPN, primero, normalmente, solicite su dirección IP en el sitio web dedicado . Y luego encienda la VPN y averigüe su dirección nuevamente. Si no logra establecer una conexión VPN, busque en el registro del sistema información sobre los errores de SSH.



Salir



Existen otras soluciones VPN, por supuesto. Pero está casi garantizado que la computadora remota con la que está trabajando tenga un servidor SSH. Por lo tanto, el método propuesto para establecer una conexión VPN a través de SSH es una solución simple y conveniente que se puede utilizar sin ninguna preparación previa.



Por cierto, puedes hacer muchas cosas interesantes con SSH . Por ejemplo, para organizar el trabajo conveniente con archivos .



¿Usas una VPN?










All Articles