LDAP/ca: Diferència entre les revisions

De Guifi.net - Wiki Català

(LDAP)
Línia 1: Línia 1:
 
{{en desenvolupament}}
 
{{en desenvolupament}}
 
== LDAP ==
 
== 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).
+
=== Introducció ===
 +
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 backend 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.
+
=== Càrrega d'usuaris ===
 +
S'han desenvolupat uns scripts que poden exportar els usuaris d'un drupal 6 i importar-los cap a un openldap. Són scripts pensats per crear una rama de l'estil: <code>dc=guifi,dc=net</code>, encara que es pot configurar per qualsevol altre domini, i també afegir més ''domain components'' de forma que poguem crear rames de la principal i d'esta forma, obtindre una jerarquía d'ldaps, tal volta per oferir un punt únic d'autenticació i delegar-la cap al ldap que finalment puga autenticar-nos, a l'estil [http://www.google.es/url?sa=t&source=web&cd=1&sqi=2&ved=0CBwQFjAA&url=http%3A%2F%2Fwww.eduroam.es%2F&ei=rVDZTaDRAZDG8QPP9-iDBQ&usg=AFQjCNHHrBdRg0rHL7dx6lQvRJf0_EIpRQ d'EDUROAM].
  
<ol>
+
Els scripts es troben al gitorius: <code>git clone http://git.gitorious.org/ldapfromdrupal/ldapfromdrupal.git</code>. Hi ha un ''Readme'' que explica com posar en marxa un directori a partir dels usuaris d'un drupal. Bàsicament, hem d'instal.lar: <code>apt-get install slapd ldap-utils db4.6-util # ó db4.7-util</code> i configurar <code>config.sh</code> amb les dades del directori i les dades d'accés a mySQL. Hi ha també uns exemples de configuració per al openLdap, pensats per a Fedora/Redhat, però l'adaptació a debian/ubuntu, és tan fàcil com canviar <code>/etc/openldap/</code> per <code>/etc/ldap</code> a totes les referències que hi hagin a <code>config.sh</code>.
<li>Instal.lacio slapd i configuració inicial. Dos usuaris de ldap un per a consultes i un d'altre administrador. S'usa la [http://guifi.net/guifi_vm màquina virtual] de desenvolupament.</li>
+
  
Mol bàsicament:
+
Una vegada instal.lats, la càrrega es pot fer periòdicament, executant: <code>./ldif_from_hdb.sh drupal6</code>. Un exemple de recerca: <code>ldapsearch -x -W -D "cn=admin,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)"</code> ó per comprovar que l'autenticació funciona podem fer bind amb un usuari: <code>ldapsearch -x -W -D "uid=rotobator,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)"</code>.
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:
 
<pre>
 
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
+
=== Ús de ldap.guifi.net ===
 +
En un principi, qualsevol màquina/servei, pot usar aquest directori per autenticar usuaris de guifi.net, però hi ha una sèrie de mesures de seguretat que cal tindre en compte:
 +
* El directori no permet recuperar cap data personal ni d'altres persones, només permet autenticar usuaris.
 +
* Només l'usuari ''cn=admin,dc=guifi,dc=net'' pot obtindre les dades emmagatzemades, encara que este usuari està reservat per a ús intern i manteniment del directori.
 +
* Cada màquina/servei que necessite autenticar usuaris contra aquest directori, haurà de disposar d'un certificat de servidor x509, vàlid i acceptat explícitament pels administradors del directori. Hi ha empresses que oferixen gratuitament aquests certificats.
 +
* L'accés al directori només és posible mijançant ''LDAPS'', és a dir, usant TLS/SSL.
  
argsfile        /var/run/slapd/slapd.args
+
=== Configuració de clients ===
 +
Exemples de configuracions.
  
loglevel        none
+
==== LDAP al Mediawiki ====
 
+
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
+
 
+
</pre>
+
 
+
/etc/ldap/slapd_bulk_load.conf (bàsicament el mateix excepte <code>directory</code>:
+
<pre>
+
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
+
 
+
</pre>
+
 
+
La <i>rootpw</i> es genera així:
+
slappasswd -h {SSHA}
+
 
+
<li>Per les càrregues, he deixat uns [https://gitorious.org/ldapfromdrupal/ldapfromdrupal scripts de carrega] per donar l'espenta inicial. Encara queda molt per fer:
+
<ul>
+
<li>comprovació de la coherencia de la bdd generada.
+
<li>carrega des de /var/lib/ldap/bulk_load al slapd en produccio.
+
<li>mes comprovacions
+
<li><s>no es pot fer un bind per usuari tal cual estan les contrasenyes amb md5 des de drupal, investigar mes.</s> Ja es pot fer bind amb les mateixes contrasenyes del drupal.
+
<li>usar repositoris per al desenvolupament
+
<li>documentació
+
</ul>
+
</li>
+
<li> Per usar-los s'ha de configurar les credencials del mysql a <i>export_drupal_users.sh</i>, indicar la <i>rootpw</i> a <i>ldap_import_functions.sh</i> i llançar <i>./ldiff_to_hdb.sh</i>. Això deixa una bdd que ja pot ser usada per un ldap en producció:
+
<pre>
+
/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
+
</pre>
+
<li>Exemple de recerca:
+
<pre>
+
ldapsearch -x -W -D "cn=admin,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)"
+
</pre>
+
</li>
+
<li>Creació de certificats per al directori. Configuració d'ldap i drupal. Tenim alguna entitat de certificacio??</li>
+
</ol>
+
 
+
== LDAP al Mediawiki ==
+
 
Es passen les dades per omplir aquesta configuració. Simplement nom de domini i LDAPBaseDN. Per a <code>$wgLDAPEncryptionType</code> pot ser <code>"clear"</code> o <code>"ssl"</code>.
 
Es passen les dades per omplir aquesta configuració. Simplement nom de domini i LDAPBaseDN. Per a <code>$wgLDAPEncryptionType</code> pot ser <code>"clear"</code> o <code>"ssl"</code>.
 
<pre>
 
<pre>

Revisió de 19:25, 22 maig 2011

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

Introducció

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 backend tenim la contrasenya en clar).

Càrrega d'usuaris

S'han desenvolupat uns scripts que poden exportar els usuaris d'un drupal 6 i importar-los cap a un openldap. Són scripts pensats per crear una rama de l'estil: dc=guifi,dc=net, encara que es pot configurar per qualsevol altre domini, i també afegir més domain components de forma que poguem crear rames de la principal i d'esta forma, obtindre una jerarquía d'ldaps, tal volta per oferir un punt únic d'autenticació i delegar-la cap al ldap que finalment puga autenticar-nos, a l'estil d'EDUROAM.

Els scripts es troben al gitorius: git clone http://git.gitorious.org/ldapfromdrupal/ldapfromdrupal.git. Hi ha un Readme que explica com posar en marxa un directori a partir dels usuaris d'un drupal. Bàsicament, hem d'instal.lar: apt-get install slapd ldap-utils db4.6-util # ó db4.7-util i configurar config.sh amb les dades del directori i les dades d'accés a mySQL. Hi ha també uns exemples de configuració per al openLdap, pensats per a Fedora/Redhat, però l'adaptació a debian/ubuntu, és tan fàcil com canviar /etc/openldap/ per /etc/ldap a totes les referències que hi hagin a config.sh.

Una vegada instal.lats, la càrrega es pot fer periòdicament, executant: ./ldif_from_hdb.sh drupal6. Un exemple de recerca: ldapsearch -x -W -D "cn=admin,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)" ó per comprovar que l'autenticació funciona podem fer bind amb un usuari: ldapsearch -x -W -D "uid=rotobator,dc=guifi,dc=net" -b "dc=guifi,dc=net" -h localhost "(cn=rotobator)".


Ús de ldap.guifi.net

En un principi, qualsevol màquina/servei, pot usar aquest directori per autenticar usuaris de guifi.net, però hi ha una sèrie de mesures de seguretat que cal tindre en compte:

  • El directori no permet recuperar cap data personal ni d'altres persones, només permet autenticar usuaris.
  • Només l'usuari cn=admin,dc=guifi,dc=net pot obtindre les dades emmagatzemades, encara que este usuari està reservat per a ús intern i manteniment del directori.
  • Cada màquina/servei que necessite autenticar usuaris contra aquest directori, haurà de disposar d'un certificat de servidor x509, vàlid i acceptat explícitament pels administradors del directori. Hi ha empresses que oferixen gratuitament aquests certificats.
  • L'accés al directori només és posible mijançant LDAPS, és a dir, usant TLS/SSL.

Configuració de clients

Exemples de configuracions.

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