October 2012 Arhive

sâmbătă 6 octombrie 2012, 03:40:15 +0300

Utilizarea protocolului XMPP pentru mesagerie instant (Ceata)

De ceva vreme, Ceata dispunde de propria instanță a unui server ejabberd. Nu a fost niciodată un serviciu foarte popular, și principalul motiv a fost incomoditatea în adminstrare și obscuritatea serviciului însuși. Mai mult, popularitatea exagerată a protocoalelor și serviciilor de comunicare nelibere (Yahoo, Skype, Facebook - ca să le numesc doar pe cele mai cunoscute) a îngreunat și mai mult promovarea și popularizarea opțiunilor libere în comunicare.

După cum scriam în articolul precedent, am configurat serverul local de jabber pentru realiza autentificarea pe baza serviciului LDAP. Ce înseamnă asta? Practic, fiecare individ cu un cont în serviciul nostru de LDAP se va putea folosi de același cont pentru a se autentifica pe jabber! :-)

Voi ridica acum perdeaua obscurității denumirilor, pentru cei nefamiliari cu acestea:

  • Un cont în LDAP se poate crea prin interfața web administrată de Solena
  • Mesageria instant prin jabber diferă de cea oferită de Yahoo prin:
    • Comunicarea e securizată
    • Nu există nicio autoritate care interceptează și filtrează comunicarea Yahoo cenzurează legături web)
    • Permite crearea de „camere” (en. chatrooms) și conferințe asemănătoare cu IRC
  • În multe cazuri, același client utilizat pentru protocoale nelibere suportă și XMPP (e.g. pidgin)
  • Da, conturile de pe LDAP se pot folosi în tot mai multe servicii și situri ale Ceata :-)

Pașii necesari pentru a obține un cont:

  • Accesarea interfeței web pentru administrarea conturilor în Ceata
  • Crearea unui cont (sunt instrucțiuni clare) și personalizarea acestuia după bunul plac al utilizatorului!

Exemplu de configurare folosind Pidgin, pentru a accesa serviciul și conferința (permanent deschisă) Ceata (interfața în en_US)

  1. Dacă nu este deja, acesta va trebui instalat folosind managerul de pachete specific distribuției de GNU+Linux, sau descărcând arhiva de pe situl oficial.
  2. Se alege din meniul AccountsManage Accounts (Ctrl+A)
  3. Clic pe Add
  4. Se aleg:
    Protocol XMPP
    Username Numele de utilizator ales în cont.ceata.org
    Domain ceata.org
    Resource ceata.org
    Password Parola aleasă pentru contul LDAP
  5. Opțional, se mai pot configura:
    Remember password Pentru a ține minte parola
    Local alias Cum să fie afișat local numele propriu (în listă și/sau conversații - e.g. „eu”)
    Use this buddy icon for this account O imagine reprezentativă pentru contul curent (avatar)

Aceste setări vor fi suficiente pentru a beneficia de serviciul nostru de jabber. Dar pentru a fi toți la un loc și comunica unii cu ceilalți, am creat și o conferință permanent deschisă, și voi enumera pașii pentru a ne găsi folosind Pidgin:

  1. Meniu: BuddiesJoin a Chat
  2. Setări: Account contul de XMPP @ceata.org
    Room lăsat gol
    Server conferinta.ceata.org
    Handle numele de utilizator (fără @ceata.org)
  3. Apasă pe Room List
  4. Va apărea conferința denumită ceata
  5. În acest punct sunt 2 opțiuni:
    • Apeși pe Join și vei intra în conferință, în care ne vei găsi și pe restul utilizatorilor
    • Apeși pe Add chat și se va deschide o fereastră, unde poți seta diverși alți parametri, printre care Autojoin when account connects (pentru a intra automat în conferință la reconectare) și Alias, similară celei de la crearea contului în Pidgin. La final, Add.

Acestea fiind spuse, promit să actualizez articolul cu capturi de ecran din instalarea mea de Pidgin, și poate cu mai multe legături utile despre Jabber, servicii nelibere și XMPP. Acum sunt pe fugă ;-)

Ne vedem pe jabber!


Postat de vnitu | Legătură permanentă | Fișier din: ceata

miercuri 3 octombrie 2012, 03:20:45 +0300

Configurarea serverului ejabberd cu LDAP

Un nou episod din administrarea infrastructurii Ceata: am configurat serverul ejabberd pentru autentificarea utilizatorilor prin LDAP.

Am săpat cam o oră pentru a realiza dedesubturile configurării necesare. Nu voi intra în detalii privind cele experimentate, ci voi dezvălui direct configurația funcțională, exact așa cum este ea, explicată linie cu linie. Mai întâi, avem niște pași de urmat.

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

%%
.

(Opțional) Activarea autentificării multiple

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
(pate 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.


Postat de vnitu | Legătură permanentă | Fișier din: ceata, administrare