Dante
Dante es un servidor proxy SOCKS (v4/v5) que permite enrutar conexiones TCP/UDP a través de un servidor intermedio. Ideal para redirigir tráfico de salida, encapsular conexiones o simplemente restringir el acceso a recursos externos.
Instalacion
En sistemas basados en Debian (APT):
| apt update
apt install dante-server -y
|
Configuración
El archivo principal de configuración es /etc/danted.conf.
Parámetros de configuracion:
Logs:
| === LOGS ===
Salida del log.
Valores:
- /var/log/danted.log
- syslog
logoutput: /var/log/danted.log
|
Interfaces:
| === INTERFACES ===
IP/Interfaz y puerto en el que escucha peticiones.
Valores:
- eth0 port = 1080
- 0.0.0.0 port = 1080
internal: 0.0.0.0 port = 1080
IP/Interfaz por la que salen peticiones.
Valores:
- eth0
- 192.168.8.10
external: eth0
|
Usuario del aplicativo:
| === USUARIO NO PRIVILEGIADO ===
Usuario que usará el proceso una vez arrancado (mejor uno con permisos mínimos)
user.notprivileged: nobody
|
Metodos de autenticacion:
| === MÉTODOS DE AUTENTICACIÓN ===
El metodo de autenticacion.
Valores:
- none (proxy abierto)
- username (proxy filtrado por usuario y contraseña)
method: none
method: username
Se pueden habilitar ambos metodos, el primero tiene prioridad:
method: username none
El usuario se autentica contra el sistema, por lo que hay que crear el usuario en linux.
|
Reglas de cliente:
| === REGLAS DE CLIENTE ===
client: puede tener valor pass o block para indicar que la regla acepta o bloquea las peticiones de entrada.
- pass
- block
from: infica el origen y destino (y puerto si se indica)
- 192.168.1.10/32 to: 8.8.8.8/32 port = 53
- 192.168.1.10/32 to: 8.8.8.8/32
log: indica lo que se registrara en el log sobre esta regla
connect: Se logea al iniciar una conexión.
disconnect: Se logea al cerrar una conexión.
error: Registra errores de conexión o autenticación.
data: Muestra tráfico.
Estructura:
client pass {
from:
log:
}
client block {
from:
log:
}
|
Reglas del SOCKS:
| === REGLAS DE SOCKS ===
socks: puede tener valor pass o block para indicar que la regla acepta o bloquea las peticiones de salida.
- pass
- block
from: infica el origen y destino (y puerto si se indica)
- 192.168.1.10/32 to: 8.8.8.8/32 port = 53
- 192.168.1.10/32 to: 8.8.8.8/32
command: indica el tipo de trafico que esta permitido
- connect: Permite conexiones TCP hacia destinos externos.
- bind: Permite conexiones TCP entrantes (como un servidor que escucha detrás del proxy).
- udpassociate: Habilita tráfico UDP (útil para DNS, VoIP, etc.).
- udpreply: Respuestas UDP relacionadas con udpassociate
log: indica lo que se registrara en el log sobre esta regla
- connect: Se logea al iniciar una conexión.
- disconnect: Se logea al cerrar una conexión.
- error: Registra errores de conexión o autenticación.
- data: Muestra tráfico.
Estructura:
socks pass {
from:
command:
log:
}
socks block {
from:
command:
log:
}
|
Para el modo de autenticación necesitas crear usuarios en el sistema: `useradd -M -s /usr/sbin/nologin proxyuser` `passwd proxyuser`
Configuración Proxy Abierto:
| internal: eth0 port = 1080
external: eth0
method: none
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: connect disconnect error
}
EOF
|
Configuración Proxy con Autenticación
| internal: eth0 port = 1080
external: eth0
method: username
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: connect disconnect error
}
EOF
|
Iniciar el servicio
| systemctl enable danted
systemctl start danted
|
Tests
Sin autenticación:
| curl --socks5 192.168.1.10:1080 http://ipinfo.io
|
Sin autenticación y resolución DNS via proxy:
| curl --socks5-hostname 192.168.1.10:1080 http://ipinfo.io
|
Con autenticación:
Con autenticacion y resolución DNS vía proxy SOCKS5:
Logs y debug
Fichero de log:
| tail -f /var/log/danted.log
|
También puedes iniciar el servicio en modo debug:
| sockd -f /etc/danted.conf -D
|