Introducción

Introducción

Si alguna vez ha estado a cargo de una red, definitivamente ha tenido la necesidad de una conexión remota segura. Tal vez solo necesite vigilar a los empleados o niños. Hacerlo puede ser una molestia para algunos mientras cruzan redes y subredes. Además de eso, muchas empresas pueden tener internet pero no dhcp para máquinas más protegidas. Muchos hacen esto a las máquinas de red mientras evitan que los empleados naveguen por la web. Cualquiera sea el caso, Linux tiene muchas herramientas excelentes para habilitar la administración remota de GUI cifrada. Aún mejor, obtendremos todo lo que necesitamos de forma gratuita para acceder a un cliente de Linux o Windows.

Requisitos

Debe tener privilegios raíz en la máquina de la que desea monitorear, así como en los clientes. No está obligado a tener derechos de administrador en un cliente de Windows si al menos puede habilitar el escritorio remoto. Para seguir este tutorial, puede usar máquinas virtuales si no tiene clientes físicos para probar. Mientras tenga los derechos anteriores y una dirección IP, debe estar bien.

Nota legal

Si bien ya he mencionado propósitos legítimos para este tutorial, se puede abusar. El propósito de este escrito es ayudar a las personas a establecer sus propias máquinas. Utilice esta información para el monitoreo legal de los clientes solo!

Configuración de nuestro anfitrión

Lo primero que debe hacer es descargar los paquetes necesarios con apt-get, si está en Debian o derivados:

# apt-get install xrdp openssh-server 

Después de eso, debemos hacer una configuración para asegurarnos de que nuestro servidor SSH se ejecute correctamente. En un tipo terminal "ssh-keygen" para crear las claves RSA para el cifrado. Verás pasar algo de arte ascii y luego está hecho. Lo más probable es que sus teclas RSA se almacenen en/Home // Nombre de usuario/.ssh/ si alguna vez necesitas encontrarlos.

Ahora podemos verificar para asegurarnos de que todo se esté funcionando.

$ netstat -antp Proto Recv-Q Send-Q Dirección local Dirección Extranjera PID/Nombre del programa TCP 0 0 0 0 0.0.0.0:22 0.0.0.0:* Escucha 6294/sshd tcp 0 0 127.0.0.1: 3350 0.0.0.0:* Escucha 6230/XRDP-SESMAN TCP 0 0 0.0.0.0: 3389 0.0.0.0:* Escucha 6227/XRDP 

Ejecutando este comando netstat deberíamos ver algo como esto. Obviamente, el puerto 22 es nuestro servidor SSH. 3389 es el puerto del servidor rdesktop que espera conexiones. El otro es un puerto para que nuestro cliente RDP use para conectarse y ver desde.

Configuración del cliente de Windows

Ahora que hemos configurado nuestro host de Linux, necesitamos hacer lo mismo para nuestro cliente de Windows. Para Windows comenzamos habilitando el escritorio remoto. En Windows XP va a Inicio-> Todos los programas-> Accesorios-> Conexión de escritorio remota. Para el túnel ssh usaremos plink. Simplemente descarga plink.exe y deja caer el .exe archivo en una subcarpeta, o en algún lugar no se notará. Haremos lo mismo con NetCat para nuestra conexión inicial.

Haciendo la conexión

Desde el cliente de Windows comenzaremos abriendo un shell temporal en el puerto 1234.

C: \> nc -lvp 1234 -e CMD.exe 

Con la sintaxis anterior ahora deberíamos tener un shell de Windows escuchando en el puerto 1234. Si su distribución no viene con NetCat preinstalado, puede instalarla a través de su administrador de paquetes. Ya sea que Yum, Pacman o Apt-obtengan la sintaxis debería ir así:

# apt-get install netcat 

Ahora podemos usar NetCat en nuestro host Linux para conectar y obtener un shell. El parámetro -v le dice a NetCat que sea detallado. La dirección IP utilizada aquí es la dirección del cliente de Windows. Finalmente, 1234 es el puerto al que deseamos conectar.

$ NC -V 192.168.1.12 1234 

Ahora deberíamos tener un símbolo del sistema de Windows para el cliente remoto en nuestra máquina Linux. Elegí 192.168.1.12 para la dirección IP de la máquina de Windows. Use lo que sea apropiado para su red.

Una vez hecho esto, podemos ejecutar Plink desde el shell de Windows en nuestro host de Linux.

C: \> plink -l nombre de usuario -pw contraseña -r 3390: 127.0.0.1: 3389 192.168.1.11 

Lo que hemos hecho aquí es decirle a Plink el nombre de usuario y la contraseña para el host de Linux al que estamos a punto de conectarnos. El parámetro -r se usa para decirle a SSH que esto va a un host remoto. El número 3390 que estamos conectando de nuevo aquí está el puerto de nuestra máquina Linux. No podemos usar 3389 ya que ese puerto ya está en uso por XRDP. Obviamente 127.0.0.1 ¿Es la dirección de bucle de bucle en la máquina de Windows?. 3389 es el puerto en la máquina de Windows que necesitamos volver a Linux. Finalmente, 192.168.1.11 es la dirección IP que estoy usando para nuestro host Linux al que queremos conectarnos nuevamente.

Si todo salió según el plan, deberíamos ver algo como esto desde Netstat.

$ netstat -antp Proto Recv-Q Send-Q Dirección local Dirección Extranjera PID/Nombre del programa TCP 0 0 0 0 0.0.0.0:22 0.0.0.0:* Escucha 6294/sshd tcp 0 0 127.0.0.1: 3350 0.0.0.0:* Escucha 6230/XRDP-SESMAN TCP 0 0 127.0.0.1: 3390 0.0.0.0:* Escucha 6227/XRDP 

Como puede ver, tenemos la máquina Windows conectada en 127.0.0.1: 3389. Simplemente ejecutando rdesktop en 127.0.0.1 Debería abrir Windows en nuestra máquina Linux.

$ rdesktop 127.0.0.1 

Ahora puede cerrar NetCat y usar el escritorio remoto sobre el cifrado SSH. Debo tener en cuenta aquí que dejar un caparazón abierto como acabo de hacer puede representar un riesgo de alto seguridad. Si es posible, debe iniciar esto desde el cliente de Windows con la misma sintaxis para evitar abrir un shell al mundo entero.

Conectarse sin DHCP

Lo que hemos hecho puede no impresionar a algunos de ustedes. Conectarse de una máquina a otra en la misma subred no es tan difícil. Pero ahora vamos a intentar conectarnos a otra subred. Uno que tiene internet, pero no dhcp. Fingiremos la caja a las 10.0.0.10 tiene una página web en el puerto 80. También fingiremos el cliente de Windows en 192.168.1.12 tiene dos tarjetas de red y, por lo tanto, dos direcciones IP para hablar con ambas redes. Como no estamos en esa subred y sin DHCP, no podemos simplemente verlo escribiendo la dirección IP en nuestro navegador. SSH nos permitirá túnel a esta máquina y enviar el servicio y la página web que se ejecuta en el puerto 80 de regreso a nuestro host de Linux.

C: \> plink -l nombre de usuario -pw contraseña -r 8080: 10.0.0.10:80 192.168.1.11 

Aquí usamos casi la misma sintaxis con Plink que antes. Decidí que quería que la conexión comenzara en el puerto 8080 en mi host Linux. Esta vez utilizamos la IP de la máquina a la que queríamos conectarnos en lugar de 127.0.0.1. Elegimos conectarnos en el puerto 80. Finalmente enviamos esta conexión a través del cliente de Windows y volvimos al host de Linux en 192.168.1.11. El servicio de 10.0.0.10 ahora está vinculado a un puerto 8080 en el localhost de nuestra caja de Linux. Use http: // 127.0.0.1: 8080 en la barra de direcciones de su navegador para ver la página web de 10.0.0.10.

Cambiar el escenario a los clientes de Linux

Me sorprendió encontrar la administración de GUI de túneles sobre SSH era mucho más simple con los clientes de Linux. Ni siquiera se necesitaba paquete XRDP. Solo se necesitaba un servidor SSH en el cliente que deseamos monitorear y un cliente SSH nuestra caja. Desde nuestra línea de comandos comenzamos con esta:

$ ssh -x nombre de [email protected] 

Aquí estamos iniciando sesión en el SSH del cliente con -x para permitir el reenvío de X11. Se nos solicitará la contraseña del usuario y nos llevarán a un shell seguro. Para crear una sesión de GUI interactiva será específica para su escritorio. Para KDE, simplemente escriba lo siguiente:

$ startx -: 1

Los usuarios del escritorio GNOME deberán usar este comando en su lugar:

$ gnome-session 

Cualquier usuario que experimente problemas con esto debe buscar configurar los archivos XInitrc y/o XSession de Thier Distro. Las líneas de estos archivos pueden variar entre las distribuciones y almacenarse en muchas ubicaciones diferentes. Sin embargo, he encontrado muchas distribuciones, como Debian Sid, trabajaron sin configuración o solución de problemas. Consulte la documentación de su distribución para obtener ayuda.

Una vez que haya emitido el comando para su sesión de escritorio, debe tener un escritorio GUI del cuadro remoto. A diferencia de XRDP, esta sesión envolverá su monitor completo en lugar de una ventana escalable. Puede cambiar entre la sesión remota y su escritorio local alternando entre el control+Alt+F7 y el control+Alt+F8. Solo asegúrese de no cerrar la sesión con la máquina remota. Hacerlo puede cerrar el cliente desde el que está monitoreando y no hacer una detección muy sigilosa.

Ahora que estamos dentro de la máquina remota que podemos usar, puede usar su cliente SSH o proxychains para túnel más profundo. Hacerlo nos permitirá subir a las redes con o sin DHCP como antes.

Conclusión

Si bien este tipo de monitoreo puede parecer intrusivo, cualquier administrador serio se encontrará necesitarlo en algún momento. Ya sea que necesite arreglar una máquina remota con una aplicación GUI o asegurarse de que sus empleados no estén guardando fotos lascivas en una máquina de trabajo. El uso de SSH no solo lo protege de los atacantes, sino que también permite a los túneles a las redes que ni siquiera puede hacer ping, el uso de este tipo de administración le permite monitorear sin que los clientes lo noten fácilmente o interrumpan su trabajo. Utilice esta información de manera responsable y recuerde: “Con gran poder viene una gran responsabilidad."

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Configuración de la red en Manjaro Linux
  • Cómo probar la conexión a Internet en Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo administrar conexiones inalámbricas usando IWD en Linux
  • Linux: Configuración SSH
  • Sistema colgado de Linux? Cómo escapar a la línea de comando y ..