GNU/Linux >> Tutoriales Linux >  >> Linux

Administradores de sistemas de Linux:comprendan el poder de ncat para evitar riesgos de seguridad accidentales

El ncat El comando es parte de la suite nmap y fue escrito específicamente para él. Es cierto que ncat tiene tantos usos como la famosa navaja suiza, pero puede ser igual de peligrosa cuando se usa incorrectamente o cuando la usan actores malintencionados. Uno de sus puntos fuertes es que ncat puede ser tanto cliente como servidor. Este artículo se centra en un aspecto de esa relación. Te muestro cómo abrir un shell bash de escucha con ncat que cualquiera puede acceder con ncat como cliente En mi artículo, Solución de problemas de Linux:configuración de un oyente TCP con ncat, describo cómo configurar ncat como un oyente o servidor que escucha en un puerto específico. Este ejemplo es similar, pero creo que te impresionará el gran poder que ncat te dio. También debería asustarte mucho.

Instalar ncat

Verifique su sistema en /usr/bin primero para ver si necesita instalar ncat . Por lo general, se incluye en cualquier distribución basada en Red Hat Enterprise Linux. Si encuentra que necesita instalarlo, el nombre del paquete es nmap-ncat . Puedes instalar ncat por sí mismo o instalar nmap y el nmap-ncat el paquete se instala como una dependencia.

Usar ncat

No emita ncat comandos como raíz, especialmente para los ejemplos de este artículo. Si lo hace, permitirá que cualquier persona tenga acceso de root a su sistema sin autenticación. Cualquier usuario puede emitir ncat comandos, que es una de sus características, así como uno de sus peligros. Le sugiero que cree una cuenta de servicio y trabaje con ncat usando esa cuenta. Confía en mí, he escuchado todos los argumentos a favor y en contra de las cuentas de servicio, pero una vez que veas ncat en acción, querrá usar la cuenta de servicio para interactuar con ella.

Entregar un bash shell

Esta es la parte divertida (y peligrosa) de usar ncat . Cambie de usuario a su nueva cuenta de servicio. He llamado al mío tímido .

[ken@server1 ~] $ su - bashful
Password: 
[bashful@server1 ~] $

Ahora que ha cambiado de cuenta de usuario, es hora de abrir ese shell. Brinda acceso no autenticado a su sistema a través de un shell en su mayoría interactivo. Verá lo que quiero decir con "principalmente" interactivo una vez que se conecte. El siguiente comando usa ncat para ejecutar un shell bash que escucha en un puerto TCP. Para este ejemplo, estoy usando el puerto 9922 en el servidor 1 (192.168.1.50). El -l La opción configura un puerto de escucha. El -k La opción es un indicador de actividad, que mantiene el socket. Si no emite el -k opción, el socket muere después de desconectar la sesión y no se pueden realizar otras conexiones.

[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &

El -e La opción ejecuta el comando entre comillas, que en nuestro caso es el shell bash (/bin/bash ). Yo uso el ampersand (& ) después del comando para liberar mi aviso y poner el ncat oyente en modo de fondo. Si no usa el & , entonces su terminal se "colgará" y no le permitirá interactuar con él. Si eso no es un problema para usted, déjelo como está.

Emitiendo el netstat El comando muestra que el oyente está en su lugar.

[bashful@server1 ~]$ netstat -an |grep 9922
tcp        0      0 0.0.0.0:9922            0.0.0.0:*               LISTEN     
tcp6       0      0 :::9922                 :::*                    LISTEN     
[bashful@server1 ~]$

Para conectarse al puerto de escucha desde un sistema remoto, también debe abrir una excepción en el servidor de seguridad basado en host para el puerto 9922.

[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success

¿Ves el mecanismo de seguridad aquí? Es la excepción del firewall que tuve que crear usando mi cuenta y sudo . Si tiene un servidor de seguridad basado en host o IPTables en ejecución (y es mejor que lo tenga), entonces este servicio no funcionará hasta que permita ese puerto, lo que significa que ningún usuario común puede hacer que esto funcione sin acceso administrativo. De lo contrario, los usuarios educados en ncat estarían abriendo puertos por todas partes y volviéndolo loco en el proceso. Sin mencionar los problemas de seguridad que tendrías. Estoy divagando.

Acceder al shell desde un sistema remoto

Ahora puede acceder al shell bash desde un sistema remoto en el puerto 9922.

[ken@server2 ~]$ ncat 192.168.1.50 9922

Desde servidor2 , emita el ncat comando con la dirección IP de destino de servidor1 y el puerto de escucha 9922. Una vez que estás conectado, no pasa nada, o eso podrías creer porque la terminal parece colgarse. Pero lo que realmente sucede es que se está comunicando con el socket sin procesar y, por lo tanto, no verá un aviso. Pruébelo emitiendo el who comando.

[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken    pts/0        2020-08-26 13:39 (server2)

Puede emitir cualquier comando que desee que el usuario tímido tiene acceso a. Si emite un comando que requiere acceso de root, es probable que no vea una respuesta. El terminal parecerá permanecer en el estado "colgado". Tu respuesta aparecerá en la terminal de servidor1 . Por ejemplo, si emite el siguiente comando:

firewall-cmd --list-all

No ve nada en servidor2 pantalla de En servidor1 en la pantalla, aparece lo siguiente:

[bashful@server1 ~]$ Authorization failed.
    Make sure polkit agent is running or run the application as superuser.

Para desconectarse del servidor2 shell clandestino de, emita Ctrl+C combinación y vuelve a aparecer el aviso local.

No intentes esto en el trabajo

Solo por diversión, o si no me crees, mata al ncat actual proceso usando su cuenta de servicio o como root. Luego, vuelva a emitir el mismo comando que el usuario root para ejecutar ese shell bash como root. Conéctese nuevamente desde un sistema remoto y vuelva a emitir ese comando de firewall. Esta vez verás los resultados. Puede ejecutar cualquier comando como root, por lo que nunca desea configurar este tipo de servicio como usuario root.

Y ahora ves el peligro real de usar ncat como raíz. Los actores malintencionados configurarán un shell de este tipo en un puerto clandestino que no haya sido detectado por un escaneo de puertos y tendrán acceso completo a la raíz sin autenticación.

Resumir

El muy útil y potencialmente muy peligroso ncat El mando es tu mejor amigo y tu peor enemigo. Como cualquier otra herramienta en el cobertizo, no tiene otra intención que no sea la que le das. Deberías estudiar el ncat comando, sus usos y sus limitaciones en su entorno. Recuerda matar a cualquier ncat proceso que no desea ejecutar continuamente una vez que haya terminado con él y elimine la excepción de firewall que permite su acceso. Además, recuerda que un gran poder conlleva la capacidad de arruinar las cosas de verdad.

[ ¿Quiere poner a prueba sus habilidades de administrador de sistemas? Tome una evaluación de habilidades hoy. ]


Linux
  1. Cómo cambiar el puerto SSH en Linux

  2. Configuración de redirecciones de puertos en Linux con ncat

  3. Administradores de sistemas de Linux:comprendan el poder de ncat para evitar riesgos de seguridad accidentales

  4. Linux:¿entiende cómo iniciar sesión en Linux?

  5. Linux – ¿Puerto serie Raspberrypi?

Cómo hacer ping a un número de puerto en Linux

Uso del reenvío de puertos SSH como herramienta de seguridad en Linux

90 comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux

Abrir un puerto en Linux

Seguridad de Linux frente a Windows

5 prácticas recomendadas de seguridad SSH de Linux para proteger sus sistemas