Elegir métodos de autenticación SOCKS5 en Dante
Entienda cómo Dante selecciona un método de autenticación SOCKS5 ofrecido y cómo el orden de los métodos cambia la política que experimentan los clientes.
Con SOCKS5, la autenticación se negocia antes de que el cliente envíe su solicitud de destino. Eso hace que un fallo temprano de credenciales sea un evento distinto de un fallo de FTP, HTTPS u otra aplicación más allá del proxy.
El saludo del cliente enumera los métodos de autenticación que admite. El servidor elige un método de esa lista y devuelve la selección. Un valor 0xff significa que ningún método ofrecido es aceptable y la conexión debe cerrarse. El cliente no se limita a probar todos los métodos del lado del servidor después de que falle una contraseña.
Qué controla el orden en Dante
Dante 1.4.x llama al ajuste de nivel de protocolo socksmethod. Su documentación dice que los métodos se enumeran en orden de preferencia. Para una política que permite ambos métodos, esta declaración prefiere nombre de usuario/contraseña cuando el cliente lo ofrece:
socksmethod: username noneInvertir la lista prefiere el acceso no autenticado cuando se ofrecen ambos métodos:
socksmethod: none usernameEstas son declaraciones de métodos alternativas, no configuraciones completas del servidor. Las interfaces de escucha, los clientes permitidos, las reglas de destino y cualquier restricción de autenticación específica de una regla siguen importando.
Permitir none tiene una consecuencia concreta: un cliente que solo ofrece ninguna autenticación puede ser aceptado según las reglas aplicables. Poner username primero no convierte una lista que contiene none en un requisito de que todos proporcionen una contraseña.
Elija primero el requisito
Si cada cliente permitido debe autenticarse con nombre de usuario/contraseña, configure ese requisito de forma coherente en las reglas globales y aplicables en lugar de añadir none como solución general de compatibilidad. Si el acceso anónimo es intencional para un grupo restringido de clientes, haga explícitos el grupo y sus destinos permitidos.
Dante también tiene clientmethod, que se refiere a las comprobaciones realizadas cuando el cliente TCP se conecta, antes de la negociación SOCKS. Es una capa separada de los métodos intercambiados en el saludo SOCKS5. Los fragmentos de configuración que usan una palabra clave method más antigua deben leerse según el manual de la versión de Dante instalada.
Cuando dos clientes se comportan de forma diferente, compare qué ofrece cada uno, qué selecciona Dante y si la subnegociación del método elegido tiene éxito. Luego inspeccione la respuesta de destino SOCKS. Esta secuencia identifica una devolución de llamada de credenciales faltante sin atribuir cada fallo a FTP ni cambiar a ciegas la política de autenticación del servidor.
Por último, la autenticación con nombre de usuario/contraseña de SOCKS5 no cifra el intercambio de la contraseña. Utilice un transporte o una red protegidos adecuadamente cuando esas credenciales necesiten confidencialidad.