GNU/Linux >> Tutoriales Linux >  >> Linux

Configuración de redirecciones de puertos en Linux con ncat

Como sabe por mis dos artículos anteriores, Solución de problemas de Linux:Configuración de un agente de escucha TCP con ncat y El comando ncat es una herramienta de seguridad problemática para los administradores de sistemas de Linux, netcat es un comando que es a la vez tu mejor amigo y tu peor enemigo. Y este artículo perpetúa aún más este hecho con una mirada a cómo ncat ofrece una opción útil, pero potencialmente peligrosa, para crear un enlace de redirección de puertos. Le muestro cómo configurar un enlace de reenvío de puerto o sitio para que pueda realizar el mantenimiento en un sitio sin dejar de atender a los clientes.

El escenario

Debe realizar el mantenimiento de una instalación de Apache en servidor1 , pero no desea que el servicio aparezca sin conexión para sus clientes, que en este escenario son usuarios corporativos internos del portal laboral que registra las horas trabajadas para sus usuarios remotos. En lugar de notificarles que el portal estará fuera de línea durante seis a ocho horas, decidió crear un servicio de reenvío a otro sistema, servidor2. , mientras te ocupas del servidor1 necesidades de.

Este método es una manera fácil de mantener vivo un servicio específico sin jugar con el DNS o la configuración NAT del firewall corporativo.

Servidor1:Puerto 8088

Servidor2:Puerto 80

Los pasos

Para configurar este reenvío de sitio/servicio, debe cumplir los siguientes requisitos previos:

  1. ncat-nmap paquete (debe instalarse de forma predeterminada)
  2. Un duplicado funcional del servidor1 portal en servidor2
  3. Root o sudo acceso a los servidores 1 y 2 para cambios de firewall

Si ha superado estos obstáculos, es hora de hacer realidad este cambio.

La implementación

Configurando ncat de esta manera hace uso de conductos con nombre, que es una forma eficiente de crear este enlace de comunicación bidireccional al escribir y leer desde un archivo en su directorio de inicio. Hay varias formas de hacer esto, pero voy a usar la que mejor funcione para este tipo de reenvío de puertos.

Crear la canalización con nombre

Crear la tubería con nombre es fácil usando mkfifo comando.

$ mkfifo svr1_to_svr2

$ file svr1_to_svr2
svr1_to_svr2: fifo (named pipe)

Usé el file comando para demostrar que el archivo está allí y es una canalización con nombre. Este comando no es necesario para que el servicio funcione. Llamé al archivo svr1_to_svr2 , pero puede usar cualquier nombre que desee. Elegí este nombre porque estoy reenviando desde servidor1 a servidor2 .

Crear el servicio de reenvío

Formalmente, esto se llamaba configuración de una retransmisión de oyente a cliente , pero tiene un poco más de sentido si piensas en esto en términos de firewall, de ahí mi nombre y descripción de "reenviar".

$ ncat -k -l 8088 < svr1_to_svr2 | ncat 192.168.1.60 80 > svr1_to_svr2 &

Emitir este comando lo lleva de regreso a su aviso porque puso el servicio en segundo plano con & . Como puede ver, la canalización con nombre y el servicio se crean como un usuario estándar. Discutí las razones de esta restricción en mi artículo anterior, El comando ncat es una herramienta de seguridad problemática para los administradores de sistemas de Linux.

Desglose de comandos

La primera parte del comando, ncat -k -l 8088 , configura el detector para las conexiones que normalmente respondería el servicio Apache en servidor1 . Ese servicio está fuera de línea, por lo que crea un oyente para responder a esas solicitudes. El -k La opción es la función de mantenimiento, lo que significa que puede atender múltiples solicitudes. El -l es la opción de escucha. Port 8088 es el puerto que desea imitar, que es el del portal del cliente.

La segunda parte, a la derecha del operador de canalización (| ), acepta y transmite las solicitudes a 192.168.1.60 en el puerto 80. La canalización con nombre (svr1_to_svr2 ) maneja la entrada y salida de datos.

El uso

Ahora que ha configurado su relé, es fácil de usar. Apunte su navegador al host original y al portal del cliente, que es http://server1:8088 . Esto redirige automáticamente su navegador a servidor2 en el puerto 80. Su navegador aún muestra la URL y el puerto originales.

Descubrí que demasiadas solicitudes repetitivas pueden hacer que este servicio falle con un mensaje de tubería rota en servidor1 . Esto no siempre mata el servicio, pero puede hacerlo. Mi sugerencia es configurar un script para verificar el forward comando, y si no existe, reinícielo. No puede verificar la existencia de svr1_to_svr2 archivo porque siempre existe. Recuerda, lo creaste con el mkfifo comando.

La advertencia

La desventaja de este ncat La capacidad es que un usuario podría reenviar el tráfico a su propio sitio duplicado y recopilar nombres de usuario y contraseñas. El actor malintencionado tendría que eliminar el servicio de escucha/web del puerto actual para que esto funcione, pero es posible hacerlo incluso sin acceso de root. Los administradores de sistemas deben mantener la vigilancia a través del monitoreo y las alertas para evitar este tipo de lagunas de seguridad.

La conclusión

El ncat El comando tiene tantos usos que requiere un artículo por función para describir cada uno. Este artículo le presentó el concepto de retransmisión de oyente a cliente, o reenvío de servicios, como yo lo llamo. Es útil para períodos de mantenimiento breves, pero no debe utilizarse para redireccionamientos permanentes. Para esos, debe editar las reglas NAT de firewall corporativo y DNS para enviar solicitudes a sus nuevos destinos. Debe recordar apagar cualquier ncat oyentes cuando haya terminado con ellos, ya que abren un sistema para comprometerse. Nunca cree estos servicios con la cuenta de usuario root.

[ Haga que administrar su red sea más fácil que nunca con Automatización de red para todos, un libro gratuito de Red Hat. ]


Linux
  1. Comando Linux Tee con ejemplos

  2. Tutorial de comandos de servicio de Linux para principiantes (con ejemplos)

  3. Comando de cabeza de Linux con ejemplos

  4. Solución de problemas de Linux:configuración de un agente de escucha TCP con ncat

  5. Ejemplos de comandos de servicio en Linux

Comando Echo en Linux con ejemplos

Comando ip de Linux con ejemplos

Comando Tr en Linux con ejemplos

15 comandos ps de Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando chkconfig de Linux con ejemplos