{"id":1678,"date":"2014-07-13T23:40:12","date_gmt":"2014-07-13T21:40:12","guid":{"rendered":"http:\/\/stephane.weblog.starend.org\/?p=1678"},"modified":"2014-07-13T23:40:12","modified_gmt":"2014-07-13T21:40:12","slug":"tunnel-tls-pour-ldap","status":"publish","type":"post","link":"http:\/\/stephane.weblog.starend.org\/?p=1678","title":{"rendered":"Tunnel TLS pour ldap"},"content":{"rendered":"<p style=\"text-align: justify;\">Il y a semble-t-il un bugg r\u00e9cent assez g\u00eanant sur la libraire <a title=\"GnuTLS\" href=\"http:\/\/www.gnutls.org\/\" target=\"_blank\">GnuTLS<\/a> sous Debian 7. Suite \u00e0 une mauvaise impl\u00e9mentation semble-t-il au niveau de la n\u00e9gociation des algorithmes de chiffrement, il est impossible de g\u00e9n\u00e9rer ou d&rsquo;utiliser des certificats pour les programmes qui utilisent cette librairie. Et c&rsquo;est le cas notamment de <em>slapd<\/em>, le serveur d&rsquo;annuaire LDAP (<a title=\"OpenLDAP\" href=\"http:\/\/www.openldap.org\/\" target=\"_blank\">OpenLDAP<\/a>) sous UNIX.<\/p>\n<p style=\"text-align: justify;\">Le probl\u00e8me aurait pu passer presque inaper\u00e7u&#8230; mais il y eu <a title=\"Heartbleed\" href=\"http:\/\/heartbleed.com\/\" target=\"_blank\">heartbleed<\/a>&#8230;Et il se trouve donc qu&rsquo;un certain nombre d&rsquo;admins syst\u00e8mes ont d\u00fc changer tr\u00e8s rapidement les certificats de leurs serveurs, et ont d\u00fc tomber sur ce probl\u00e8me.<\/p>\n<p style=\"text-align: justify;\">Il devient ainsi impossible de relier un serveur de messagerie ou un serveur web avec un annuaire LDAP utilisant <em>OpenLDAP<\/em>. J&rsquo;ai notamment le probl\u00e8me avec mon serveur <em>postfix<\/em>&#8230;<\/p>\n<p style=\"text-align: justify;\">Il est possible de ne pas utiliser la connexion \u00e0 l&rsquo;annuaire via TLS. C&rsquo;est potentiellement un gros probl\u00e8me de s\u00e9curit\u00e9 en fonction des diff\u00e9rents r\u00e9seaux que vont traverser ces flux. Bref, ont n&rsquo;a plus de s\u00e9curit\u00e9 sur un flux qui contient toute l&rsquo;authentification du r\u00e9seau. C&rsquo;est assez moyen.<\/p>\n<p style=\"text-align: justify;\">Il est aussi possible de mettre en place une solution de remplacement avec <a title=\"stunnel\" href=\"http:\/\/www.stunnel.org\/\" target=\"_blank\">stunnel<\/a>. Cela revient en fait \u00e0 faire manuellement la connexion et le tunnel s\u00e9curis\u00e9 par TLS. En plus, on peut conserver les m\u00eames certificats que le d\u00e9mon <em>slapd<\/em>.<\/p>\n<h2 style=\"text-align: justify;\">C\u00f4t\u00e9 serveur<\/h2>\n<p style=\"text-align: justify;\">Il faut commencer par d\u00e9sactiver l&rsquo;utilisation du port <em>tcp\/636<\/em>. Pour cela, il faut modifier une ligne dans le fichier <em>\/etc\/default\/slapd<\/em> :<br \/>\n<code>SLAPD_SERVICES=\"ldap:\/\/127.0.0.1:389\/\"<\/code><\/p>\n<p style=\"text-align: justify;\">Red\u00e9marrer le d\u00e9mon slapd.<\/p>\n<p style=\"text-align: justify;\">Ensuite,on concat\u00e8ne le certificat et sa cl\u00e9 dans un seul fichier :<br \/>\n<code>cat \/etc\/ssl\/private\/slapd.key \/etc\/ssl\/certs\/slapd.crt &gt; \/etc\/ssl\/private\/slapd-all.crt<\/code><\/p>\n<p style=\"text-align: justify;\">Enfin, on cr\u00e9e le bout du tunnel c\u00f4t\u00e9 serveur, en r\u00e9utilisant le certificat :<br \/>\n<code>stunnel -d 636 -r 127.0.0.1:389 -p \/etc\/ssl\/private\/slapd-all.crt<\/code><\/p>\n<h2 style=\"text-align: justify;\">C\u00f4t\u00e9 client<\/h2>\n<p style=\"text-align: justify;\">Le client, c&rsquo;est le service qui utilise l&rsquo;annuaire LDAP, par exemple <em>postfix<\/em>.<\/p>\n<p style=\"text-align: justify;\">On cr\u00e9e le bout du tunnel c\u00f4t\u00e9 client :<br \/>\n<code>stunnel -c -d 6389 -r ldap.serveur.net:636<\/code><\/p>\n<p style=\"text-align: justify;\">Enfin, on dit au client, en l&rsquo;occurrence <em>postfix<\/em>, d&rsquo;utiliser le tunnel. Modifier le fichier \/etc\/postfix\/main.cf (ou \u00e9quivalent) :<br \/>\n<code>account_server_host = ldap:\/\/localhost:6389\/<br \/>\n<\/code><\/p>\n<p style=\"text-align: justify;\">Et on red\u00e9marre <em>postfix<\/em>&#8230;<\/p>\n<p style=\"text-align: justify;\">CF : <a title=\"Debian Bug report logs - #737921 [TLS1.2] gnutls only likes SHA1 and SHA256 certificates\" href=\"https:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=737921\" target=\"_blank\">https:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=737921<\/a><\/p>\n<p style=\"text-align: justify;\"><!--more--><strong>MAJ 14\/07\/2014<\/strong><\/p>\n<p style=\"text-align: justify;\">Pour rendre permanent les tunnels cr\u00e9\u00e9s, il faut cr\u00e9er un fichier de configuration c\u00f4t\u00e9 client et c\u00f4t\u00e9 serveur. Puis sur les deux activer <em>stunnel<\/em> en d\u00e9mon en modifiant le fichier <em>\/etc\/default\/stunnel4<\/em> :<br \/>\n<code>ENABLED=1<\/code><\/p>\n<p style=\"text-align: justify;\">C\u00f4t\u00e9 serveur, cr\u00e9er le fichier <em>\/etc\/stunnel\/ldap-ssl.conf<\/em> :<\/p>\n<pre>client = no\nverify = 1\nCAfile = \/etc\/ssl\/certs\/root.crt\ncert = \/etc\/ssl\/private\/slapd-all.crt\nRNDfile = \/dev\/urandom\noptions = NO_SSLv2\npid = \/stunnel4.pid\nchroot = \/var\/lib\/stunnel4\/\nsetuid = stunnel4\nsetgid = stunnel4\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n[ldap-ssl]\naccept\u00c2\u00a0 = 0.0.0.0:636\nconnect = 127.0.0.1:389<\/pre>\n<p style=\"text-align: justify;\">C\u00f4t\u00e9 client, cr\u00e9er le fichier <em>\/etc\/stunnel\/ldap-ssl.conf<\/em> :<\/p>\n<pre>client = yes\nverify = 1\nCAfile = \/etc\/ssl\/certs\/root.crt\noptions = NO_SSLv2\npid = \/stunnel4.pid\nchroot = \/var\/lib\/stunnel4\/\nsetuid = stunnel4\nsetgid = stunnel4\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n[ldap-ssl]\naccept  = 127.0.0.1:6389\nconnect = ldap.serveur.net:636<\/pre>\n<p style=\"text-align: justify;\">\u00c2\u00a0Le fichier <code>\/etc\/ssl\/certs\/root.crt<\/code> est \u00e0 copier depuis le serveur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a semble-t-il un bugg r\u00e9cent assez g\u00eanant sur la libraire GnuTLS sous Debian 7. Suite \u00e0 une mauvaise impl\u00e9mentation semble-t-il au niveau de la n\u00e9gociation des algorithmes de chiffrement, il est impossible de g\u00e9n\u00e9rer ou d&rsquo;utiliser des certificats pour les programmes qui utilisent cette librairie. Et c&rsquo;est le cas notamment de slapd, le &hellip; <a href=\"http:\/\/stephane.weblog.starend.org\/?p=1678\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Tunnel TLS pour ldap<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[37,42,43,48,10,11],"tags":[194,235,286,366],"_links":{"self":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/1678"}],"collection":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1678"}],"version-history":[{"count":0,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=\/wp\/v2\/posts\/1678\/revisions"}],"wp:attachment":[{"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1678"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1678"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/stephane.weblog.starend.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}