SASL (Simple Authentication Security Layer)

Usare SASL per autenticare le connessioni ad un server SMTP è solo uno dei possibili metodi utilizzabili. Personalmente, fino a quando gli utenti sono in numero ristretto, preferirei usare TLS sul lato client per certificare le connessioni al server.

Quanto segue non vuole essere niente altro che una piccola raccolta di osservazioni per me stesso, principalmente per evitare di commettere nuovamente gli stessi errori e riscoprire per l'ennesima volta l'acqua calda anche se probabilmente dovrei arrendermi e comperare un libro su SASL che spieghi tutto a piccoli passi. Conseguenza diretta di questo fatto è l'aspetto di brogliaccio di tutto quello che segue.

Qualche appunto

Alcuni appunti sparsi basati sulla versione 2.1.21 del pacchetto cyrus-sasl:

Le query sql possono usare i seguenti parametri, che vengono sostituiti con i valori appropriati al momento dell'esecuzione della query:

Un esempio

Stupido esempio, probabilmente non funzionante e sicuramente con problemi di permessi e chissà che altro, vagamente basato su quanto viene usato ora da chi so io:

pwcheck_method: saslauthd auxprop
auxprop_plugin: sql
sql_engine: pgsql
sql_hostnames: localhost
sql_user: mail
sql_password: XXXX
sql_database: mail
sql_select: select clear from password where login = '%u'

Nelle migliori intenzioni, quanto sopra dovrebbe funzionare in questo modo:

  1. l'applicazione dovrebbe chiedere a saslauthd (eseguito con l'opzione -a shadow (oppure con -a pam?) di controllare la password dell'utente in /etc/shadow;
  2. in seconda battuta si dovrebbe passare a richiedere l'autenticazione tramite auxprop che dovrebbe usare esclusivamente il plugin sql;
  3. il motore da usare, l'hostname, il db, l'utente e la password per accedere al db dovrebbero essere indicate dalle proprietà omonime;
  4. la select dovrebbe recuperare la password dal campo clear dalla tabella password dove login contiene il nome dell'utente seguito da @ e dal dominio; il fatto che l'utente sia costretto ad inviare come login l'indirizzo e-mail completo comporterà che %u verrà sostituito con l'indirizzo completo? Oppure sarà necessario sostituire %u con %u@%r?

Una considerazione estemporanea: se un utente "reale" del sistema ha la password disabilitata (come risultato di passwd -l <utente>), l'autenticazione fallirà sempre. Di conseguenza, saltando di palo in frasca alla configurazione di sshd, per obbligare tutti ad usare le chiavi dsa/rsa per autenticarsi si dovrebbe impostare PasswordAuthentication al valore no in /etc/ssh/sshd_config.

Ultima modifica: Mon Jul 18 10:19:13 CEST 2005

Valid HTML 4.01! Valid CSS!