Configurarea serverului ejabberd cu LDAP

De la Ceata
(Diferența dintre versiuni)
Salt la: navigare, căutare
(Pagină nouă: Articolul este preluat de pe jurnalul lui Victor [http://jurnal.ceata.org/~vnitu] Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos: '''Notă''': fișieru...)
 
 
(3 revizii intermediare efectuată de un utilizator neafișate)
Linia 1: Linia 1:
Articolul este preluat de pe jurnalul lui Victor [http://jurnal.ceata.org/~vnitu]
+
'''Articolul este preluat de pe jurnalul lui Victor [http://jurnal.ceata.org/~vnitu]'''
  
 
Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos:
 
Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos:
Linia 5: Linia 5:
 
'''Notă''': fișierul de configurare se află în majoritatea cazurilor în
 
'''Notă''': fișierul de configurare se află în majoritatea cazurilor în
  
<span style="color:#FFFFFF; background:#000000">/etc/ejabberd/ejabberd.cfg</span>
+
/etc/ejabberd/ejabberd.cfg
  
 
== Notificarea utilizatorilor conectați ==
 
== Notificarea utilizatorilor conectați ==
Linia 13: Linia 13:
 
Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda:
 
Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda:
  
<span style="color:#FFFFFF; background:#000000">ejabberdctl connected-users</span>
+
ejabberdctl connected-users
  
 
Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-)
 
Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-)
Linia 21: Linia 21:
 
Tot ce e de făcut aici este de căutat linia:
 
Tot ce e de făcut aici este de căutat linia:
  
<span style="color:#FFFFFF; background:#000000">{auth_method, internal}.</span>
+
{auth_method, internal}.
  
 
...și comentată prefixând-o cu
 
...și comentată prefixând-o cu
  
<span style="color:#FFFFFF; background:#000000">%%</span>.
+
%%.
  
== (Opțional) Activarea autentificării multiple ==
+
== Activarea autentificării multiple (Opțional) ==
  
 
Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc
 
Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc
  
<span style="color:#FFFFFF; background:#000000">{auth_method, "ceva"}</span> și adăugată o nouă linie:
+
{auth_method, "ceva"}
  
<span style="color:#FFFFFF; background:#000000">{host_config, "ceata.org", [{auth_method, [internal, ldap]}]}.</span>
+
și adăugată o nouă linie:
 +
 
 +
{host_config, "ceata.org", [{auth_method, [internal, ldap]}]}.
  
 
Am activat aici pentru gazda ''ceata.org'' autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate.
 
Am activat aici pentru gazda ''ceata.org'' autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate.
Linia 74: Linia 76:
 
Acum, luate linie cu linie:
 
Acum, luate linie cu linie:
  
<span style="color:#FFFFFF; background:#000000">{auth_method, ldap}.</span> - se configurează ejabberd să rezolve autentificarea prin LDAP
+
{auth_method, ldap}.
 +
- se configurează ejabberd să rezolve autentificarea prin LDAP
  
<span style="color:#FFFFFF; background:#000000">{ldap_servers, ["localhost"]}.</span> - se definește o '''listă''' de server LDAP pe baza cărora să se facă autentificarea. În cazul nostru este doar unul, dar se pot introduce mai multe, separate prin virgulă.
+
{ldap_servers, ["localhost"]}.
 +
- se definește o '''listă''' de server LDAP pe baza cărora să se facă autentificarea. În cazul nostru este doar unul, dar se pot introduce mai multe, separate prin virgulă.
  
<span style="color:#FFFFFF; background:#000000">%%{ldap_encrypt, none}.<>br
+
%%{ldap_encrypt, none}.
%%{ldap_encrypt, tls}.</span> - comentăm ambele linii, deoarece gazda LDAP este pe mașina locală (în cazul nostru). Configurarea lor depinde în mare măsură de modul în care se preferă interacțiunea cu serverul LDAP.
+
%%{ldap_encrypt, tls}.
 +
- comentăm ambele linii, deoarece gazda LDAP este pe mașina locală (în cazul nostru). Configurarea lor depinde în mare măsură de modul în care se preferă interacțiunea cu serverul LDAP.
  
<span style="color:#FFFFFF; background:#000000">{ldap_port, 389}.</span> - evident, portul de conectare la LDAP
+
{ldap_port, 389}.
<span style="color:#FFFFFF; background:#000000">%% LDAP manager:<br>
+
- evident, portul de conectare la LDAP
%%{ldap_rootdn, "cn=admin,dc=example,dc=com"}.<br>
+
 
%%<br>
+
%% LDAP manager:
%% Password to LDAP manager:<br>
+
%%{ldap_rootdn, "cn=admin,dc=example,dc=com"}.
%%{ldap_password, "mysecurepasswd"}.</span>
+
%%
 +
%% Password to LDAP manager:
 +
%%{ldap_password, "mysecurepasswd"}.
  
 
'''Important''': în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie.
 
'''Important''': în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie.
  
<span style="color:#FFFFFF; background:#000000">{ldap_base, "ou=people,dc=ceata,dc=org"}.</span>
+
{ldap_base, "ou=people,dc=ceata,dc=org"}.
  
 
'''Important''': unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii)
 
'''Important''': unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii)
  
<span style="color:#FFFFFF; background:#000000">{ldap_uids, [{"uid", "%u"}]}.</span>
+
{ldap_uids, [{"uid", "%u"}]}.
  
 
'''Important''': câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea:
 
'''Important''': câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea:
  
<span style="color:#FFFFFF; background:#000000">{ldap_uids, [{"email", "%u@example.com"}]}.</span> - pentru situațiile specifice unei rețele interne, nu intru în detalii.
+
{ldap_uids, [{"email", "%u@example.com"}]}.
 +
- pentru situațiile specifice unei rețele interne, nu intru în detalii.
  
<span style="color:#FFFFFF; background:#000000">{ldap_filter, "(objectClass=inetOrgPerson)"}.</span> - '''Opțional''': un filtru suplimentar, pentru a asigura accesul la server numai utilizatorilor găsiți într-o anumită clasă.
+
{ldap_filter, "(objectClass=inetOrgPerson)"}.
 +
- '''Opțional''': un filtru suplimentar, pentru a asigura accesul la server numai utilizatorilor găsiți într-o anumită clasă.
  
 
Putem afla simplu aceste variabile prin comanda (exemplu concret):
 
Putem afla simplu aceste variabile prin comanda (exemplu concret):
  
<span style="color:#FFFFFF; background:#000000">ldapsearch -b "uid=user,ou=people,dc=ceata,dc=org" -D "uid=user,ou=people,dc=ceata,dc=org" -W -x -h ceata.org</span>
+
ldapsearch -b "uid=user,ou=people,dc=ceata,dc=org" -D "uid=user,ou=people,dc=ceata,dc=org" -W -x -h ceata.org
  
 
urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real).
 
urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real).
Linia 112: Linia 121:
 
Folosind
 
Folosind
  
<span style="color:#FFFFFF; background:#000000">/etc/init.d/ejabberd restart</span> (poate varia în funcție de distribuție) ar trebui să se restarteze serverul jabber.
+
/etc/init.d/ejabberd restart
 +
(poate varia în funcție de distribuție) ar trebui să se restarteze serverul jabber.
  
 
În caz de nevoie, setarea
 
În caz de nevoie, setarea
<span style="color:#FFFFFF; background:#000000">{loglevel, 5}.</span> (debug) în ejabberd.cfg și aruncarea unei priviri pe <span style="color:#FFFFFF; background:#000000">/var/log/ejabberd/ejabberd.log</span> ar putea oferi indicii prețioase.
+
{loglevel, 5}.
 +
(debug) în ejabberd.cfg și aruncarea unei priviri pe
 +
 
 +
/var/log/ejabberd/ejabberd.log
 +
ar putea oferi indicii prețioase.
  
 
Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc.
 
Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc.
 +
 +
__NOTOC__
 +
__NOEDITSECTION__

Versiunea curentă din 13 august 2014 09:28

Articolul este preluat de pe jurnalul lui Victor [1]

Pentru a configura eJabberd cu LDAP trebuie să urmați pașii de mai jos:

Notă: fișierul de configurare se află în majoritatea cazurilor în

/etc/ejabberd/ejabberd.cfg

Notificarea utilizatorilor conectați

Deși pare o glumă, e foarte important ca „firul” să fie liber. Nu pentru că ar periclita cumva configurarea, ci pentru a nu provoca confuzie și întreruperi ale serviciului (care uneori pot fi foarte deranjante) printre utilizatorii conectați. Nimeni nu ar dori ca în mijlocul conversației private cu vărul din America, să se întrerupă conexunea pentru că „adminul se joacă la server”.

Pentru a lista utilizatorii conectați se poate folosi de pe sistemul care găzduiește serverul ejabberd, comanda:

ejabberdctl connected-users

Având o listă cu utilizatorii conectați, varianta cea mai simplă e trimiterea unui mesaj „manual” fiecăruia dintre ei, dacă sunt puțini. Altfel, ar fi nevoie de mod_announce + comenzi Ad-hoc, ceea ce nu face obiectul articolului de față :-)

Dezactivarea autentificării interne

Tot ce e de făcut aici este de căutat linia:

{auth_method, internal}.

...și comentată prefixând-o cu

%%.

Activarea autentificării multiple (Opțional)

Dacă e dorită cumularea utilizatorilor interni ai ejabberd cu cei aflați în directorul LDAP, atunci vor trebui comentate toate liniile care definesc

{auth_method, "ceva"}

și adăugată o nouă linie:

{host_config, "ceata.org", [{auth_method, [internal, ldap]}]}.

Am activat aici pentru gazda ceata.org autentificarea multiplă, prin care atât conturile interne ale ejabberd, cât și cele aflate în LDAP, vor fi validate.

Atenție: dacă vor exista conturi duplicat între ejabberd și LDAP, serverul va da eroare, cerând renunțarea la unul dintre ele! (probabil cel intern ar fi soluția acceptată în majoritatea cazurilor)

Configurarea ejabberd + LDAP

În această fază, avem următoarele instrucțiuni de vânat în ejabberd.cfg:

%% Authentication using LDAP
%%
{auth_method, ldap}.
%%
%% List of LDAP servers:
{ldap_servers, ["localhost"]}.
%%
%% Encryption of connection to LDAP servers (LDAPS):
%%{ldap_encrypt, none}.
%%{ldap_encrypt, tls}.
%%
%% Port connect to LDAP server:
{ldap_port, 389}.
%%
%% LDAP manager:
%%{ldap_rootdn, "cn=admin,dc=example,dc=com"}.
%%
%% Password to LDAP manager:
%%{ldap_password, "mysecurepasswd"}.
%%
%% Search base of LDAP directory:
{ldap_base, "ou=people,dc=ceata,dc=org"}.
%%
%% LDAP attribute that holds user ID:
{ldap_uids, [{"uid", "%u"}]}.
%%
%% LDAP filter:
{ldap_filter, "(objectClass=inetOrgPerson)"}.

Acum, luate linie cu linie:

{auth_method, ldap}.

- se configurează ejabberd să rezolve autentificarea prin LDAP

{ldap_servers, ["localhost"]}. - se definește o listă de server LDAP pe baza cărora să se facă autentificarea. În cazul nostru este doar unul, dar se pot introduce mai multe, separate prin virgulă.

%%{ldap_encrypt, none}.
%%{ldap_encrypt, tls}.

- comentăm ambele linii, deoarece gazda LDAP este pe mașina locală (în cazul nostru). Configurarea lor depinde în mare măsură de modul în care se preferă interacțiunea cu serverul LDAP.

{ldap_port, 389}. - evident, portul de conectare la LDAP

%% LDAP manager:
%%{ldap_rootdn, "cn=admin,dc=example,dc=com"}.
%%
%% Password to LDAP manager:
%%{ldap_password, "mysecurepasswd"}.

Important: în cazul nostru, utilizatorii se vor conecta la ejabberd prin aceleași parole definite în LDAP. Alternativ, se poate defini un cont care rezolvă autentificarea, dar în majoritatea cazurilor nu pare să fie nevoie.

{ldap_base, "ou=people,dc=ceata,dc=org"}.

Important: unde se face căutarea în schema LDAP (nodul în care sunt definiți utilizatorii)

{ldap_uids, [{"uid", "%u"}]}.

Important: câmpul dindirectorul LDAP care corespunde numelui de utilizator folosit pentru autentificarea în ejabberd. Alternativ, putem avea:

{ldap_uids, [{"email", "%u@example.com"}]}.

- pentru situațiile specifice unei rețele interne, nu intru în detalii.

{ldap_filter, "(objectClass=inetOrgPerson)"}.

- Opțional: un filtru suplimentar, pentru a asigura accesul la server numai utilizatorilor găsiți într-o anumită clasă.

Putem afla simplu aceste variabile prin comanda (exemplu concret):

ldapsearch -b "uid=user,ou=people,dc=ceata,dc=org" -D "uid=user,ou=people,dc=ceata,dc=org" -W -x -h ceata.org

urmată de introducerea parolei proprii (trebuie înlocuit „user” cu un utilizator real).

Test!

Folosind

/etc/init.d/ejabberd restart

(poate varia în funcție de distribuție) ar trebui să se restarteze serverul jabber.

În caz de nevoie, setarea

{loglevel, 5}.

(debug) în ejabberd.cfg și aruncarea unei priviri pe

/var/log/ejabberd/ejabberd.log

ar putea oferi indicii prețioase.

Acum, ar trebui să fie totul configurat pentru a comunica prin XMPP folosind contul de LDAP. Pentru orice problemă întâmpinată în configurarea unui asemenea mediu, sau sugestii de îmbunătățire a configurării, aștept pe mail întrebări etc.


Unelte personale
Spații de nume

Variante
Acțiuni
Navigare
Trusa de unelte