HomePage CV Programmation Contact RecentChanges

SuiviLDAP

Installation de ldap.

openLDAP

j'ai finalement mis la version 2.2 de openldap, plus exactement le port openldap22-server.

définition de l'arbre

               dn: dc=ovpf,dc=ipgp,dc=jussieu,dc=fr   *
                                                      |
                                            __________|___________
                    dn: ou=personnes,...   *                      * dn: cn=Manager,...
                                           |
                                           |
                                 __________|_____ ...
dn: cn=Core Guillaume,ou=...    *

Configuration avec le client de messagerie

Ajouter un nouveau carnet d'adresses en choississant LDAP.

server : 195.83.188.20

prefixe de recherche : ou=personnes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr

-- CoreGuillaume? - 17 Jul 2006

Un exemple de fiche au format ldif

dn: cn=Core Guillaume,ou=personnes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr
cn: Core Guillaume
sn: Core
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: inetOrgPerson
uid: fridim
uidNumber: 1555
gidNumber: 1555
homeDirectory: /home/fridim
mail: fridim-nlp@neuf.fr
homePhone: 0262 26 63 70
homePhone: 04 91 76 56 25

Chiffrement

Victoire \o/

SSL fonctionnel !

J'ai réussi à faire fonctionner une connexion sécurisée depuis un client vers le serveur openldap 2.2. Il faut pour ça lancer slapd comme il suit : /usr/local/libexec/slapd -u ldap -g ldap -h "ldaps:/// ldap:///". Thunderbird gère bien la connexion (choisir SSL).

Le ssl se lance sur le port 636

TLS aussi !

Il semblerait que cette version 2.2 d'openldap soit une bénédiction, ou plutot que l'autre sent la truite pourrie. Donc ici, j'ai fait les même manips qu'avec la version 2.3, et ça a marché :-P

Le TLS se lance sur le même port qu'à la normale : 389

Configuration des clients

Pour les programmes consoles clients ldap et beaucoup d'autres il faut un fichier ldap.conf qui peut se trouver un peu partout : /etc/ldap.conf ou /etc/openldap/ldap.conf ou /usr/local/etc/openldap/ldap.conf (pour freebsd)

Voilà ce que ce ldap.conf doit contenir :

HOST celimene.ipgp.jussieu.fr
TLS_CACERT /etc/ssl/cacert.pem
BASE    dc=ovpf,dc=ipgp,dc=jussieu,dc=fr

Il faut bien entendu copier le cacert.pem se trouvant sur le serveur celimene à /usr/local/etc/ssl/ldap/cacert.pem dans le repertoire /etc/ssl/cacert.pem du client.

*Faire bien attention à pas se gourer de ldap.conf* (je le dis, ça peut faire gagner du temps)

Voilà.

Postfix

Les aliases sont opérationnels (en local en tous cas) comme visible ici:

Received: from sp604001av ([84.96.92.125]) by sp604001mt.gpm.neuf.ld
 (Sun Java System Messaging Server 6.2-5.05 (built Feb 16 2006))
 with ESMTP id <0J2Q00J5FIEHNU00@sp604001mt.gpm.neuf.ld> for
 fridim-nlp@neuf.fr; Fri, 21 Jul 2006 06:40:56 +0200 (CEST)
Received: from celimene.ipgp.jussieu.fr ([195.83.188.20])
 by sp604001av with neuf telecom   id 04gm1V00H0Sqb8r0000000   for
 fridim-nlp@neuf.fr; Fri, 21 Jul 2006 06:40:56 +0200
Received: by celimene.ipgp.jussieu.fr (Postfix)   id 7B6033E2FA7; Fri,
 21 Jul 2006 04:43:53 +0000 (UTC)

##################################################################
# Received: by celimene.ipgp.jussieu.fr (Postfix, from userid 0) #
#  id 77D3A3E2FA8; Fri, 21 Jul 2006 04:43:53 +0000 (UTC)         #
##################################################################

Date: Fri, 21 Jul 2006 04:43:53 +0000 (UTC)
From: root@celimene.ipgp.jussieu.fr (Charlie Root)
Subject: test
To: fridim@localhost.ipgp.jussieu.fr
Message-id: <20060721044353.77D3A3E2FA8@celimene.ipgp.jussieu.fr>
Delivered-to: fridim@localhost.ipgp.jussieu.fr
X-IMP2: RBL MAPS_ORDB: 0.00,RBL SPAMCOP: 0.00,RBL SORBS: 0.00,RBL SBL+XBL:
 0.00,AV NONE,URL RHS: 0.00,URL SURBL: 0.00,GBAYES: 0.09

ceci est un test

config postfix :

mydomain = ipgp.jussieu.fr
myhostname = celimene
mydestination = celimene, celimene.ipgp.jussieu.fr, localhost
alias_maps = ldap:ldapalias

ldapalias_server_host = localhost
ldapalias_search_base = ou=personnes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr
ldapalias_query_filter = (uid=%s)
ldapalias_result_attribute = mail
ldapalias_version = 3

Intégration de spamassassin

j'ai installé le port p5-Mail-Spamassassin.

Config de spamassassin

les instructions d'installation sont dans /usr/local/share/doc/p5-Mail-SpamAssassin/INSTALL. J'ai suivi ceci, postfix utilisant spamd : http://wiki.apache.org/spamassassin/IntegratedSpamdInPostfix?highlight=%28postfix%29 a ou ici : http://onetforum.com/fourm/viewtopic.php?p=27

le wiki a l'air pas mal du tout : http://wiki.apache.org/spamassassin/FrontPage

Pour tester spamassassin : spamassassin -t < /usr/local/etc/postfix/spam.test2 qui donne un score de 14 :-)

Config postfix

pour le moment postfix ne communique pas bien avec spamd :/

NSS et PAM

j'ai installé nss_ldap et pam_ldap.

Message pour nss_ldap :

The nss_ldap module expects to find its configuration files at the
following paths:

LDAP configuration:     /usr/local/etc/nss_ldap.conf
LDAP secret (optional): /usr/local/etc/nss_ldap.secret


WARNING: For users of previous versions of this port:
WARNING:
WARNING: Previous versions of this port expected configuration files
WARNING: to be located at /etc/ldap.conf and /etc/ldap.secret.  You
WARNING: may need to move these configuration files to their new
WARNING: location specified above.

Message pour pam_ldap

Copy /usr/local/etc/ldap.conf.dist to /usr/local/etc/ldap.conf, then edit
/usr/local/etc/ldap.conf in order to use this module.  Add a line similar to
the following to /etc/pam.conf on 4.X, or create an /etc/pam.d/ldap on 5.X
and higher with a line similar to the following:

login   auth    sufficient      /usr/local/lib/pam_ldap.so

config NSS

Le fichier /etc/nsswitch.conf :

group: files ldap
group_compat: nis
hosts: files dns
networks: files
passwd: files ldap
passwd_compat: nis
shells: files ldap

Le fichier /usr/local/etc/nss_ldap.conf :

host celimene.ipgp.jussieu.fr
base dc=ovpf,dc=ipgp,dc=jussieu,dc=fr
ssl start_tls
tls_cacertfile /usr/local/etc/ssl/ldap/cacert.pem

Essai avec SSH

On configure le fichier /etc/pam.d/sshd :

# auth
auth            required        pam_nologin.so          no_warn
# On autorise ldap
auth            sufficient      /usr/local/lib/pam_ldap.so

auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local
#auth           sufficient      pam_krb5.so             no_warn try_first_pass
#auth           sufficient      pam_ssh.so              no_warn try_first_pass
auth            required        pam_unix.so             no_warn try_first_pass

# account
#account        required        pam_krb5.so
account         required        pam_login_access.so
account         required        pam_unix.so
# On autorise ldap
account            sufficient      /usr/local/lib/pam_ldap.so

J'ai ajouté un utilisateur test dans ldap sur celimene :

dn: cn=Test,ou=personnes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: shadowAccount
sn: test
cn: Test
userPassword: *******
uid: test
uidNumber: 1004
gidNumber: 1005
homeDirectory: /home/test

et je me log sur pitontortue par ssh test@localhost et ça fonctionne :-)

Maintenant, c'est la même manip pour les autres services, il suffit de modifier le bon fichier dans /etc/pam.d/.

Groupe

j'ai rajouté un posixGroup ftp dans ou=groupes,dc=ovpf.... J'ai rajouté memberUid=fridim, et quand on fait un id fridim sur pitontortue, on a bien uid=1001(fridim) gid=1001(fridim) groups=1001(fridim), 0(wheel), 21(ftp)

Machine

j'ai ajouté une machine, pitontortue dans openldap :

dn: cn=pitontortue,ou=machines,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr
objectClass: top
objectClass: ipHost
objectClass: device
objectClass: extensibleObject
cn: pitontortue
ipHostNumber: 195.83.188.18
memberUid: fridim

pour l'instant ça sert à rien

phpldapadmin

installé sur le serveur pitontortue : http://195.83.188.18/phpldapadmin/index.php

ProFTPd

ici de la doc sur les options disponibles dans proftpd.conf : http://www.proftpd.org/docs/directives/linked/config_ref_mod_ldap.html

J'ai mis la configuration suivante :

ServerName         "ProFTPD Default Installation"
ServerType         standalone
DefaultServer         on
ScoreboardFile         /var/run/proftpd.scoreboard
Port            21
Umask            022
MaxInstances         30
User            nobody
Group            nogroup
DefaultRoot /var/ftp/ovpf ovpf, !ftp
DefaultRoot /var/ftp ftp
DefaultRoot /var/ftp/pub !ovpf
AllowOverwrite      on
<Limit SITE_CHMOD>
</Limit>
<IfModule mod_tls.c>
</IfModule>
LDAPServer   celimene.ipgp.jussieu.fr
LDAPDoAuth on "dc=ovpf,dc=ipgp,dc=jussieu,dc=fr"
LDAPDoUIDLookups on "ou=personnes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr"
LDAPDoGIDLookups on "ou=groupes,dc=ovpf,dc=ipgp,dc=jussieu,dc=fr"

C'est donc très facile, à l'aide des groupes LDAP de définir qui a le droit d'entrer dans quel dossier, ou plus précisement définir où l'utilisateur sera chrooté. Tout ça grace à DefaultRoot suivi du groupe. Ensuite, chmod et chown font le reste.