Esta pagina se ve mejor con JavaScript habilitado

Acceso KVM mediante tunneling SSH

 ·  🎃 kr0m

En la mayoría de ocasiones el acceso IPMI/KVM está restringido a una red interna de administración ya que de este modo queda mas protegido que si se expusiese públicamente, el inconveniente de esto es que nos dificulta el acceso en caso de emergencia. En este artículo veremos como tunelizar el tráfico a través de una conexión Ssh permitiéndonos de este modo accceso directo al KVM de la red privada.

Parece ser que cada KVM abre unos puertos distintos para su funcionamiento, así que primero averiguaremos los puertos correctos realizando un escaneo mediante Nmap, esto lo hacemos desde el equipo intermedio de salto:

nmap IP_LAN_KVM -p 0-65535

Starting Nmap 7.80 ( https://nmap.org ) at 2021-04-16 22:05 UTC  
Nmap scan report for IP_LAN_KVM  
Host is up (0.0012s latency).  
Not shown: 65523 closed ports  
PORT      STATE SERVICE  
22/tcp    open  ssh  
80/tcp    open  http  
111/tcp   open  rpcbind  
443/tcp   open  https  
623/tcp   open  oob-ws-http  
5120/tcp  open  barracuda-bbs  
5123/tcp  open  unknown  
5124/tcp  open  unknown  
5127/tcp  open  unknown  
5988/tcp  open  wbem-http  
7578/tcp  open  unknown  
7582/tcp  open  unknown  
50000/tcp open  ibm-db2
  
Nmap done: 1 IP address (1 host up) scanned in 6.22 seconds

Ahora que ya sabemos que puertos queremos tunelizar procedemos a ello, como root en nuestro pc ejecutamos:

KVM=‘IP_LAN_KVM’

ssh USER@SERVER -L127.0.0.1:80:$KVM:80 -L127.0.0.1:443:$KVM:443 -L127.0.0.1:623:$KVM:623 -L127.0.0.1:5120:$KVM:5120 -L127.0.0.1:5123:$KVM:5123 -L127.0.0.1:5124:$KVM:5124 -L127.0.0.1:5127:$KVM:5127 -L127.0.0.1:5988:$KVM:5988 -L127.0.0.1:7578:$KVM:7578 -L127.0.0.1:7582:$KVM:7582 -L127.0.0.1:50000:$KVM:5000 -C

Añadimos la ip loopback a la lista de excepciones de Java:

/usr/local/linux-oracle-jdk1.8.0/bin/ControlPanel

http://127.0.0.1
https://127.0.0.1

Ahora ya podemos acceder a la interfaz web para descargar el applet Java, desde Chrome podremos hacer login en la interfaz web:

Pero al descargar el applet aparecerá el siguiente error por alguna razón desconocida:

En cambio en Firefox no dá problemas:

Ahora que ya tenemos el fichero jnlp lo lanzamos con el script de este artículo anterior:

./javaApplet jviewer.jnlp

En la siguiente captura podemos ver el applet Java arrancando desde una ISO de Gentoo:

Seguramente mediante herramientas como sshuttle el proceso podría ser un poco mas transparente pero parece que ser que sshuttle da algunos problemas en FreeBSD así que he optado por la aproximación mas genérica, Ssh. Otra opción sería instalar una VPN pero lo mas rápido es utilizar Ssh ya que no hay que instalar ningún servicio adicional.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí