\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:23:52 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenLDAP - Sécurité},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Considérations de sécurité},
CreationDate={D:20131019102352},
ModDate={D:20131019102352},
Keywords={LDAP;OpenLDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge OpenLDAP - Sécurité }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Considérations de sécurité}
 
\vspace{10mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} Écoute sélective:]{Par défaut, slapd écoute sur toutes les adresses IPv4 et IPv6. Pour spécifier les ip sur lesquelles slapd écoute: \textbf{slapd -h ldap://127.0.0.1}}
\item[\hspace{1mm} Firewall IP:]{Les capacités de firewalling IP du système peuvent être utilisées pour restreindre l'accès. Généralement, slapd écoute sur le port 389/tcp pour ldap:// et le port 636/tcp pour ldaps://. slapd peut être configuré pour écouter sur d'autres ports.}
\item[\hspace{1mm} TCP Wrappers:]{TCP wrappers fournis un système de contrôle d'accès basé sur des règles pour contrôler les accès TCP/IP sur le serveur. Par exemple: \textbf{slapd: 10.0.0.0/255.0.0.0 127.0.0.1: ALLOW}, \textbf{slapd ALL: DENY}}
\item[\hspace{1mm} Protection de confidentialité et d'intégrité de données:]{TLS peut être utilisé pour fournir une protection de confidentialité et d'intégrité de données. OpenLDAP supporte la négociation de TLS (SSL) via StartTLS et ldaps://. Des mécanismes SASL (Simple Authentication and Security Layer) comme DIGEST-MD5 et GSSAPI sont également disponible.}
\item[\hspace{1mm} Facteurs de sécurité forte:]{Le serveur utilise SSF pour indiquer la force du mécanisme. Un SSF de 0 spécifie aucune protection, à 1 des protections d'intégrité sont en place. un SSF > 1 indiquent la longueur de clé de cryptage. par exemple: DES fait 56, 3DES fait 112, AES fait 128, 192 ou 256.}
\end{description}
 
\hspace{6mm} 'security' contrôle les opérations de restriction quand les protections appropriées ne sont pas en place. Exemple: \\
\hspace{6mm} \textbf{security ssf=1 update\_ssf=112} \\
\hspace{6mm} requière une protection d'intégrité pour toutes les opérations et une protection 3DES ou équivalent, pour les opérations de mise à jour (add, delete, modify, etc.) \\
 
\vspace{1cm}{\huge Méthodes d'authentification }
 
\
 
\hspace{1mm}  La méthode simple a 3 modes d'opération: anonyme, non-authentifié, authentifié par user/password.
\vspace{5mm} \\
\hspace{1mm}  L'accès anonyme est requis en ne fournissant pas de nom et de mot de passe pour une simple opération. l'accès non authentifié est requis en fournissant un nom, mais pas de mot de passe. L'accès authentifié requière un nom valide et un mot de passe.
\vspace{5mm} \\
\hspace{1mm}  le mécanisme anonyme est activé par défaut, il peut être désactivé par "\textbf{disallow bind\_anon}".
\vspace{5mm} \\
\hspace{1mm}  \textbf{note}: désactiver le mécanisme anonyme n'empêche pas les accès anonymes à l'annuaire. Pour exiger une authentification pour accéder à l'annuaire, utiliser "\textbf{require authc}"
\vspace{5mm} \\
 
 
\hspace{1mm}  L'accès non-authentifié est désactivé par défaut et peut être activé par "\textbf{allow bind\_anon\_cred}"
\vspace{5mm} \\
\hspace{1mm}  L'accès authentifié est activé par défaut. Cependant les mots de passe sont stockés en clair, il est recommandé de l'utiliser uniquement avec des session chiffrées. Il est recommandé que toutes les authentifications non protégées soient désactivées en utilisant par ex: \textbf{security simple\_bind=56} qui exige les simple\_bind d'utiliser le cryptage DES ou meilleur.
\vspace{5mm} \\
\hspace{1mm}  Le mécanisme d'authentification user/password peut être complètement désactivé en utilisant "\textbf{disallow bind\_simple}".
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Stockage des mots de passe }
 
\
 
\hspace{1mm}  Les mots de passe LDAP sont normalement stockés dans l'attribut \textbf{userPassword}. la RFC4519 spécifie que les mots de passe ne sont pas stockés sous forme chiffrée. Cela permet d'utiliser une grande quantité de mécanismes basés sur les mots de passe, comme DIGEST-MD5.
\vspace{5mm} \\
\hspace{1mm}  Cependant, il peut être préférable de stocker un hash des mots de passe. slapd supporte plusieurs schémas de stockage.
\vspace{5mm} \\
\hspace{1mm}  L'attribut \textbf{userPassword} peut avoir une ou plusieurs valeurs, et il est possible pour chaque valeur d'être stockées sous une forme différente. durant l'authentification, slapd va chercher un des mots de passe qui correspondrai. Le schéma de stockage est stocké comme préfixe dans la valeur, donc un hash utilisant SHA1 ressemblera à:
\vspace{5mm} \\
\hspace{1mm}  \textbf{userPassword: \{SSHA\}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3}
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Schéma de stockage de mot de passe SSHA }
 
\
 
\hspace{1mm} ces valeurs sont représentée sous la forme: \\
\hspace{1mm} \textbf{userPassword: \{SSHA\}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3} \\
\hspace{1mm} schéma de stockage de mot de passe CRYPT \\
\hspace{1mm} Ce schéma utilise la fonction système crypt(3). Il produit le hash traditionnel à 13 caractères, mais peut également générer le hash MD5 34 octets de glibc2. \\
\hspace{1mm} \textbf{userPassword: \{CRYPT\}aUihad99hmev6} \\
\hspace{1mm} \textbf{userPassword: \{CRYPT\}\$1\$czBJdDqS\$TmkzUAb836oMxg/BmIwN.1} \\
 
\vspace{1cm}{\huge Schéma de stockage de mot de passe MD5 }
 
\
 
\hspace{1mm} Ce schéma prend simplement le hash md5 et le stocke sous la forme base64: \\
\hspace{1mm} \textbf{userPassword: \{MD5\}Xr4ilOzQ4PCOq3aQ0qbuaQ==} \\
\hspace{1mm} schéma de stokage de mot de passe SMD5 \\
\hspace{1mm} Il améliore le schéma MD5 \\
\hspace{1mm} \textbf{userPassword: \{SMD5\}4QWGWZpj9GCmfuqEvm8HtZhZS6E=} \\
\hspace{1mm} schéma de stockage de mot de passe SHA \\
\hspace{1mm} SHA est plus sécurisé que MD5 \\
\hspace{1mm} \textbf{userPassword: \{SHA\}5en6G6MezRroT3XKqkdPOmY/BfQ=} \\
 
\vspace{1cm}{\huge Schéma de stockage de mot de passe SASL }
 
\
 
\hspace{1mm}  Ce n’est pas vraiment un schéma de stockage de mot de passe. Il utilise l’attribut \textbf{userPassword} pour déléguer la vérification à un autre processus.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Schéma de stockage de mot de passe Kerberos }
 
\
 
\hspace{1mm}  Ce n’est pas un schéma de stockage de mot de passe, il utilise la valeur de l’attribut de \textbf{userPassword} pour déléguer la vérification à Kerberos
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Authentification Externe }
 
\
 
\hspace{1mm}  Depuis OpenLDAP 2.0 slapd a la capacité de déléguer la vérification de mot de passe à un processus séparé. Il utilise la fonction sasl\_checkpass(3). Le choix est très large, comme l’option d’utiliser saslauth(8) qui utiliser les fichiers local, kerberos, un serveur IMAP, un autre serveur LDAP ou tout ce qui peut supporter le mécanisme PAM.
\vspace{5mm} \\
\hspace{1mm}  L’authentification externe fonctionne seulement avec les mots de passe en clair. ce système est sélectif, il utilise uniquement les utilisateurs dont l’attribut userPassword est marqué avec "SASL".
\vspace{5mm} \\
 
 
\hspace{1mm} exemple: \\
\hspace{1mm} \textbf{userPassword: \{SASL\}username@realm} \\
 
\vspace{1cm}{\huge Configurer slapd pour l'utilisation d'un fournisseur d'authentification }
 
\
 
\hspace{1mm}  Quand une entrée a une valeur de mot de passe "\textbf{\{SASL\}}", OpenLDAP délègue tout le processus de validation à cyrus SASL. Tout la configuration est faite dans les fichiers de configuration de SASL.
\vspace{5mm} \\
\hspace{1mm}  Un fichier nommé /usr/lib/sasl2/slapd.conf gouverne l’utilisation de SASL quand il communique avec slapd.
\vspace{5mm} \\
 
 
\hspace{1mm} Simple exemple pour un serveur qui utilise saslauth pour vérifier les mots de passe: \\
\hspace{1mm} \textbf{mech\_list: plain} \\
\hspace{1mm} \textbf{pwcheck\_method: saslauthd} \\
\hspace{1mm} \textbf{saslauthd\_path: /var/run/sasl2/mux} \\
 
\vspace{1cm}{\huge Configurer saslauth }
 
\
 
\hspace{1mm} saslauthd est capable d’utiliser différents services d’authentification, vois saslauthd(8). Exemple de saslauthd.conf qui utilise M\$ Active Directory: \\
\hspace{1mm} \textbf{ldap\_servers: ldap://dc1.example.com/ ldap://dc2.example.com/} \\
\hspace{1mm} \textbf{ldap\_search\_base: cn=Users,DC=ad,DC=example,DC=com} \\
\hspace{1mm} \textbf{ldap\_filter: (userPrincipalName=\%u)} \\
\hspace{1mm} \textbf{ldap\_bind\_dn: cn=saslauthd,cn=Users,DC=ad,DC=example,DC=com} \\
\hspace{1mm} \textbf{ldap\_password: secret} \\
\hspace{1mm} dans ce cas, saslauthd est lancé avec le mécanisme d’authentification ldap et est définis pour combiner SASL avec le login: \\
\hspace{1mm} \textbf{saslauthd -a ldap -r} \\
\end{flushleft}
\end{document}
