\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. oct. 19 10:02:17 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={Cyrus SASL},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Serveur SASL de Cyrus},
CreationDate={D:20131019100217},
ModDate={D:20131019100217},
Keywords={sécurité;authentification;sasl}
}}
\begin{document}
 
\begin{center}
{\Huge Cyrus SASL }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Serveur SASL de Cyrus}
 
\vspace{10mm}
 
\vspace{1cm}{\huge Composants SASL }
 
\
 
\hspace{1mm}  Le premier composant de la librairie SASL est la couche Glue. Il s'occupe des tâches de base:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Charger les plugins}
\item[\hspace{1mm} -]{Gère les propriétés de sécurité nécessaires de l'application pour l'aider dans le choix du mécanisme ou pour limiter les mécanismes disponibles.}
\item[\hspace{1mm} -]{Lister les plugins disponibles au applications}
\item[\hspace{1mm} -]{Choisir le meilleur mécanisme dans une liste pour une authentification particulière}
\item[\hspace{1mm} -]{Router les paquets de données d'authentification entre l'application et le mécanisme choisi}
\item[\hspace{1mm} -]{Fournir des informations sur la négociation SASL aux applications}
\end{description}
 
\hspace{1mm}  Il fournis également d'autres services aux plugins et applications tels que l'encodage MIME base 64, génération de nombres aléatoires, etc. Il permet également aux mécanismes et aux applications d'accéder à types spéciaux de plugin. Auxiliary Property "auxprop" qui fournis une interface de base simple et peut retourner des propriétés sur l'utilisateur tel que le mot de passe, répertoire personnel, ou adresse mail. et Username Canonicalization, qui peut fournir des manières de canoniser un nom d'utilisateur ou effectuer d'autres tâches.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Mécanisme PLAIN et mots de passe en texte clair }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} auxprop]{Vérifie les mots de passe dans userPassword fournis par une plugin de propriété auxiliaire. Par exemple, SASL est fournis avec sasldb, qui peut être utilisé pour authentifier avec des mots de passe stockés dans /etc/sasldb2.}
\item[\hspace{1mm} saslauthd]{Permet de vérifier des mots de passe en utilisant divers mécanismes.}
\item[\hspace{1mm} courrier-IMAP authdaemond]{Utilisé pour contacter authdaemond pour vérifier les mots de passe.}
\end{description}
 
\vspace{1cm}{\huge Mécanismes à secret partagé }
 
\
 
\hspace{1mm}  Cyrus SALS fournis plusieurs méthodes d'authentification basé sur un secret partagé: CRAM-MD5 et son successeur DIGEST-MD5.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Mécanismes Kerberos }
 
\
 
\hspace{1mm}  Cyrus SASL fournis 2 mécanismes qui utilisent kerberos: Kerberos\_v4 et GSSAPI qui permet d'utiliser kerberos v5.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Mécanismes OTP }
 
\
 
\hspace{1mm}  Cyrus SASL support le mécanisme OTP, similaire à CRAM-MD5 et DIGEST-MD5. Ces OTP sont stockés dans /etc/sasldb2. SASL support également OPIE.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Auxiliary Properties }
 
\
 
\hspace{1mm}  SASLv2 introduit le concept de propriétés auxiliaires. C'est la capacité de rechercher des informations liées à l'authentification ou l'authorisation depuis un répertoire durant le processus d'authentification.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fichier de configuration par défaut }
 
\
 
\hspace{1mm}  Par défaut, Cyrus SASL lit ses options depuis /usr/lib/sasl2/App.conf (où App est le nom de l'application). Les applications peuvent redéfinir comment la librairie recherche les informations de configuration.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} authdaemond\_path]{(SASL library) Chemin du socket UNIX de authdaemond (défaut: /dev/null)}
\item[\hspace{1mm} auto\_transition]{(SASL library) à yes ou noplain et utilisé avec auxprop. Transferts automatiquement les users à d'autres mécanismes quand ils font une authentification plaintext réussie. à noplain, seul les secrets non plaintext sont écris. (défaut: no)}
\item[\hspace{1mm} auxprop\_plugin]{(AuxProp Plugin) Nom(s) de(s) plugin(s) auxiliaire à utiliser. (défaut: null)}
\item[\hspace{1mm} canon\_user\_plugin]{(SASL library) Nom du plugin canon\_user à utiliser (défaut: INTERNAL)}
\item[\hspace{1mm} keytab]{(GSSAPI) Emplacement du fichier keytab (défaut: /etc/krb5.keytab)}
\item[\hspace{1mm} ldapdb\_uri]{(LDAPDB plugin) liste d'URI ldap}
\item[\hspace{1mm} ldapdb\_id]{(LDAPDB plugin) id d'authentification ldap}
\item[\hspace{1mm} ldapdb\_mech]{(LDAPDB plugin) mécanisme pour l'authentification}
\item[\hspace{1mm} ldapdb\_pw]{(LDAPDB plugin) password}
\item[\hspace{1mm} ldapdb\_rc]{(LDAPDB plugin) Fichier à placer dans l'environnement LDAPRC}
\item[\hspace{1mm} ldapdb\_starttls]{(LDAPDB plugin) utiliser StartTls (try, demand).}
\item[\hspace{1mm} ldapdb\_canon\_attr]{(LDAPDB plugin) attribut contenant le nom canonique de l'utilisateur}
\item[\hspace{1mm} log\_level]{(SASL library) Niveau de debug (défaut: 1 (SASL\_LOG\_ERR))}
\item[\hspace{1mm} mech\_list]{(SASL library) liste de mécanisme à autoriser (défaut: tous)}
\item[\hspace{1mm} ntlm\_server]{(SASL library) Liste des serveurs}
\item[\hspace{1mm} ntlm\_v2]{(SASL library) Envoyer des réponses ntlmv2 au serveur opiekeys (OPIE) Emplacement du fichier opiekeys (défaut: /etc/opiekeys)}
\item[\hspace{1mm} otp\_mda]{(OPIE) Algorithme pour l'OTP (md4, md5, sha1) (défaut: md5)}
\item[\hspace{1mm} plugin\_list]{(SASL library) Emplacement de la liste des plugins}
\item[\hspace{1mm} pwcheck\_method]{(SASL library) liste des mécanismes utilisés pour vérifier les mots de passe, utilisé par sasl\_checkpass (auxprop, saslauthd, pwcheck, authdaemond, alwaystrue). (défaut: auxprop)}
\item[\hspace{1mm} reauth\_timeout]{(DIGST-MD5) Temps en minutes de cache de l'authentification pour une réauthentification rapide. défaut: 0}
\item[\hspace{1mm} saslauthd\_path]{(SASL library) Chemin vers le répertoire saslauthd, incluant le pipe /mux}
\item[\hspace{1mm} sasldb\_path]{(sasldb plugin) Chemin du fichier sasldb (défaut: /etc/sasldb2)}
\item[\hspace{1mm} sql\_engine]{(SQL plugin) Nom du moteur SQL à utiliser (mysql, pgsql, sqlite, sqlite3). défaut: mysql}
\item[\hspace{1mm} sql\_hostnames]{(SQL plugin) liste de serveurs:ports SQL}
\item[\hspace{1mm} sql\_user]{(SQL plugin) Utilisateur SQL pour l'authentification}
\item[\hspace{1mm} sql\_passwd]{(SQL plugin) Mode de passe pour l'authentification}
\item[\hspace{1mm} sql\_database]{(SQL plugin) Nom de la base de données qui contient les propriétés auxiliaires}
\item[\hspace{1mm} sql\_select]{(SQL plugin) Déclaration SELECT à utiliser pour récupérer les propriétés}
\item[\hspace{1mm} sql\_insert]{(SQL plugin) Déclaration INSERT pour créer des propriétés}
\item[\hspace{1mm} sql\_update]{(SQL plugin) Déclaration UPDATE pour mettre à jours des propriétés}
\item[\hspace{1mm} sql\_usessl]{(SQL plugin) à yes, créé une connexion sécurisée}
\item[\hspace{1mm} srp\_mda]{(SRP) Algorithme à utiliser pour les calculs SRP (md5, sha1, rmd160).}
\item[\hspace{1mm} srvtab]{(kerberos 4) Emplacement du fichier srvtab (défaut: /etc/srvtab)}
\end{description}
 
\vspace{1cm}{\huge Notes sur les options auxprop sql }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} \%U]{username}
\item[\hspace{1mm} \%p]{Nom de la propriété à modifier/ajouter}
\item[\hspace{1mm} \%r]{Royaume auquel l'utilisateur appartient}
\item[\hspace{1mm} \%v]{Valeur de la propriété}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} \textbf{sql\_select: SELECT \%p FROM user\_table WHERE username = '\%u' and realm = '\%r'} \\
\hspace{1mm} Va envoyer la requête suivante pour l'utilisateur bovik et le royaume madoka.surf.org.uk: \\
\hspace{1mm} \textbf{SELECT userPassword FROM user\_table WHERE username = 'bovik' and realm = 'madoka.surf.org.uk';} \\
\hspace{1mm} \textbf{sql\_insert: INSERT INTO user\_table (username, realm, \%p) VALUES ('\%u', '\%r', '\%v')} \\
\hspace{1mm} Va générer les requêtes suivante pour l'utilisateur bovik dans le royaume madoka.surf.org.uk et le userPassword "wert": \\
\hspace{1mm} \textbf{INSERT INTO user\_table (username, realm, userPassword) VALUES ('bovik', 'madoka.surf.org.uk', 'wert');} \\
 
\vspace{1cm}{\huge Notes sur les options LDAPDB }
 
\
 
\hspace{1mm} s'active en créant /usr/lib/sasl2/slapd.conf avec: \\
\hspace{1mm} \textbf{auxprop\_plugin: slapd} \\
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} \textbf{ldapdb\_uri: ldap://ldap.example.com} \\
\hspace{1mm} \textbf{ldapdb\_id: root} \\
\hspace{1mm} \textbf{ldapdb\_pw: secret} \\
\hspace{1mm} \textbf{ldapdb\_mech: DIGEST-MD5} \\
\hspace{1mm} \textbf{ldapdb\_canon\_attr: uid} \\
\hspace{1mm} root authcid doit avoir des privilèges de proxy authorization pour tous les comptes authorisés à s'authentifier. \\
\hspace{1mm} \textbf{ldapdb\_uri: ldapi://} \\
\hspace{1mm} \textbf{ldapdb\_mech: EXTERNAL} \\
\hspace{1mm} Cette configuration assume que le serveur LDAP est sur le même serveurs qui utilise SASL. C'est plus rapide et sécure et n'a pas besoin de stocker de user/password. slapd.conf doit mapper ces usernames en DN ldap: \\
\hspace{1mm} \textbf{sasl-regexp uidNumber=(.*)\textbackslash{}\textbackslash{}+gidNumber=(.*),cn=peercred,cn=external,cn=auth ldap:///dc=example,dc=com ??sub ?(\&(uidNumber=\$1)(gidNumber=\$2))} \\
\hspace{1mm} \textbf{sasl-regexp uid=(.*),cn=external,cn=auth ldap:///dc=example,dc=com ??sub ?(uid=\$1)} \\
\end{flushleft}
\end{document}
