LDAP/ca

De Guifi.net - Wiki Català

Icona d'esboç

Aquest article està en desenvolupament. Pràcticament totes les pàgines del Wiki de Guifi.net són editables, però en aquesta falta informació essencial. Ampliant-ho ajudaràs a millorar Guifi.net.
Potser puguis ajudar-te amb els wikis castellà i anglès si tenen una pàgina equivalent.

LDAP

Les intencions: disposar d'una infraestructura que permeta autenticar una base única d'usuaris (drupal, wiki, trac...). Es tria LDAP per ser el backend més comú en el sentit que moltes eines (web i no web com ara radius) disposen de complements per autenticar/autoritzar els usuaris. En qualsevol cas,l'autenticació més segura passa per usar ssl a l'hora d'accedir a ldap, o mecanismes de desafiament resposta (només usables si al backedn tenim la contrasenya en clar).

Les següents instruccions indiquen com extreure els usuaris del drupal per inserir-los a un openldap, de forma que es puga usar el directori per autenticar usuaris.

  1. Instal.lacio slapd i configuració inicial. Dos usuaris de ldap un per a consultes i un d'altre administrador. S'usa la màquina virtual de desenvolupament.
  2. Mol bàsicament:

    apt-get install slapd ldap-utils db4.6-util # ó db4.7-util
    

    He usat estes configs, una per al dimoni, l'altra per fer les càrregues.

    /etc/ldap/slapd.conf:
    
    include         /etc/ldap/schema/core.schema
    include         /etc/ldap/schema/cosine.schema
    include         /etc/ldap/schema/nis.schema
    include         /etc/ldap/schema/inetorgperson.schema
    
    pidfile         /var/run/slapd/slapd.pid
    
    argsfile        /var/run/slapd/slapd.args
    
    loglevel        none
    
    modulepath      /usr/lib/ldap
    moduleload      back_hdb
    
    sizelimit 500
    
    tool-threads 1
    
    backend         hdb
    database    hdb
    
    suffix          "dc=guifi,dc=net"
    rootdn          "cn=admin,dc=guifi,dc=net"
    rootpw          "{SSHA}eLiioMnhTcfq/4GIWXK82HkG5UTBm4d3"
    
    directory       "/var/lib/ldap"
    
    dbconfig set_cachesize 0 2097152 0
    dbconfig set_lk_max_objects 1500
    dbconfig set_lk_max_locks 1500
    dbconfig set_lk_max_lockers 1500
    
    index           objectClass eq
    
    lastmod         on
    
    checkpoint      512 30
    
    
    access to dn.base="" by * read
    
    access to *
            by dn="cn=admin,dc=guifi,dc=net" write
            by anonymous auth
            by * none
    
    
    /etc/ldap/slapd_bulk_load.conf (bàsicament el mateix excepte directory:
    
    include         /etc/ldap/schema/core.schema
    include         /etc/ldap/schema/cosine.schema
    include         /etc/ldap/schema/nis.schema
    include         /etc/ldap/schema/inetorgperson.schema
    
    pidfile         /var/run/slapd/slapd.pid
    
    argsfile        /var/run/slapd/slapd.args
    
    loglevel        none
    
    modulepath      /usr/lib/ldap
    moduleload      back_hdb
    
    sizelimit 500
    
    tool-threads 1
    
    backend         hdb
    database    hdb
    
    suffix          "dc=guifi,dc=net"
    rootdn          "cn=admin,dc=guifi,dc=net"
    rootpw          "{SSHA}eLiioMnhTcfq/4GIWXK82HkG5UTBm4d3"
    
    directory       "/var/lib/ldap/bulk_load"
    
    dbconfig set_cachesize 0 2097152 0
    
    dbconfig set_lk_max_objects 1500
    dbconfig set_lk_max_locks 1500
    dbconfig set_lk_max_lockers 1500
    
    index           objectClass eq
    
    lastmod         on
    checkpoint      512 30
    
    
    access to dn.base="" by * read
    
    access to *
            by dn="cn=admin,dc=guifi,dc=net" write
            by anonymous auth
            by * none
    
    

    La rootpw es genera així:

    slappasswd -h {MD5}
    
  3. Per les càrregues, he deixat uns scripts de carrega per donar l'espenta inicial. Encara queda molt per fer:
    • comprovació de la coherencia de la bdd generada.
    • carrega des de /var/lib/ldap/bulk_load al slapd en produccio.
    • mes comprovacions
    • no es pot fer un bind per usuari tal cual estan les contrasenyes amb md5 des de drupal, investigar mes. Ja es pot fer bind amb les mateixes contrasenyes del drupal.
    • usar repositoris per al desenvolupament
    • documentació
  4. Per usar-los s'ha de configurar les credencials del mysql a export_drupal_users.sh, indicar la rootpw a ldap_import_functions.sh i llançar ./ldiff_to_hdb.sh. Això deixa una bdd que ja pot ser usada per un ldap en producció:
     /etc/init.d/slapd stop
     cp /var/lib/ldap/bulk_load/* /var/lib/ldap
     chown -R openldap.openldap /var/lib/ldap
     /etc/init.d/slapd start
    
  5. Exemple de recerca:
     ldapsearch -x -W -D "cn=admin,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)"
    
  6. Creació de certificats per al directori. Configuració d'ldap i drupal. Tenim alguna entitat de certificacio??

LDAP al Mediawiki

Es passen les dades per omplir aquesta configuració. Simplement nom de domini i LDAPBaseDN. Per a $wgLDAPEncryptionType pot ser "clear" o "ssl".

## LDAP_Authentication
## http://www.mediawiki.org/wiki/Extension:LDAP_Authentication
## svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/LdapAuthentication/
require_once( "$IP/extensions/LdapAuthentication/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();

  //Nombres de los dominios que utilizarás.
  $wgLDAPDomainNames = array("LDAP");

  //Asociación entre nombre de dominio y nombre DNS de la máquina donde se va a validar.
  $wgLDAPServerNames = array("LDAP"=>"domini.net");

  //Podemos permitir la convivencia de autenticación local del wiki con LDAP.
  $wgLDAPUseLocal = true;

  //Encriptación en las solicitudes LDAP.
  $wgLDAPEncryptionType = array("LDAP"=>"ssl");

  //Le decimos cual es la base de la consulta
  $wgLDAPBaseDNs = array("LDAP"=>"dc=domini,dc=net");
  $wgLDAPSearchAttributes = array("LDAP"=>"uid");

  //Utilizamos los grupos LDAP para las directivas de grupo:
  $wgLDAPGroupsPrevail = array("LDAP"=>true);
  $wgLDAPGroupNameAttribute = array("LDAP"=>"cn");

Proves de balanceig/distribució

Ben mirat potser més el segon que no pas el primer per tal d'implementar-ho en un futur pròxim/necessari

  1. segona instancia d'ldap, pot ser remota o a la mateixa maquina virtual amb diferents ports.
  2. haproxy i configuració.
  3. configuració ldap-drupal per que apunte a haproxy.
  4. proves de replicació.
    1. Qué passa si una instancia te problemes?
    2. s'acumulen transaccions no realitzades?
  5. avaluar despres de les proves si ens interessa replicació en línia o simplement es sincronitzen les bdd del directori ppal cap a les instancies secundaries.
Eines de l'usuari