Blog

Navegación segura con túneles ssh

A veces nos conectamos desde redes poco fiables. Para estos casos, podemos utilizar túneles ssh, para poder realizar una navegación segura. Para hacer esto, necesitaremos un equipo que nos haga de servidor, a través del cual, navegaremos. Además, será interesante utilizar un servicio, como No-Ip o DynDNS, para que apunte a nuestro servidor, en caso de que no tengamos un dominio propio.

Lo primero que vamos a necesitar es un servidor ssh en el equipo que hará de servidor, con el puerto correspondiente abierto. Para este ejemplo, dejaremos el puerto 22, que es, por defecto, el utilizado por este servicio. Será interesante que utilicemos alguna herramienta para proteger este equipo, por ejemplo, fail2ban y que desactivemos el acceso al usuario root. También sería conveniente cambiar el puerto.

Para instalar, bastará, en ArchLinux, con ejecutar:

sudo pacman -Syu openssh

Una vez hecho esto, editamos el archivo de configuración /etc/ssh/sshd_config, y nos aseguramos que no se encuentre activado el protocolo 1, en la línea Protocol. En ArchLinux, el protocolo 1 debe ser activado explícitamente, por lo que no será necesario tocar esa línea. Además, buscamos la línea PermitRootLogin, la descomentamos, y la establecemos a no. También podríamos restringir los usuarios que tienen permitido el acceso, mediante AllowUsers o AllowGroups:

...
# The default requires explicit activation of protocol 1
#Protocol 2
...
PermitRootLogin no
...

Una vez hecho esto, tan sólo hay que iniciar el servicio. Podemos hacerlo de dos formas. La primera, levantando el daemon:


sudo systemctl enable sshd.service

sudo systemctl start sshd.service

La otra opción es utilizar sockets:

sudo systemctl enable sshd.socket
sudo systemctl start sshd.socket</pre>

Hecho esto, en el equipo cliente, debemos tener también openssh instalado. Vamos a crear un túnel. Abrimos un terminal y ejecutamos:

ssh -TND 4711 usuario@servidor

Con esto hemos creado un túnel ssh hacia nuestro servidor, utilizando el puerto local 4711. Si todo está bien, deberá pedirnos la clave del usuario y, dado que hemos especificado N y T, no nos aparecerá nada más, pues hemos deshabilitado la sesión interactiva y el alojamiento en pseudo-tty. Para cerrar el túnel, bastará pulsar ctrl-c

Debemos indicar a nuestro navegador que utilice este túnel. En el caso de Firefox, escribimos en la barra de direcciones about:config y buscamos network.proxy.socks_remote_dns, que debemos establecer a true. Hecho esto, nos dirigimos a Editar -> Preferencias -> Avanzado -> Red -> Conexión -> Configuración y, en la sección de Servidor Socks, establecemos localhost y puerto 4711.

Para Chromium, bastará ejecutarlo con los siguientes parámetros:

chromium --proxy-server="socks://localhost:4711"

Un truco para Chromium es añadir en el ~/.bashrc una función, con el siguiente contenido:

function ssh_chromium {
port=4711
chromium --proxy-server="socks://localhost:$port" &
exit
}

Ahora, para ejecutar Chromium, utilizando el túnel, tan sólo deberemos ejecutar ssh_chromium, desde una consola  (no desde tty, desde konsole, gnome-terminal, etc).

¡Espero que os haya gustado! ;-)

Un saludo!!

Mª José Montes – mjose@highsec.es – @MMontesDiaz

  1. Luis
    Luis03-12-2014

    Hay un pequeño detalle que estás pasando por alto en la configuracion del firefox. Y es la activación del rutado del DNS a través del tunel ssh tambien. Sino haces estos, estarás dejando un rastro de miguitas de pan (querys DNS) que tirarán por tierra la configuración. Para corregir esto en firefox, modifica la opción network.proxy.socks_remote_dns y ponla en true.

Leave a Reply

*

    No Twitter Messages