Configuración y Uso de dns2tcp para Túneles TCP sobre DNS

El proyecto dns2tcp es una herramienta diseñada para encapsular conexiones TCP a través de tráfico DNS, facilitando la tunelización de red en entornos donde otras comunicaciones están restringidas. A continuación, se detalla su estructura de directorios y los pasos clave para su configuración y operación.

Estructura del Proyecto dns2tcp

La organización de los archivos y directorios de dns2tcp se presenta de la siguiente manera:

alex-sector/dns2tcp/
├── client/
│   ├── common/
│   └── man/
├── common/
├── man/
├── server/
│   ├── AUTHORS
│   ├── ChangeLog
│   ├── INSTALL
│   ├── LICENSE
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── NEWS
│   ├── README
│   ├── README.md
│   ├── aclocal.m4
│   ├── config.guess
│   ├── config.h.in
│   ├── config.sub
│   ├── configure
│   ├── configure.in
│   ├── depcomp
│   ├── install-sh
│   ├── missing
│   ├── mkinstalldirs
│   └── server/
└── ...

Descripción de los Componentes Clave:

  • client/: Contiene el código fuente y la documentación para la aplicación cliente, responsable de iniciar los túneles desde el lado del usuario.
  • common/: Aloja código y recursos compartidos que son utilizados tanto por el componente cliente como por el servidor.
  • server/: Incluye el código fuente y la documentación del componente servidor, que es el encargado de procesar las solicitudes de túnel DNS.
  • AUTHORS: Documento que lista a los autores y contribuidores del proyecto.
  • ChangeLog: Registro detallado de los cambios y actualizaciones realizadas en el código a lo largo del tiempo.
  • INSTALL: Proporciona instrucciones sobre cómo instalar el software.
  • LICENSE: Información sobre la licencia bajo la cual se distribuye el proyecto.
  • Makefile.am, Makefile.in: Archivos de configuración para el sistema de construcción (Make) que automatizan el proceso de compilación.
  • NEWS: Anuncios y novedades importantes sobre el desarrollo del proyecto.
  • README, README.md: Documentación principal que ofrece una visión general del proyecto y su funcionamiento.
  • Otros archivos como configure, aclocal.m4, entre otros, son scripts esenciales para la preparación y compilación del entorno.

Inicialización del Servidor dns2tcp

Los ejecutables principales de dns2tcp se encuentran en el directorio server/. Los elementos clave para el arranque del servidor son:

  • dns2tcpd: Este es el binario principle del servidor. Al ejecutarlo, se inicia el servicio de retransmisión de tráfico TCP a través de DNS.
  • dns2tcpdrc: Es el archivo de configuración dedicado al servidor, donde se definen todos los parámetros operativos y de seguridad.

Para poner en marcha el servidor dns2tcp, se invoca el ejecutable dns2tcpd, especificando la ruta al archivo de configuración con la opción -f:

dns2tcpd -f dns2tcpdrc

Archivos de Configuración de dns2tcp

La funcionalidad de dns2tcp se personaliza a través de dos archivos de configuración distintos: uno para el servidor y otro para el cliente.

Configuración del Servidor: dns2tcpdrc

Este archivo es fundamental para determinar el comportamiento del demonio de dns2tcp. A continuación, se muestra un ejemplo de su contenido junto con la descripción de cada directiva:

listen = x.x.x.x
port = 53
user = nobody
key = miclavesecreta
chroot = /var/empty/dns2tcp/
domain = tunel.ejemplo.com
resources = ssh:127.0.0.1:22 web:127.0.0.1:8080 rdp:10.0.0.5:3389

  • listen: Establece la dirección IP en la que el servidor dns2tcp escuchará las solicitudes entrantes de DNS.
  • port: Define el puerto de escucha del servidor, siendo 53 el puerto estándar para el servicio DNS.
  • user: Especifica el usuario del sistema bajo el cual se ejecutará el proceso del servidor, una práctica recomendada por seguridad para evitar privilegios de root innecesarios.
  • key: Una clave pre-compartida (PSK) que actúa como mecanismo de autenticación simple entre el cliente y el servidor. Es crucial mantenerla segura y compartida únicamente entre las partes.
  • chroot: Determina un directorio raíz para el proceso del servidor, una medida de seguridad que aísla el servicio de otras partes del sistema de archivos.
  • domain: El dominio DNS que el servidor monitoreará y porcesará para las solicitudes de tunelización.
  • resources: Una lista de servicios (recursos) que pueden ser accedidos a través del túnel. Cada recurso se define con el formato nombre_recurso:IP_destino:Puerto_destino, mapeando un servicio interno a un nombre accesible por el cliente.

Configuración del Cliente: dns2tcprc

El cliente dns2tcp necesita su propio archivo de configuración para establecer la conexión deseada con el servidor remoto. Un modelo de configuración típica es el siguiente:

domain = tunel.ejemplo.com
resource = web
local_port = 8080
debug_level = 1
key = miclavesecreta
server = 192.0.2.1

  • domain: El dominio DNS que el cliente utilizará para sus consultas y la comunicación del túnel. Este valor debe coincidir con el configurado en el servidor.
  • resource: El nombre del recurso específico que el cliente desea acceder a través del túnel. Este nombre debe estar previamente definido en la configuración del servidor.
  • local_port: El puerto en la máquina cliente donde se establecerá un proxy local para reenviar el tráfico al túnel. El usuario se conectará a este puerto para acceder al recurso remoto.
  • debug_level: El nivel de detalle para los mensajes de depuración que generará el cliente, útil para la resolución de problemas.
  • key: La misma clave pre-compartida configurada en el servidor, utilizada para autenticar la conexión cliente-servidor.
  • server: La dirección IP o el nombre de host del servidor DNS público que es capaz de resolver las consultas de túnel hacia el servidor dns2tcp.

Etiquetas: dns2tcp DNS tunneling network security TCP over DNS covert channels

Publicado el 9-21 10:07