Sshuttle - La VPN del pobre
¿Qué es sshuttle?
Es un cliente SSH desarrollado en pyhton que funciona como una VPN (no es una VPN como tal).
Crea de forma automática y transparente una conexión tunelizada vía SSH para acceder a recursos internos de nuestra red doméstica o navegar de forma segura por intenet.
A continuación os dejo el enlace del repositorio del proyecto
Instalación
apt update && apt -y upgradeapt -y install sshuttle
También podemos instalarlo a través de los repositorios
git clone https://github.com/sshuttle/sshuttle.gitcd sshuttle./setup.py install
Funcionamiento
El comando para crear un tunel VPN es el siguiente:
sshuttle -r usuario@<ip_pública_servidor> 0/0
sshuttle -r usuario@<ip_pública_servidor>:<nuevo_puerto> 0/0
Casos de uso
Ejemplo 1 - Acceder a los recursos de una intranet
Queremos acceder a un servidor de archivos que tenemos en la red privada de nuestra casa. Para ello debemos establecer una conexión SSH a través de sshuttle a una máquina de salto con acceso a nuestra red privada.
sshuttle -r casa@85.123.89.133:5522 0/0
Ejemplo 2 - Acceder al /wp-admin desde una red privada
Vamos a bloquear el acceso al /wp-admin de nuestro sitio web para que sea accesible desde la red privada de nuestra casa.
- Copiamos y pegamos las siguientes lineas en el archivo wp-config.php o lo cambiamos en los ajustes de nuestro WordPress.
define('WP_HOME','http://midominio.org');define('WP_SITEURL','http://10.85.235.123');
- Configuramos nuestro servidor web (en mi caso es un proxy inverso con Nginx) con las siguientes lineas:
server {
listen 80;
server_name midominio.org;
location / {
proxy_set_header Host $host;
proxy_pass http://10.85.235.209;
}
location ~ ^/(wp-admin|wp-login.php) {
allow 10.85.235.209;
deny all;
}
}
Ejemplo 3 - Navegar por internet desde otra ubicación
Para este ejemplo me voy a conectar a un servidor VPS que tengo contratado en Hetzner (Helsinki)
- Accedo al siguiente sitio web para ver desde que ubicación estoy saliendo a internet actualmente.
- Abro un tunel con mi VPS
sshuttle -r vpn@87.984.10.222:4433 0/0
- Vuelvo a acceder al sitio web para ver que ahora estoy saliendo a internet desde mi VPS en Helsinki.