Con SOCKS5 l'autenticazione viene negoziata prima che il client invii la sua richiesta di destinazione. Questo rende un fallimento precoce delle credenziali un evento diverso da un fallimento FTP, HTTPS o di un'altra applicazione oltre il proxy.

Il saluto del client elenca i metodi di autenticazione che supporta. Il server sceglie un metodo da quell'elenco e restituisce la selezione. Un valore 0xff significa che nessun metodo offerto è accettabile e la connessione deve essere chiusa. Il client non prova semplicemente ogni metodo lato server dopo che una password fallisce.

Cosa controlla l'ordinamento di Dante

Dante 1.4.x chiama l'impostazione a livello di protocollo socksmethod. La sua documentazione afferma che i metodi sono elencati in ordine di preferenza. Per una politica che consente entrambi i metodi, questa dichiarazione preferisce nome utente/password quando il client lo offre:

socksmethod: username none

Invertire l'elenco preferisce l'accesso non autenticato quando vengono offerti entrambi i metodi:

socksmethod: none username

Queste sono dichiarazioni di metodi alternative, non configurazioni complete del server. Le interfacce in ascolto, i client consentiti, le regole di destinazione e qualsiasi vincolo di autenticazione specifico di una regola contano ancora.

Consentire none ha una conseguenza concreta: un client che offre solo nessuna autenticazione può essere accettato secondo le regole applicabili. Mettere username per primo non trasforma un elenco che contiene none in un requisito che tutti forniscano una password.

Scegli prima il requisito

Se ogni client consentito deve autenticarsi con nome utente/password, configura quel requisito in modo coerente nelle regole globali e applicabili invece di aggiungere none come correzione di compatibilità generale. Se l'accesso anonimo è intenzionale per un gruppo ristretto di client, rendi espliciti il gruppo e le sue destinazioni consentite.

Dante ha anche clientmethod, che riguarda i controlli eseguiti quando il client TCP si connette, prima della negoziazione SOCKS. È uno strato separato dai metodi scambiati nel saluto SOCKS5. Gli estratti di configurazione che usano una parola chiave method più vecchia vanno letti secondo il manuale della versione di Dante installata.

Quando due client si comportano diversamente, confronta cosa offre ciascuno, cosa seleziona Dante e se la sotto-negoziazione del metodo scelto riesce. Poi esamina la risposta di destinazione SOCKS. Questa sequenza identifica un callback di credenziali mancante senza attribuire ogni fallimento a FTP o cambiare alla cieca la politica di autenticazione del server.

Infine, l'autenticazione con nome utente/password di SOCKS5 non crittografa lo scambio della password. Usa un trasporto o una rete adeguatamente protetti quando quelle credenziali richiedono riservatezza.

Articoli correlati