Cómo configurar el proxy Dante para conexiones privadas en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Dante
  • Paso 2: Asegurar Dante
  • Paso 3: Conexión a través de Dante
  • Conclusión
  • Los servidores proxy son un tipo de aplicación de servidor que funciona como una puerta de enlace entre un usuario final y un recurso de Internet. A través de un servidor proxy, un usuario final puede controlar y supervisar su tráfico web para una amplia variedad de propósitos, incluidos la privacidad, la seguridad y el almacenamiento en caché. Por ejemplo, puede utilizar un servidor proxy para realizar solicitudes web desde una dirección IP diferente a la suya. También puede utilizar un servidor proxy para investigar cómo se sirve la web de forma diferente de una jurisdicción a otra, o evitar algunos métodos de vigilancia o limitación del tráfico web.

    Dante es un proxy SOCKS estable, popular y de código abierto. En este tutorial, instalará y configurará Dante para proporcionar un proxy SOCKS en un servidor Ubuntu 20.04.

    Prerrequisitos

    Para completar esta guía, necesitarás:

    • Un servidor Ubuntu 20.04 y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .

    En este tutorial, utilizarás el nombre de dominio your_domain , pero deberás sustituirlo por tu propio nombre de dominio o dirección IP.

    Paso 1: Instalación de Dante

    Dante es un servidor proxy SOCKS de código abierto. SOCKS es un protocolo menos utilizado, pero es más eficiente para algunas aplicaciones peer to peer y se prefiere a HTTP para algunos tipos de tráfico. Comience ejecutando los siguientes comandos como usuario no root para actualizar sus listas de paquetes e instalar Dante:

    1. sudo apt update
    2. sudo apt install dante-server

    Dante también configurará automáticamente un servicio en segundo plano y se iniciará después de su instalación. Sin embargo, está diseñado para cerrarse sin problemas con un mensaje de error la primera vez que se ejecuta, ya que viene con todas sus funciones deshabilitadas. Puede verificar esto utilizando el systemctlcomando:

    1. systemctl status danted.service
    Output● danted.service - SOCKS (v4 and v5) proxy daemon (danted)     Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)     Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago       Docs: man:danted(8)             man:danted.conf(5)   Main PID: 14496 (code=exited, status=1/FAILURE)Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)...Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted).Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled.  This means all socks requests will be blocked after negotiation. Perhaps this is not intended?

    Para iniciar con éxito los servicios de Dante, deberá habilitarlos en el archivo de configuración.

    El archivo de configuración de Dante se proporciona, por defecto, en formato /etc/danted.conf. Si abres este archivo con nanoo tu editor de texto favorito, verás una larga lista de opciones de configuración, todas ellas deshabilitadas. Puedes intentar navegar por este archivo y habilitar algunas opciones línea por línea, pero en la práctica será más eficiente y más legible borrar este archivo y reemplazarlo desde cero. No te preocupes por hacer esto. Siempre puedes revisar la configuración predeterminada de Dante navegando a su manual en línea , e incluso puedes volver a descargar el paquete manualmente desde la lista de paquetes de Ubuntu para volver a obtener el archivo de configuración estándar si alguna vez lo deseas. Mientras tanto, sigue adelante y elimínalo:

    1. sudo rm /etc/danted.conf

    Ahora puedes reemplazarlo por algo más conciso. Al abrir un archivo con un editor de texto, se creará automáticamente el archivo si no existe, por lo que, si usas nanotu editor de texto favorito, ahora deberías obtener un archivo de configuración vacío:

    1. sudo nano /etc/danted.conf

    Añade el siguiente contenido:

    /etc/danted.conf

    logoutput: sysloguser.privileged: rootuser.unprivileged: nobody# The listening network interface or address.internal: 0.0.0.0 port=1080# The proxying network interface or address.external: eth0# socks-rules determine what is proxied through the external interface.socksmethod: username# client-rules determine who can connect to the internal interface.clientmethod: noneclient pass {    from: 0.0.0.0/0 to: 0.0.0.0/0}socks pass {    from: 0.0.0.0/0 to: 0.0.0.0/0}

    Ahora tiene una configuración de servidor SOCKS utilizable, que se ejecuta en el puerto 1080, que es una convención común para SOCKS. También puede desglosar el resto de este archivo de configuración línea por línea:

    • logoutputSe refiere a cómo Dante registrará las conexiones, en este caso utilizando el registro del sistema normal.
    • user.privilegedpermite que dante tenga rootpermisos para verificar permisos
    • user.unprivilegedno otorga al servidor ningún permiso para ejecutarse como un usuario sin privilegios, ya que esto no es necesario cuando no se otorgan permisos más granulares
    • internalLos detalles de conexión especifican el puerto en el que se ejecuta el servicio y qué direcciones IP pueden conectarse.
    • externalLos detalles de conexión especifican la interfaz de red utilizada para las conexiones salientes, eth0de forma predeterminada en la mayoría de los servidores.

    El resto de los detalles de configuración se ocupan de los métodos de autenticación, que se analizan en la siguiente sección. No olvide abrir el puerto 1080 en su firewall si está utilizando ufw:

    1. sudo ufw allow 1080

    En este punto, podrías reiniciar Dante y conectarte a él, pero tendrías un servidor SOCKS abierto a todo el mundo, lo cual probablemente no quieras, así que aprenderás a protegerlo primero.

    Paso 2: Asegurar Dante

    Si has seguido este tutorial hasta ahora, Dante utilizará cuentas de usuario Linux normales para la autenticación. Esto es útil, pero la contraseña utilizada para esa conexión se enviará en texto sin formato, por lo que es importante crear un usuario SOCKS dedicado que no tenga ningún otro privilegio de inicio de sesión. Para ello, utilizarás useraddindicadores que no asignarán un shell de inicio de sesión al usuario y, a continuación, establecerás una contraseña:

    1. sudo useradd -r -s /bin/false your_dante_user
    2. sudo passwd your_dante_user

    También conviene evitar iniciar sesión en esta cuenta a través de una conexión inalámbrica no segura o compartir el servidor con demasiada frecuencia. De lo contrario, los actores maliciosos pueden intentar iniciar sesión repetidamente.

    Dante admite otros métodos de autenticación, pero muchos clientes (es decir, aplicaciones) que se conectarán a servidores proxy SOCKS solo admiten la autenticación básica de nombre de usuario y contraseña, por lo que es posible que desee dejar esa parte como está. Lo que puede hacer como alternativa es restringir el acceso solo a direcciones IP específicas. Esta no es la opción más sofisticada, pero dada la combinación de tecnologías que se utilizan aquí, es una opción sensata. Es posible que ya haya aprendido cómo restringir el acceso a direcciones IP específicas con ufwnuestros tutoriales de requisitos previos, pero también puede hacerlo directamente dentro de Dante. Edite su /etc/danted.conf:

    1. sudo nano /etc/danted.conf

    /etc/danted.conf

    …client pass {    from: your_ip_address/0 to: 0.0.0.0/0}

    Para admitir varias direcciones IP, puede utilizar la notación CIDR o simplemente agregar otro client pass {}bloque de configuración:

    /etc/danted.conf

    client pass {    from: your_ip_address/0 to: 0.0.0.0/0}client pass {    from: another_ip_address/0 to: 0.0.0.0/0}

    Después de eso, finalmente podrás reiniciar Dante con los cambios de configuración.

    1. sudo systemctl restart danted.service

    Esta vez, cuando verifiques el estado del servicio, deberías ver que se ejecuta sin errores:

    1. systemctl status danted.service
    Output● danted.service - SOCKS (v4 and v5) proxy daemon (danted)     Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable     Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago

    En el siguiente paso te conectarás finalmente a tu proxy.

    Paso 3: Conexión a través de Dante

    Para demostrar el funcionamiento de su servidor Dante, utilizará un programa de línea de comandos llamado curl, que es popular para realizar distintos tipos de solicitudes web. En general, si desea verificar si una conexión determinada debería funcionar en un navegador en circunstancias ideales, siempre debe probar primero con curl. Para ello, utilizará curl en su máquina local ; está instalado de forma predeterminada en todos los entornos modernos de Windows, Mac y Linux, por lo que puede abrir cualquier shell local para ejecutar este comando:

    1. curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
    Output*   Trying 138.197.103.77...* TCP_NODELAY set* SOCKS5 communication to www.google.com:80* SOCKS5 connect to IPv4 142.250.189.228 (locally resolved)* SOCKS5 request granted.* Connected to 138.197.103.77 (138.197.103.77) port 1080 (#0) GET / HTTP/1.1…

    Las credenciales que utilizó curlahora deberían funcionar en cualquier otro lugar donde desee utilizar su nuevo servidor proxy.

    Conclusión

    En este tutorial, aprendiste a implementar un punto final de API de código abierto popular para redirigir el tráfico con poca o ninguna sobrecarga. Muchas aplicaciones tienen compatibilidad con servidores proxy integrada (a menudo a nivel del sistema operativo) desde hace décadas, lo que hace que esta pila de servidores proxy sea altamente reutilizable.

    A continuación, es posible que desees aprender a implementar Squid , un proxy HTTP que puede ejecutarse junto con Dante para representar distintos tipos de tráfico web.

    Dado que uno de los casos de uso más comunes de los servidores proxy es el tráfico hacia y desde diferentes regiones globales, es posible que desees revisar cómo usar Ansible para automatizar las implementaciones de servidores a continuación, en caso de que desees duplicar esta configuración en otros centros de datos.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion