Cómo acceder a un terminal SSH desde el navegador web

Normalmente en las empresas los firewalls perimetrales sólo permiten el tráfico HTTP(s) hacia Internet. Hoy vamos a ver otra herramienta para poder evadir esta restricción y poder ejecutar un terminal SSH a través del navegador: Shell In A Box (o ShellInABox).

ShellInABox es un emulador de terminal web basado en ajax para cualquier navegador que soporte Javascript y CSS sin necesidad de disponer de ningún plugin adicional.
Existen otros emuladores para navegador mediante complementos como NaCl o FireSSH, si bien necesitarás acceso al exterior por el puerto 22/TCP.  Con ShellInABox accederás directamente al puerto 443/TCP de HTTPS.

Ahora bien, ¿por qué no cambiar el puerto del demonio SSH del 22/TCP al 443/TCP y dejarnos de tanta historia? Pues principalmente porque no tendrás necesidad de utilizar otro cliente como Putty y porque muchos firewalls con inspección de paquetes detectarían el intercambio de claves al menos que lo ofuscemos con ossh y Potty. 

Al instalar certificados SSL/TTL, ShellInABox cifrará todas las comunicaciones cliente-servidor y también hará más difícil la labor de detección de los firewalls/NIDS más "inteligentes".

En esta entrada vamos a probar a instalar ShellInABox en un máquina virtual con Kali Linux:

root@kali:~# apt-get install openssl shellinabox

Por defecto, el servidor web shellinboxd escuchará en el puerto 4200/TCP. Para modificarlo simplemente lo cambiaremos en el fichero de configuración:

root@kali:~# vi /etc/default/shellinabox
# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=443

# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions).  Make sure
# that that argument is quoted.
#
#   Beeps are disabled because of reports of the VLC plugin crashing
#   Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep"

Durante la instalación, si no encuentra un certificado adecuado, shellinaboxd intenta crear uno nuevo autofirmado (certificate.pem) mediante openssl. En ese caso el certificado creado se ubica en /var/lib/shellinabox. Si por lo que sea no se ha creado correctamente podéis crearlo vosotros mismos.

Para empezar a utilizarlo, simplemente iniciaremos los servicios:

root@kali:~# service ssh start
[ ok ] Starting OpenBSD Secure Shell server: sshd.

root@kali:~# service shellinabox start
root@kali:~# service shellinabox status
Shell In A Box Daemon is running

Y comprobamos el acceso a través de nuestro navegador:

Fuentes y referencias:
- shellinabox - Web based AJAX terminal emulator 
- How to access ssh terminal in web browser on Linux
- Shell In A Box – A Web-Based SSH Terminal to Access Remote Linux Servers
- Crea un tunel TCP a través de HTTP mediante Tunna
- Evadir un portal cautivo mediante un túnel DNS
- Cómo crear un túnel SSH entre un servidor Linux y un cliente Windows

2 comentarios :

  1. que buena idea lo de pasarlo todo por el puerto 443 jo jo

    ResponderEliminar
    Respuestas
    1. Hay que ver la detección por parte de los firewalls con Deep Inspection... ya os contaré ;)

      Eliminar