juanjonavarro.com

secciones

Acceso a servicios locales en un VPS

Ahora que estoy usando un VPS, una de las cosas que hago es acceder a distintas herramientas administrativas que para mayor seguridad no quiero que estén disponibles de modo abierto en Internet. Ejemplos de este tipo de herramientas son un phpMyAdmin (para administrar la bbdd) o paneles de monitorización del rendimiento de la máquina. Aunque muchas de ellas permiten restringir su uso mediante usuario y contraseña, creo que es mejor no exponerlas a un acceso público.

Lo que hago es configurar estas herramientas para que escuchen sólo en el interface localhost (127.0.0.1) y después utilizo el acceso ssh para acceder a ellas. Según el software que se utilice, esto se hace de distintas maneras:

Apache

En el fichero del VirtualHost, configurar la IP desde la que se escucha. Ejemplo:

<VirtualHost 127.0.0.1:8080>
...
</VirtualHost>

NGINX

Igualmente se puede configurar al definir el servidor:

server  {
    listen 127.0.0.1:8080
    ...
}

Docker

Docker abre los puertos que se le configuran como públicos, incluso aunque tú no los abras en el firewall de linux, por lo tanto es importante indicar igualmente el host cuando se lanza. Ejemplo de lanzar un phpMyAdmin que sólo escucha en el interface local:

docker run --name phpmyadmin -d --link mysql_db_server:db -p 127.0.0.1:8080:80 phpmyadmin/phpmyadmin

Acceso al servicio

Ahora, cuando queramos acceder a los servicios, lo que haremos será abrir un ssh al servidor y abrir un proxy SOCKS dinámico. La forma de hacer esto depende de el cliente ssh que se esté usando. En el caso de putty, lo que se debe hacer es crear un tunel dinámico en el puerto que se quiera (en el siguiente ejemplo, en el puerto 1080, que por otro lado es el puerto oficial de un proxy SOCKS). No olvidar pulsar sobre el botón “Add” para que realmente añada el tunel.

Putty Puerto SOCKS

En el caso de un cliente normal de ssh de línea de comando hay que utilizar el siguiente formato:

ssh -D 1080 user@host

(sustituir user y host por los datos adecuados del servidor)

Una vez hecho esto, configuramos el navegador para que utilice un proxy de tipo SOCKS4, poniendo localhost o 127.0.0.1 como IP del proxy y 1080 como el puerto del mismo. A partir de este momento cualquier acceso en el navegador se hará a través del proxy. Por lo tanto podremos acceder a nuestro servicio sin más que acceder a http://localhost:8080.

Proxy en Windows

Interface de phpMyAdmin

Durante todo el tiempo que queramos acceder al servicio, se debe mantener la sesión ssh abierta. Una vez que terminemos de acceder, simplemente cambiamos la configuración del navegador para que no utilice el proxy SOCKS4.

Haciéndolo más fácil con SwitchyOmega y nip.io

Un problema de este tipo de acceso es que hay que estar continuamente cambiando la configuración del proxy del navegador, además de que mientras el proxy está activado todo el tráfico se ruta a través del VPS, lo cual puede no interesarnos.

La solución es utilizar una extensión como SwitchyOmega. Esta extensión para el navegador Chrome (existen alternativas para otros navegadores) permite configurar un proxy que sólo se utiliza para determinadas urls. Ahora lo único que necesitamos es tener un dominio específico para nuestro servicio local, que configuraremos en SwitchyOmega para que utilice el proxy SOCKS4, lo cual podemos lograr mediante el servicio nip.io

nip.io es un servicio público que nos permite acceder a una máquina con diferentes nombres de dominio. Ejemplo:

127.0.0.1.nip.io mapea a 127.0.0.1
app.127.0.0.1.nip.io mapea a 127.0.0.1

…y así cualquier cosa que queramos poner delante de 127.0.0.1.nip.io. Configuraremos SwitchyOmega para que utilice el proxy SOCKS4 cuando accedamos a (por ejemplo) http://local.127.0.0.1.nip.io:

SwitchyOmega

De esta manera, podremos acceder a nuestro servicio mediante, por ejemplo, http://local.127.0.0.1.nip.io:8080, mientras que para el resto de urls el navegador no utilizará el proxy SOCKS que hemos abierto.

Artículos anteriores...

Rendimiento de un VPS en Scaleway

Scaleway es una empresa de hosting francesa (creo que filial de online.net) de la que se oyó hablar hace unos meses porque ofrecen servidores reales (no virtuales) con microprocesador ARM. Básicamente son pequeños ordenadores (equivalentes a un Raspberry Pi) con... seguir leyendo

Primeros pasos con PowerShell

Desde hace mucho tiempo tenemos disponible en entornos windows el PowerShell, como alternativa a la clásica línea de comandos, para realizar tareas de administración, ejecutar pequeños scripts, etc. Yo hace tiempo que le tenía echado un ojo y en alguna... seguir leyendo

Textpattern 4.6.0 ya está aquí

El desarrollo de mi CMS favorito (Textpattern) avanza a un ritmo muuuy lento pero avanza. Después de dos años ya tenemos aquí la versión 4.6.0. Lo bueno es que esta versión, por lo que yo he visto, sigue siendo un software... seguir leyendo

...leer el archivo completo