Portál AbcLinuxu, 30. dubna 2025 10:45
Kdo byl na OWO, ten ví, že
Pinkava tam měl přednášku o jabbimu, přípravách nového klienta, který je napsán desetkrát rychleji, je lepší, má skin, dvacetkrát více funkcí a k jeho používání nepotřebujete dvě vysoké školy, jako u ostataních.
Ve své vrcholné řeči nejprve vyzdvihl přednosti jabberu, jeho otřevřenost apod, která poskytuje každému prostor pro založení vlastního serveru. O pár minut později označil servery, které si založili bývalý uživatelé jabber.cz (k vůli jeho nepřílišné stabilitě) jako truc servery (od slovesa trucovat). Aby ještě dále uvedl, že když se z malého serveru stane velký, ná problém se stabilitou. Zkrátka brilatní logika.
Pojď mě si takový server nainstalovat.
yum install jabberd vim /etc/jabberd/c2s.xml vim /etc/jabberd/sm.xml
Instalace a změna ID.
Tak takhle ne, přátelé. Funguje veřejná registrace, nelze přidávat uživatele v nějakém admin rozhranní, jen přímou editací BDB.
Když už to nemá admin rozhranní a potřebujeme ručně editovat uživatele (po zablokování možnosti veřejné registrace), tak to alespoň strčme do MySQL.
V dokumentaci z roku 2003 na officiálních stránkách se píše, že stačí vytvořit v MySQL uživatele a DB a tyto údaje nacvakat do c2s.xml
a sm.xml
. Nic víc. Fajn. Opět trochu naivně jsem to udělal přesně podle návodu, s tím, že se mi to nezdálo. Ale což, jabberd si může tabulky vytvořit sám.
Očividně nemůže. O DB schématu se v manuálu neříká projistotu vůbec nic. Po chvilce hledání, při které jsem zjistil, že mi locate
indexuje také zálohy, jsem nalezl /usr/share/jabberd/db-setup.mysql
. Toto stačí naimportovat do MySQL:
mysql -u root -p -D jabberd2 < /usr/share/jabberd/db-setup.mysql
Pak už to funguje.
DB schema je poměrně jednoduché. Pro odstranění uživatele stačí editovat tabulku authreg
a smazat příslušný záznam. Pro "registraci" nového uživatele, jej stačí přidat příkazem
insert into authreg (username, realm, password) VALUES ......
Kde uvedené položky jsou samovysvětlující.
DB specialistům jistě vstávají všechny chlupy na těle z představy porušených cizích klíčů, sirotčích záznamů apod. Žádné tam nejsou . Paranoikům potom z faktu, že heslo je v plain-textu. No, je to OpenSource.
Pro připojení klienta na server je nutno povolit porty:
tcp/5222 -- nesifrovane spojeni tcp/5223 -- SSL spojeni klienta a serveru.
Pro meziserverovou komuminakci pak
tcp/5269
Pokud používáte firehol, můžete si copy-pastnout následující definice:
server_jabberd_ports="tcp/5222 tcp/5223 tcp/5269" client_jabberd_ports="default"
A nastavit sekci příslušné interface:
server jabberd accept
Případně si rozdělit klientské/server a server/server porty
Tiskni
Sdílej:
Nelze totiž reálně mít uložené heslo v zašifrované podobě a zároveň posílat nezašifrovaným kanálem heslo ne v plaintextu nebo ekvivalentní podobě.Lze to. Na serveru je možné mít uložený hash, který vznikne z hesla. A klient bude posílat hash hashe. Pak sice hash uložený na serveru je pro komunikaci s tímto serverem ekvivalent hesla (tj. při odcizení hashe se můžu přihlásit k serveru), ale není možné ten hash použít na jiném serveru (kde má uživatel stejné heslo, ale zahashované s jinou solí). Pak by ale zvolený komunikační protokol musel podporovat dvě soli – jednu pro server (kterou server hashuje všechna hesla před uložením do databáze) a druhou pro aktuální spojení (kterou se zabrání zopakování přihlášení s odposlechnutými údaji). Možná by to šlo simulovat tím, že by se v protokolech s autentizací na principu výzva–odpověď výzva rozdělila na dvě poloviny, půlka by byla sůl serveru a druhá půlka sůl spojení. Jenže to by asi dost oslabilo sílu používaných hashovacích funkcí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.