www.SAMURAJ-cz.com 

17.12.2017 Daniel Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Jabber server OpenFire ve firmě

Pátek, 20.07.2007 11:51 | Samuraj - Petr Bouška |
O tom co je to Instant Messaging (IM), proč je dobrým IM zrovna Jabber, že je dobré nasadit IM ve firmě a že vhodným kandidátem je právě Jabber jsem psal v minulém článku Popis Instant Messagingu Jabber se zaměřením na firemní nasazení. Nyní se již budu věnovat výběru určitého Jabber serveru a jeho popisu.

Výběr Jabber serveru - Openfire

Serverů pro Jabber existuje celá řada, seznam najdete na Jabber Servers. Snažil jsem se najít takový, který mě bude nejlépe vyhovovat. Ve výběru jsem se zaměřil hlavně na tyto body:

  • aby byl server volně šiřitelný
  • aby měl správcovské rozhraní a nemusela se veškerá konfigurace dělat přes konfigurační soubory
  • aby bylo k dispozici propojení s Active Directory pro získání seznamu uživatelů a ověření

Z krátkého testování se mi nejvíce líbil OpenFire od firmy Ignite Realtime a po delším testování myslím, že to byla dobrá volba.

Stejným způsobem jsem zkoušel klienty, kterých je ještě větší množství a zatím jsem zůstal u klienta Spark, který je od stejného výrobce jako server OpenFire. Seznam klientů najdete na Jabber Clients.

OpenFire je server napsaný v Jave. Základní funkce jsou přístupné pod licencí GPL, ale obsahuje i komerční rozšíření. Má velmi pěkné webové rozhranní pro správu a jednoduchou instalaci. Je možné jej rozšiřovat pomocí pluginů a existuje rozsáhlé fórum s podporou.

Instalace

Z webu se stáhne instalační soubor. Já jsem použil verzi pro MS Windows (instaloval jsem na Windows Server 2003 Enterprise EN), ale k dispozici je i verze pro Linux (primárně Red Hat) a Mac. Instalační soubor v sobě obsahuje i JRE, takže již vlastně nepotřebujeme nic dalšího.

Instalace je velmi jednoduchá. Na začátku vybereme jazyk, kde se nachází i čeština (netestoval jsem). Zvolíme cílový adresář (preferuji adresu v rootu, tedy c:\OpenFire). A to je vše, co se týče instalace.

Konfigurace

Další krok je úvodní konfigurace, při které můžeme nastavit řadu parametrů nebo ji pouze rychle projít a vše nastavit až v administračním rozhranní nebo pomocí konfiguračního souboru openfire.xml (u mne v cestě C:\Openfire\conf\openfire.xml). V administračním rozhranní nastavujeme ještě daleko více parametrů, než-li ty úvodní.

Spustíme server, čímž se otevře i informační konzole odkud můžeme spustit webové administrační rozhranní. To běží ve výchozím stavu na lokální adrese a portu 9090 (http://127.0.0.1:9090). Zde projdeme krátkou úvodní konfigurací serveru, po které je již vše plně funkční.

Openfire konzole

Volba jazyka a hodnoty pro server

Nejprve znovu vybíráme jazyk.

Na druhé stránce se zadává jméno domény (serveru). To je důležité, protože se jedná o hodnotu, která ovlivňuje všechna JID na serveru (jedná se o část za zavináčem). Nejčastější tvar je firma.cz. Dále nastavujeme porty pro nešifrovaný a šifrovaný přístup k administraci.

Nastavení databáze

Další krok je nastavení databáze. Můžeme zvolit buď integrovanou databázi HSQLDB, což je nejjednodušší (nic dál ohledně DB již nenastavujeme), ale autory nedoporučované kvůli výkonu. Když jsem server testoval s pár desítkami uživatelů, tak i tato DB byla dostačující.

Nebo externí databázi, kde můžeme připojit téměř libovolnou DB, ale přímo podporované jsou MySQL, Oracle, MS SQLServer, PostgreSQL, IBM DB2. Krátce jsem vyzkoušel MySQL, ale narazil jsem na problém s diakritikou (potažmo UTF-8), který je popsaný i na stránkách OpenFire (a měl by se dát vyřešit). Ve finálním stavu jsem použil jako DB server Oracle 10g. Bylo třeba stáhnout JDBC driver pro danou verzi ze server Oraclu a vše začalo fungovat bez problémů.

Pro externí DB servery jsou u OpenFire skripty na vytvoření DB a popis je podrobně uveden v Database Installation Guide.

Openfire - database settings

Nastavení profilu

Další krok je nastavení profilu, kde volíme, zda jsou uživatelé a skupiny uloženy v DB (default) nebo využijeme Active Directory (AD), přesněji nějaký adresářový server používající LDAP.

Propojení s AD je velmi dobrá možnost pro firemní nasazení. Integrace s AD může využít uživatelské účty, skupiny (a zařazení uživatelů) a ověřování uživatelů. Hodnoty z adresářového serveru (uživatelé a skupiny) jsou bráni pouze pro čtení (není možná žádná změna, tedy vytváření uživatelů). Skupiny můžeme vytvářet, ale nezapisují se do AD nýbrž do DB.

Pokud zvolíme standardní možnost, tak jsou uživatelé spravováni v naší DB. Můžeme využít automatického vytváření účtů (na základě požadavku klienta). A uživatelé mohou plně využít a upravovat svoje vCard.

Openfire - profile settings
Průvodce nastavením integrace s Active Directory

Pokud nezvolíme default hodnotu, ale adresářový server, musíme projít tři kroky upřesňující konfigurace. Popis od výrobce je v článku LDAP Guide.

V prvním kroku zvolíme jako typ serveru AD, zadáme jeho adresu (adresu našeho doménového řadiče) a port. Standardní port je 389, ale můžeme využít i SSL (port 636), zde jsem však narazil na problém popsaný dále.

Pozn.: Většinu hodnot musíme zadávat pomocí Distinguished Name (DN), což je rozlišující název, který má přesný tvar a obsahuje položku s cestou a určení typu každé hodnoty.

Do Base DN zadáme adresu podstromu, v kterém se dále hledají uživatelé a skupiny. Administrator DN je uživatelský účet, pod kterým bude OpenFire přistupovat do AD. Potřebná oprávnění probírám dále mezi problémy. Mezi Advanced Settings můžeme nastavit například SSL.

Openfire - AD krok 1

V druhém kroku nastavujeme mapování uživatele. Určujeme pravidla, podle kterých se vyhledají uživatelé, a nastavujeme, jaké hodnoty se vloží do jejich profilu (vCard).

Do Username Field zadáváme podle, kterého atributu se nastavují jména uživatelů. Nejběžnější je hodnota sAMAccountName, což je logon name pro NT4 (většinou je stejné jako normální přihlašovací jméno).

Advanced Settings máme možnost nastavit filtry. Důležitý je User Filter, kde můžeme určit, kteří uživatelé z naší AD se mají použít.

Nejlepší metodou pro správu uživatelů a skupin, je podle mne, vytvořit speciální skupinu (asi security group) pro Jabber a do ní zařazovat uživatele a skupiny, které mají mít ůčet v Jabberu. Následně vytvoříme filter v Jabberu, aby se vyhledávali pouze účty, které jsou členy této skupiny (a případně pouze aktivní účty, apod.). Takový filter může vypadat třeba takto:

(&(objectClass=organizationalPerson)(memberOf=CN=JabberIM,OU=Objekty,DC=Firma,DC=local))
Openfire - AD krok 2

Ve třetím kroku nastavujeme vlastnosti pro vyhledávání skupiny. Takto můžeme například automaticky přidat skupiny pro oddělení a uživatele, kteří do nich patří. Následně se všichni uživatelé v dané skupině, automaticky vidí v Jabberu. Případně můžeme skupinu zveřejnit (pro určité uživatele nebo všechny).

Volíme zde, z jakých LDAP atributů se získávají hodnoty - jméno skupiny, členové a popis. Pro AD je vše OK již v přednastaveném stavu. Filtr vytvoříme obdobný jako pro uživatele:

(&(objectClass=group)(memberOf=CN=JabberIM,OU=Objekty,DC=Firma,DC=local))
Openfire - AD krok 3

Administrátorský účet

V posledním kroku konfigurace buď vytvoříme administrátorský účet, nebo zvolíme některý z AD.

Pár rad pro běh

Znovu zpuštění úvodní konfigurace

V souboru openfire.xml upravíme řádek <setup>true</setup> tak, že změníme true na false.

Nastavení OpenFire jako službu

Po instalaci musíme server spouštět jako normální aplikaci, což určitě není pro provoz dobré. Proto jej potřebujeme nastavit jako službu, která se automaticky spouští. To můžeme provést pomocí zavolání příkazu s parametrem.

  • openfire-service /install -- installs the service.
  • openfire-service /uninstall -- uninstalls the service.
  • openfire-service /start -- starts the service
  • openfire-service /stop -- stops the service.

Problémy

OpenFire je dobrý projekt, ale nic není bez chyby. Zde je pár problémů, na které jsem narazil při testování. Jinak pro OpenFire funguje pěkné diskusní fórum, kde naleznete řadu informací.

AD – LDAP přes SSL

Chtěl jsem použít bezpečnější připojení k AD. V této chvíli však všechny operace vůči AD jsou extrémně pomalé. To znamená, že například zobrazení seznamu uživatelů či skupiny trvá v řádu minut, přihlašovaní z klienta je také velmi pomalé. Nenašel jsem jiné řešení, než SSL vypnout a vše nyní funguje krásně rychle.

AD - LDAP signing

Pokud ve vaší doméně používáte vyšší bezpečnost a vyžadujete podepisování všech paketů při komunikaci s AD. Tak již při testování připojení z Jabberu dostanete chybovou hlášku

[LDAP: error code 8 - 00002028: LdapErr: DSID-0C09018A, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, vece

Opět jsem nenašel žádné řešení, nežli vypnout podepisování nebo použít SSL (pak je ale spojení neúnosně pomalé).

AD – oprávnění pro uživatele, který čte data z AD

Aby mohl Jabber server přistupovat do AD a číst a ověřovat uživatele, tak to musí činit pod nějakým doménovým účtem. Dobré je samozřejmě vytvořit nějaký speciální a nastavit mu co nejmenší práva. Jabber v AD pouze čte a nic nemění, takže přístup stačí pouze pro čtení. Mohli bychom omezovat i více, z kterého místa může číst (aby případný útočník nemohl přečíst seznam adminů) apod.

Nejjednodušší je vytvořit účet a ten vložit do skupiny Domain Users, která má právo čtení pro celou AD. Alespoň tak jsem si to myslel. Pokud se tímto účtem připojím do AD, tak opravdu mohu prohlížet všechny záznamy. Problém nastane při použití filtru, protože pokud filtrujeme pomocí memberOf, tak dostaneme zpět pouze pár záznamů. Nevím proč se to tak děje. Jedním řešením je zařadit účet do skupiny Pre-Windows 2000 Compatible Access.

Pozn.: Pro testování vlastních filtrů a obecně přístupu k AD, je velice dobrý MS nástroj ldp, který se nachází v Support Tools.

Odkazy

zobrazeno: 16319krát | Komentáře [6]

Autor:

Související články:

IM Jabber

Články o Instant Messagingu, které se primárně věnují populárnímu systému Jabber.

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře

  1. [1] sefikail

    Ahoj. Je mi sice trapný se ptát, neboť je to tady perfektně vysvětlený, ale nemáš náhodou vzorovej screen, jak nastavit toto? Dík

    link: http://img120.imageshack.us/img120/4277/openfireiu3.jpg

    Středa, 09.04.2008 23:19 | odpovědět
  2. [2] Samuraj

    odpověď na [1]sefikail: No screen nemám, aktuálně používám Oracle databázi, ale zkoušel jsem to i s MySQL. Neměl by tam být problém. Nastaví se to podle toho, jak je to popsáno. Jen je potřeba nejprve vytvořit tu databázi (skript je pod Openfire esourcesdatabaseopenfire_mysql.sql) a použít správného uživatele. Kdyžtak napiš v čem přesně je problém.

    Čtvrtek, 10.04.2008 08:33 | odpovědět
  3. [3] Generator

    Ahoj. Kdyz jsem si precetl tento clanek, tak mi to pripadalo, jako zapis meho snazeni se o zprovozneni OpenFire v nasem ustavu. OpenFire chodi bezvadne, sprazene ho mam s AD, transport do ICQ funguje. Ale jedine co jsem nerozchodil je spojeni na verejne JABBER servery. Ani pres transport ani pres ServerToServer. Forum uz mam proctene tam i na zpet, dotazy jsem take vkladal, nastavoval podle rad a stejne nic. Vubec netusim, kde by mohla byt chyba, protoze v nasi sito spravuji podobne sluzby + firewall a co jsem chtel rozchodit, tka chodi. OF mi ale stale vzdoruje. Nepovedlo se ti nejak pripojit na verejen jabber servery ?

    Čtvrtek, 12.06.2008 10:21 | odpovědět
  4. [4] Samuraj

    odpověď na [3]Generator: No mě komunikace na ostatní Jabber servery funguje od začátku bez problémů (a již jsem dělal několikrát kompletní reinstalaci a vždy OK). Na FW jsem vypublikoval OpenFire server s portem 5269 (a povolil jej i jako odchozí).

    Pod nastavením Server to Server to mám povoleno a povoleno připojení pro kohokoliv.

    Jinak potřebuje (podle mne) Openfire jen přístup na internetové DNS a to je vše.

    Čtvrtek, 12.06.2008 10:39 | odpovědět
  5. [5] Mirek

    Zdravim mohl by mi prosim nekdo pomoct s jabber serverem openfire? Vse sem udelal podle navodu,ale pise mi to chybu na radku 19 a to: ] Line=19 The content of element type "dwr" must match "(init?,allow?,signatures?)". prosim poradte co udelat abych to rozchodil.Predem dekuji za vase odpovedi.S pozdravem novacek Mirek

    Sobota, 24.01.2009 01:29 | odpovědět
  6. [6] vojtam

    Ahoj, chtěl jsem se zeptat, jeslti máte někdo v openfire více než cca 146 kontaktů a používáte SSL ?

    V naší instalaci 3.8.1 (na centosu) se nám po přidání 147 uživatele nemohou někteří klienti připojit.

    Používáme roster (kontakty), kde všichni vidí všechny.

    Středa, 20.03.2013 09:21 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O


Ochrana proti SPAMu, zdejte následující čtyři znaky image code

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách