LDAP/ca: Diferència entre les revisions

De Guifi.net - Wiki Català

(Càrrega d'usuaris)
m (Al ha mogut LDAP a LDAP/ca)
 
(Hi ha 16 revisions intermèdies sense mostrar fetes per 4 usuaris)
Línia 12: Línia 12:
 
Els scripts es troben al gitorius: <code>git clone https://git.gitorious.org/ldapusers/ldapusers.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>.
 
Els scripts es troben al gitorius: <code>git clone https://git.gitorious.org/ldapusers/ldapusers.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>.
  
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>.
+
Una vegada instal.lats, la càrrega es pot fer periòdicament, executant: <code>./ldif_from_hdb.sh drupal6</code>. Exemples de recerca:
 +
* <code>ldapsearch -x -w PASSWORD -D "uid=webldap2011,o=webusers,dc=guifi,dc=net" -b "o=webusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/ "uid=rotobator"</code>  
 +
* per comprovar que l'autenticació funciona podem fer bind amb un usuari: <code>ldapsearch -x -W -D "uid=rotobator,o=webusers,dc=guifi,dc=net" -b "o=webusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/  "(cn=rotobator)"</code>.
 +
 
 +
* recerca d'usuaris federats a la rama del proxy: <code>ldapsearch -x -w PASSWORD -D "uid=proxyldap2011,o=proxyusers,dc=guifi,dc=net" -b "o=proxyusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/ "(&(uid=miquel.martos)(ou=2624))"</code>
  
 
=== Ús de ldap.guifi.net ===
 
=== Ú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:
 
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.
 
* 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.
+
* Només l'usuari ''cn=webldap2011,o=webusers, dc=guifi,dc=net'' (per als usuaris importats des del drupal) o l'usuari ''cn=proxyldap2011,o=proxyusers, dc=guifi,dc=net'' (per als usuaris dels proxys federats) poden 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.
 
* L'accés al directori només és posible mijançant ''LDAPS'', és a dir, usant TLS/SSL.
  
Línia 35: Línia 38:
 
#DEREF never
 
#DEREF never
 
BASE    dc=guifi,dc=net
 
BASE    dc=guifi,dc=net
URI    ldaps://ldap.guifi.net/
+
URI    ldaps://ldap.guifi.net/ ldaps://ldap2.guifi.net/
 
TLS_REQCERT never
 
TLS_REQCERT never
  
 
</pre>
 
</pre>
 +
==== Proxy federat ====
 +
 +
Abans de començar haurem de tindre clar quin és el node ID del nostre proxy (http://guifi.net/node/NODEID) per que ens el demana en la instal.lació:
 +
 +
* Afegir els repositoris a ''/etc/apt/sources.list''
 +
deb http://serveis.guifi.net/debian guifi/
 +
deb http://serveis.guifi.net/debian guifi-testing/
 +
 +
* executar:
 +
sudo apt-get update
 +
sudo apt-get install guifi-proxy3
 +
 +
Amb això ja tenim un squid en marxa, un cron que actualitza els ACLs i autenticació automàctica contra '''ldap.guifi.net'''. Per la configuració personalitzada hem d'usar ''/etc/squid3/custom.conf''.
  
 
==== LDAP al Mediawiki ====
 
==== LDAP al Mediawiki ====
Línia 68: Línia 84:
  
 
   //Le decimos cual es la base de la consulta
 
   //Le decimos cual es la base de la consulta
   $wgLDAPBaseDNs = array("LDAP"=>"dc=guifi,dc=net");
+
   $wgLDAPBaseDNs = array("LDAP"=>"o=webusers,dc=guifi,dc=net");
 
   $wgLDAPSearchAttributes = array("LDAP"=>"uid");
 
   $wgLDAPSearchAttributes = array("LDAP"=>"uid");
  
Línia 77: Línia 93:
 
   //facilitem el user DN
 
   //facilitem el user DN
 
   $wgLDAPSearchStrings = array(
 
   $wgLDAPSearchStrings = array(
   "LDAP"=>"uid=USER-NAME,dc=guifi,dc=net"
+
   "LDAP"=>"uid=USER-NAME,o=webusers,dc=guifi,dc=net"
 
   );
 
   );
  
 
</pre>
 
</pre>
 +
 +
==== LDAP al WP amb el plugin simple LDAP login ====
 +
 +
Per integrar els inicis de sessió Wordpress d'una delegació de guifi amb ldap.guifi.net, podem fer servir per exemple el plugin "[https://wordpress.org/extend/plugins/simple-ldap-login/ Simple LDAP Login]".
 +
 +
[[Fitxer:Ldap_working.PNG]]
 +
 +
Requeriments:
 +
Es necessari tenir suport LDAP a PHP (en sistemes debian/ubuntu, paquet php5-ldap)
 +
També, si el servidor on s'esta instal·lant Wordpress, no te un certificat SSL (per exemple, un autogenerat), s'ha d'afegir el següent a l'arxiu /etc/ldap/ldap.conf (o /etc/ldap.conf):
 +
 +
  TLS_REQCERT never
 +
 +
==== LDAP al WP amb el plugin wpDirAuth ====
 +
Aquest plugin és el més adequat per a la integració, donat que és el més actualitzat (funciona correctament la v1.7.6 amb el WordPress v 3.5.1). Una vegada hem instal.lat el plugin (http://wordpress.org/extend/plugins/wpdirauth/installation/), els prerequisits són els mateixos que amb el "simple LDAP login" (secció d'abans), i la configuració bàsica és la següent:
 +
<pre>
 +
Enable Directory Authentication?: Yes
 +
Enable SSL Connectivity?: Use SSL (ldaps)
 +
Directory Servers (Domain Controllers): ldap.guifi.net, ldap2.guifi.net
 +
Account Filter: uid
 +
Base DN: o=webusers,dc=guifi,dc=net
 +
Bind DN: uid=webldap2011,o=webusers,dc=guifi,dc=net
 +
Bind Passwor: XXXXXXXX
 +
</pre>
 +
[[Fitxer:Ldap_WP_wpDirAuth.PNG]]
 +
 +
Este plugin necessita un usuari administrador que tinga permís al ldap per poder buscar usuaris de forma anònima, el dit usuari és "uid=webldap2011,o=webusers,dc=guifi,dc=net" i la contrasenya "XXXXXXX" l'heu de demanar a rotobator AT gmail.com (Antonio Garcia), de moment, fins que disposem d'un mètode més seriós. D'esta forma tenim constància des usuaris que usen esta contrasenya per tal d'avisar-los quant es canvíe, etc.
  
 
== Proves de balanceig/distribució ==
 
== Proves de balanceig/distribució ==
Línia 94: Línia 137:
  
 
== Altres ==
 
== Altres ==
Ldap per validar els usuaris dels proxys federats. Pròximament.
+
Es pot demanar la sincronització del directori principal cap a d'altres instàncies remotes per millorar el temps de resposta. Al repositori esmentat es troben els scripts de sincronització.

Revisió de 14:05, 3 març 2014

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, proxy federat...). 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 o els usuaris dels proxys federats 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 https://git.gitorious.org/ldapusers/ldapusers.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. Exemples de recerca:

  • ldapsearch -x -w PASSWORD -D "uid=webldap2011,o=webusers,dc=guifi,dc=net" -b "o=webusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/ "uid=rotobator"
  • per comprovar que l'autenticació funciona podem fer bind amb un usuari: ldapsearch -x -W -D "uid=rotobator,o=webusers,dc=guifi,dc=net" -b "o=webusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/ "(cn=rotobator)".
  • recerca d'usuaris federats a la rama del proxy: ldapsearch -x -w PASSWORD -D "uid=proxyldap2011,o=proxyusers,dc=guifi,dc=net" -b "o=proxyusers,dc=guifi,dc=net" -H ldaps://ldap.guifi.net/ "(&(uid=miquel.martos)(ou=2624))"

Ú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=webldap2011,o=webusers, dc=guifi,dc=net (per als usuaris importats des del drupal) o l'usuari cn=proxyldap2011,o=proxyusers, dc=guifi,dc=net (per als usuaris dels proxys federats) poden obtindre les dades emmagatzemades, encara que este usuari està reservat per a ús intern i manteniment del directori.
  • L'accés al directori només és posible mijançant LDAPS, és a dir, usant TLS/SSL.

Configuració de clients

Exemples de configuracions. En general hem de configurar les llibreries client del sistema, per això hem de modificar l'arxiu /etc/ldap/ldap.conf a ubuntu o /etc/openldap/ldap.conf a fedora:

#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#SIZELIMIT	12
#TIMELIMIT	15
#DEREF		never
BASE    dc=guifi,dc=net
URI     ldaps://ldap.guifi.net/ ldaps://ldap2.guifi.net/
TLS_REQCERT never

Proxy federat

Abans de començar haurem de tindre clar quin és el node ID del nostre proxy (http://guifi.net/node/NODEID) per que ens el demana en la instal.lació:

  • Afegir els repositoris a /etc/apt/sources.list
deb http://serveis.guifi.net/debian guifi/
deb http://serveis.guifi.net/debian guifi-testing/
  • executar:
sudo apt-get update
sudo apt-get install guifi-proxy3

Amb això ja tenim un squid en marxa, un cron que actualitza els ACLs i autenticació automàctica contra ldap.guifi.net. Per la configuració personalitzada hem d'usar /etc/squid3/custom.conf.

LDAP al Mediawiki

  • Instal.lació de la extensió d'LDAP per a mediawiki:
    • Ubuntu:
sudo apt-get install mediawiki-extensions-ldapauth
sudo mwenext LdapAuthentication.php
  • 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"=>"ldap.guifi.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"=>"o=webusers,dc=guifi,dc=net");
  $wgLDAPSearchAttributes = array("LDAP"=>"uid");

  //no usem les directives de grup de moment 
  $wgLDAPGroupsPrevail = array("LDAP"=>false);
  $wgLDAPGroupNameAttribute = array("LDAP"=>"cn");
 
  //facilitem el user DN
  $wgLDAPSearchStrings = array(
   "LDAP"=>"uid=USER-NAME,o=webusers,dc=guifi,dc=net"
   );

LDAP al WP amb el plugin simple LDAP login

Per integrar els inicis de sessió Wordpress d'una delegació de guifi amb ldap.guifi.net, podem fer servir per exemple el plugin "Simple LDAP Login".

Ldap working.PNG

Requeriments: Es necessari tenir suport LDAP a PHP (en sistemes debian/ubuntu, paquet php5-ldap) També, si el servidor on s'esta instal·lant Wordpress, no te un certificat SSL (per exemple, un autogenerat), s'ha d'afegir el següent a l'arxiu /etc/ldap/ldap.conf (o /etc/ldap.conf):

 TLS_REQCERT never

LDAP al WP amb el plugin wpDirAuth

Aquest plugin és el més adequat per a la integració, donat que és el més actualitzat (funciona correctament la v1.7.6 amb el WordPress v 3.5.1). Una vegada hem instal.lat el plugin (http://wordpress.org/extend/plugins/wpdirauth/installation/), els prerequisits són els mateixos que amb el "simple LDAP login" (secció d'abans), i la configuració bàsica és la següent:

 Enable Directory Authentication?: Yes
 Enable SSL Connectivity?: Use SSL (ldaps)
 Directory Servers (Domain Controllers): ldap.guifi.net, ldap2.guifi.net
 Account Filter: uid
 Base DN: o=webusers,dc=guifi,dc=net
 Bind DN: uid=webldap2011,o=webusers,dc=guifi,dc=net
 Bind Passwor: XXXXXXXX

Ldap WP wpDirAuth.PNG

Este plugin necessita un usuari administrador que tinga permís al ldap per poder buscar usuaris de forma anònima, el dit usuari és "uid=webldap2011,o=webusers,dc=guifi,dc=net" i la contrasenya "XXXXXXX" l'heu de demanar a rotobator AT gmail.com (Antonio Garcia), de moment, fins que disposem d'un mètode més seriós. D'esta forma tenim constància des usuaris que usen esta contrasenya per tal d'avisar-los quant es canvíe, etc.

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.

Altres

Es pot demanar la sincronització del directori principal cap a d'altres instàncies remotes per millorar el temps de resposta. Al repositori esmentat es troben els scripts de sincronització.

Eines de l'usuari