Pachucho

Llevo unos cuantos dí­as pachucho. En el curro la mitad de la plantilla se ha puesto malo, un virus de esos raros. Yo llevo unos dí­as con fiebre. Para colmo en el trabajo hay un «pelí­n» de saturación, así­ que no tengo tiempo para mucho.

Tengo un montón de cosas de BolsaPHP pendientes de solucionar, de las que me han ido avisando en distintos comentarios (Gracias a todos). No me olvido, en cuanto mi cabeza sea capaz de pensar con algo más de lucidez me pongo con ello.

Ayer por la mañana se me veí­a cara de fantasma, hasta una compañera de trabajo me regaló unas frutas para ver si me sentí­a mejor (Gracias Birgit), por la tarde ya no me quedó más remedio que meterme una pastilla de esas efervescentes que tanto odio (no me gustan para nada los medicamentos).

Espero que Natacha Talleux no se contagie de nada, que la pobre está embarazada y nos está sufriendo a todos con las quejas. :P

Me voy a meter otra pastilla de estas, que tengo la cabeza como si un montón de enanos de Moria me golpeasen con sus martillos de guerra.

Script para tunel SSH inverso

Muchos de los equipos a los que tengo que hacer pequeñas intervenciones o mantenimientos en el trabajo van rodando por el mundo, es decir, o son portátiles o son equipos tras routers/firewalls no controlados por mi. Así­ que tengo el problema de no poderme conectar por SSH a (supongamos) un portátil de un gerente que anda en algún hotel del mundo usando a saber que conexión a internet.

La opción más rápida era montar un script que hiciese un tunel ssh inverso hacia «mi máquina» y a partir de ahí­ tener acceso completo a cualquier equipo fuera de mis dominios de BOFH.

Pero para entenderlo mejor, voy a poner un caso práctico. Tenemos un amigo que se ha puesto una KUBUNTU. Nos llama para decirnos que no sabe como instalarse un programa, como es normal, no tenemos acceso SSH al equipo de nuestro amigo, por que no tiene ni idea de configurarse un NAT en su router, así­ que le enviamos el siguiente script por mail:


#!/bin/bash
# Script para hacer tunel ssh inverso
# Por David Martí­n :: Suki_ ::
# http://sukiweb.net

USUARIO_TUNEL="remoto"
PUERTO_TUNEL="22222"

SERVIDOR_REMOTO="servidor.remoto.com"
PUERTO_SERVIDOR_REMOTO="22"

TEXTO="echo ' ADMINISTRACIí“N REMOTA';
echo 'Se va a proceder a la conexión remota de este equipo con el servidor:';
echo $SERVIDOR_REMOTO;
echo;
echo 'Mantenga esta ventana abierta mientras desee mantener la conexión.';
echo;
echo 'Teclee a continuación la clave del usuario $USUARIO_TUNEL.';
echo;
echo"

TUNEL="ssh -l $USUARIO_TUNEL -R $PUERTO_TUNEL:localhost:$PUERTO_SERVIDOR_REMOTO -N $SERVIDOR_REMOTO"

xterm -title "Administración Remota" -e "$TEXTO;$TUNEL"

En nuestra máquina, creamos un usuario llamado «remoto» con una clave que luego le daremos a nuestro amigo. Vamos a suponer que nuestra máquina es accesible desde internet a través del dominio servidor.remoto.com (aunque también puedes usar tu IP pública) y que tienes el servidor SSH a la escucha en el puerto 22.

Bien, le dices a nuestro amigo que ejecute ese script (recuerda explicarle como darle permisos de ejecución) y le aparecerá una ventana como esta en su escritorio:

tunel_SSH_inverso

Le decimos que teclee el password que hemos asignado al usuario remoto y que mantenga esa ventana abierta. En este momento, nosotros nos vamos a nuestra consola y hacemos un ssh al puerto 22222 de nuestra máquina, con el usuario de nuestro amigo, algo como:

:~$ ssh -p 22222 amigo@localhost

Nuestro amigo nos da su password (o el de otro usuario de su máquina) y ya estamos dentro. De esta forma, podemos instalarle la aplicación que querí­a o lo que sea necesario.

El script se puede mejorar mucho, aunque es lo suficientemente funcional como para utilizarlo en estos casos. Yo de momento lo voy a ir utilizando con todas esas máquinas GNU/Linux que andan sueltas por el mundo fuera de mis dominios de BOFH. :P

Debian con iptables

Receta sobre como configurar una Debian con iptables, para tener a mano:

Una vez que tenemos las iptables configuradas a nuestro gusto, hacemos un:

iptables-save > /etc/firewall.conf

Para crear el script pertinente:

echo "#!/bin/sh" > /etc/network/if-up.d/iptables
echo "iptables-restore < /etc/firewall.conf" >> /etc/network/if-up.d/iptables
chmod +x /etc/network/if-up.d/iptables

Tras el reboot, confirmar si todo está en orden con un:

iptables --list