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:
ncat-nmap
paquete (debe instalarse de forma predeterminada)- Un duplicado funcional del servidor1 portal en servidor2
- 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. ]