Escolher métodos de autenticação SOCKS5 no Dante
Entenda como o Dante seleciona um método de autenticação SOCKS5 oferecido e como a ordem dos métodos altera a política que os clientes experimentam.
Com SOCKS5, a autenticação é negociada antes de o cliente enviar o pedido de destino. Isso faz de uma falha precoce de credenciais um evento diferente de uma falha de FTP, HTTPS ou outra aplicação além do proxy.
A saudação do cliente lista os métodos de autenticação que ele suporta. O servidor escolhe um método dessa lista e devolve a seleção. O valor 0xff significa que nenhum método oferecido é aceitável e a conexão deve ser fechada. O cliente não simplesmente tenta todos os métodos do lado do servidor depois que uma palavra-passe falha.
O que a ordenação do Dante controla
O Dante 1.4.x chama à definição ao nível do protocolo socksmethod. A sua documentação diz que os métodos são listados por ordem de preferência. Para uma política que permite ambos os métodos, esta declaração prefere nome de utilizador/palavra-passe quando o cliente o oferece:
socksmethod: username noneInverter a lista prefere o acesso não autenticado quando ambos os métodos são oferecidos:
socksmethod: none usernameEstas são declarações de métodos alternativas, não configurações completas do servidor. As interfaces de escuta, os clientes permitidos, as regras de destino e quaisquer restrições de autenticação específicas de uma regra continuam a importar.
Permitir none tem uma consequência concreta: um cliente que apenas oferece nenhuma autenticação pode ser aceite ao abrigo das regras aplicáveis. Colocar username primeiro não transforma uma lista que contém none num requisito de que todos forneçam uma palavra-passe.
Escolha primeiro o requisito
Se todos os clientes permitidos tiverem de autenticar com nome de utilizador/palavra-passe, configure esse requisito de forma consistente nas regras globais e aplicáveis em vez de acrescentar none como correção geral de compatibilidade. Se o acesso anónimo for intencional para um grupo restrito de clientes, torne o grupo e os seus destinos permitidos explícitos.
O Dante também tem clientmethod, que diz respeito a verificações efetuadas quando o cliente TCP se liga, antes da negociação SOCKS. É uma camada separada dos métodos trocados na saudação SOCKS5. Os excertos de configuração que usam uma palavra-chave method mais antiga devem ser lidos segundo o manual da versão do Dante instalada.
Quando dois clientes se comportam de forma diferente, compare o que cada um oferece, o que o Dante seleciona e se a subnegociação do método escolhido é bem-sucedida. Depois inspecione a resposta de destino SOCKS. Esta sequência identifica um callback de credenciais em falta sem atribuir cada falha ao FTP nem alterar às cegas a política de autenticação do servidor.
Por fim, a autenticação com nome de utilizador/palavra-passe do SOCKS5 não cifra a troca da palavra-passe. Utilize um transporte ou rede devidamente protegidos quando essas credenciais exigirem confidencialidade.