PLD-doc/book: pl_book__master.docb pl_book__uslugi/pl_uslugi.chp
pl_book__uslugi/pl_uslugi__jabber2....
ciesiel
cvs w pld-linux.org
Nie, 9 Sty 2005, 19:33:19 CET
Author: ciesiel
Date: Sun Jan 9 18:33:14 2005
New Revision: 5448
Added:
PLD-doc/book/pl_book__uslugi/pl_uslugi__jabber2.sec
Modified:
PLD-doc/book/pl_book__master.docb
PLD-doc/book/pl_book__uslugi/pl_uslugi.chp
Log:
- dodanie opisu uslugi jabberd2
Modified: PLD-doc/book/pl_book__master.docb
==============================================================================
--- PLD-doc/book/pl_book__master.docb (original)
+++ PLD-doc/book/pl_book__master.docb Sun Jan 9 18:33:14 2005
@@ -64,6 +64,7 @@
<!ENTITY uslugi_samba SYSTEM "pl_book__uslugi/pl_uslugi__samba.sec">
<!ENTITY uslugi_snort SYSTEM "pl_book__uslugi/pl_uslugi__snort.sec">
<!ENTITY uslugi_cron SYSTEM "pl_book__uslugi/pl_uslugi__cron.sec">
+<!ENTITY uslugi_jabber2 SYSTEM "pl_book__uslugi/pl_uslugi__jabber2.sec">
<!ENTITY x SYSTEM "pl_book__x/pl_x.chp">
<!ENTITY x_xserver SYSTEM "pl_book__x/pl_x__xserver.sec">
<!ENTITY x_blackbox SYSTEM "pl_book__x/pl_x__blackbox.sec">
Modified: PLD-doc/book/pl_book__uslugi/pl_uslugi.chp
==============================================================================
--- PLD-doc/book/pl_book__uslugi/pl_uslugi.chp (original)
+++ PLD-doc/book/pl_book__uslugi/pl_uslugi.chp Sun Jan 9 18:33:14 2005
@@ -15,4 +15,5 @@
&uslugi_cups;
&uslugi_samba;
&uslugi_snort;
+ &uslugi_jabber2;
</chapter>
Added: PLD-doc/book/pl_book__uslugi/pl_uslugi__jabber2.sec
==============================================================================
--- (empty file)
+++ PLD-doc/book/pl_book__uslugi/pl_uslugi__jabber2.sec Sun Jan 9 18:33:14 2005
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="iso-8859-2"?>
+<section id="uslugi_jabber2">
+<title>Jabber 2 - Serwer typu Instant Messaging</title>
+ <section id="uslugi_jabber2_wstep">
+ <title>Wstęp</title>
+ <para>
+ Protokół jabber służy głównie do przesyłania wiadomości typu
+ Instant Messaging (czyli działa podobnie jak inne znane
+ komunikatory np. icq, tlen, gadu-gadu itp.). Zaletą jabbera
+ jest to, że jest otwarty, zapewnia darmową i pełną infrastrukturę
+ (serwery, a także klienty) dla osób prywatnych i użytkowników
+ komercyjnych. Charakteryzuje się także dużym bezpieczeństwem -
+ rozmowy, a także komunikacja między serwerami może być
+ szyfrowana.
+ </para>
+ <para>
+ W PLD jest kilka serwerów obsługujących komunikację
+ protokołu XMPP, który jest fundamentem Jabbera -
+ zatwierdzonym przez IETF w formie RFC (RFC od 3920 do 3923).
+ Używany przez wielu ISP <productname>jabberd</productname>
+ w wersji 1.4, zdobywający popularność <productname>ejaberd</productname>
+ czy opisywany poniżej <productname>jabberd</productname> w
+ wersji 2.0.
+ </para>
+ <para>
+ Opisana zostanie podstawowa konfiguracja, umożliwiająca
+ połączenia szyfrowane, a do składowania danych przez
+ <productname>jabberd2</productname> wykorzystamy
+ silnik SQL <productname>Postgresql</productname>.
+ </para>
+ </section>
+ <section id="uslugi_jabber2_instalacja">
+ <title>Instalacja</title>
+ <para>
+ Pakiet <productname>jabberd2</productname> instalujemy
+ za pomocą poldka:
+ </para>
+ <screen>poldek> install jabber-common jabberd</screen>
+ <para>
+ Oczywiście, jeżeli do tej pory nie mamy zainstalowanego
+ <productname>Postgresql</productname> należy
+ zainstalować go także. Należy pamiętać, że
+ <productname>jabberd2</productname> może współpracować
+ także z <productname>MySQL</productname>,
+ <productname>sqlite3</productname>, a także znacznie
+ prostrzą wersją bazy <productname>db</productname>.
+ </para>
+ </section>
+ <section id="uslugi_jabber2_dns">
+ <title>Konfiguracja DNS i rekordów SRV</title>
+ <para>
+ Zanim zaczniemy, musimy stworzyć domenę, która
+ jednoznacznie będzie wskazywała na maszynę Jabbera.
+ Dodamy także rekordy SRV, które służą do zapytań
+ domenowych przez demony Jabbera.
+ </para>
+ <para>
+ Przykład konfiguracji zostanie przedstawiony dla
+ serwera nazw <productname>Bind</productname>. Zmian
+ dokonujemy w odpowiednim pliku stref w katalogu
+ <filename>/var/lib/named/M</filename>.
+ </para>
+ <screen>; Jabber
+jabber IN A 10.1.1.1 ;Tu wpisujemy IP naszej domeny
+_jabber._tcp.jabber IN SRV 20 0 5269 domena.org.
+_xmpp-server._tcp.jabber IN SRV 20 0 5269 domena.org.
+_xmpp-client._tcp.jabber IN SRV 20 0 5222 domena.org.</screen>
+ <para>
+ Oczywiście nie możemy zapomnieć o zmianie rekordu
+ serial w strefie domeny i restarcie demona
+ <filename>named</filename>
+ </para>
+ </section>
+ <section id="uslugi_jabber2_porty">
+ <title>Konfiguracja portów (jeżeli korzystamy z firewall-a) </title>
+ <para>
+ W przypadku wykorzystwania zapór ogniowych w systemie
+ powinniśmy otworzyć porty tcp dla następujących
+ portów:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 5222 - Dla komunikacji klienckiej
+ (połączenie nieszyfrowane)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 5223 - Dla komunikacji klienckiej
+ (połączenie szyfrowane SSL)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 5269 - Dla komunikacji między
+ serwerami Jabbera
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 5347 - Dla komunikacji między
+ serwerami Jabbera, wykorzystany przez dodatkowe transporty
+ (np. transport GG)
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Pamiętać należy, że powyższe porty są ustalone umownie
+ i w plikach konfiguracyjnych demona Jabber, a także
+ rekordach SRV możemy je
+ zmienić (np. dla portu klienckiego ustalić port 80) -
+ jednak zaleca się pozostawić proponowane wyżej porty.
+ </para>
+ <para>
+ Oczywiście, jeżeli nie chcemy aby nasz serwer był
+ widoczny na zewnątrz naszej sieci (np. jest
+ przeznaczony tylko dla wewnętrzej sieci intranetowej)
+ nie otwieramy portu przeznaczonego do komunikacji
+ między serwerami (u nas to porty 5269 i 5347).
+ </para>
+ </section>
+ <section id="uslugi_jabber2_podst_konf">
+ <title>Podstawowa konfiguracja Jabberd2</title>
+ <para>
+ Możemy wreszcie skonfigurować wstępnie usługę
+ <productname>jabberd2</productname>. Wszytskie pliki
+ konfiguracyjne znajdują się w katalogu
+ <filename>/etc/jabber</filename>.
+ </para>
+ <para>
+ W pliku <filename>/etc/jabber/c2s.xml</filename> w
+ okolicy tagu "local" dodajemy naszą domenę:
+ </para>
+ <screen><!-- Local network configuration -->
+ <local>
+ <!-- Who we identify ourselves as. This should correspond
+ to the ID (host) that the session manager thinks it is. You can
+ specify more than one to support virtual hosts, as long as you
+ have additional session manager instances on the network to
+ handle those hosts. The realm attribute specifies the auth/reg
+ or SASL authentication realm for the host. If the attribute is
+ not specified, the realm will be selected by the SASL
+ mechanism, or will be the same as the ID itself. Be aware that
+ users are assigned to a realm, not a host, so two hosts in the
+ same realm will have the same users.
+ If no realm is specified, it will be set to be the same as the
+ ID. -->
+ <id>jabber.domena.org</id></screen>
+ <para>
+ W pliku <filename>/etc/jabber/sm.xml</filename> w pierwszych
+ linijkach także dodajemy naszą domenę:
+ </para>
+ <screen><sm>
+ <!-- Our ID on the network. Users will have this as the domain part of
+ their JID. If you want your server to be accessible from other
+ Jabber servers, this ID must be resolvable by DNS.s
+ (default: localhost) -->
+ <id>jabber.domena.org</id></screen>
+ <para>
+ Jeżeli chcemy, aby nasz serwer komunikował się z innymi
+ serwerami w pliku <filename>/etc/jabber/jabberd.cfg</filename>
+ kasujemy "#" w linijce z "s2s":
+ </para>
+ <screen># After sm and c2s are configured to use a fully qualified domain name
+# and proper SRV records are set in DNS uncoment this to enable
+# communication
+# with other Jabber servers
+s2s /etc/jabber/s2s.xml</screen>
+ <para>
+ Podstawowa konfiguracja jest już zrobiona. Domyślne ustawienie
+ tzw. "storage" czyli sposobu trzymania przez jabbera
+ informacji o użytkownikach jest zrobione w PLD w
+ <productname>db</productname>. Przy małej ilości użytkowników
+ jest to wystarczający sposób. Jednak przy większej ich
+ ilości, bardziej praktyczne jest trzymanie tych danych w
+ bazie SQL.
+ </para>
+ </section>
+ <section id="uslugi_jabber2_psql">
+ <title>Konfiguracja dla SQL (Postgresql)</title>
+ <para>
+ Przy poprawnie działającym postgresie, z uprawnionego
+ dla niego użytkownika tworzymy bazę
+ <emphasis>jabberd2</emphasis>
+ </para>
+ <screen>$ createdb -U postgres jabberd2</screen>
+ <para>
+ Następnie przypisujemy do tej bazy użytkownika
+ <emphasis>jabberd2</emphasis> i ustalamy dla niego
+ hasło i opcje dostępu do bazy:
+ </para>
+ <screen>$ createuser -P -U postgres jabberd2
+Enter password for user "jabberd2":
+Enter it again:
+Shall the new user be allowed to create databases? (y/n) n
+Shall the new user be allowed to create more new users? (y/n) n
+CREATE USER</screen>
+ <para>
+ Teraz musimy wypełnić nowoutworzoną bazę odpowiednimi tabelami
+ i polami. Z katalogu
+ <filename>/usr/share/doc/jabberd-2*</filename> należy
+ rozpakować (najlepiej do katalogu użytkownika, który może
+ działać na bazie postgresa) plik
+ <filename>db-setup.pgsql.gz</filename>. Po rozpakowaniu
+ przechodzimy do katalogu, gdzie został rozpakowany plik
+ <filename>db-setup.pgsql</filename> i wykonujemy:
+ </para>
+ <screen>$ psql -U jabberd2 jabberd2
+jabberd2=>\i db-setup.pgsql</screen>
+ <para>
+ Baza postgresa jest gotowa. Połączenie z bazą będzie
+ odbywać się po localhost, tak więc musimy zadbać o to,
+ żeby postgres umożliwiał takie połączenie
+ </para>
+ <para>
+ Została nam jeszcze konfiguracja w plikach jabbera.
+ </para>
+ <para>
+ W pliku <filename>/etc/jabber/sm.xml</filename>
+ szukamy sekcji "storage" i zmieniamy na:
+ </para>
+ <screen> <!-- Storage database configuration -->
+ <storage>
+ <!-- By default, we use the MySQL driver for all storage -->
+ <driver>pgsql</driver></screen>
+ <para>
+ Dla porządku dodamy, że zamiast
+ <emphasis>pgsql</emphasis>, możemy także wykorzytać: mysql,
+ ldap, sqlite (w zależności od mechanizmu jaki
+ wybraliśmy).
+ </para>
+ <para>
+ W tym samym pliku szukamy następnie sekcji "pgsql" aby
+ w odpowiednim miejscu wpisać hasło dostępu do bazy
+ jabberd2. Możemy tam także zmienić sposób dostępu:
+ </para>
+ <screen> <!-- PostgreSQL driver configuration -->
+ <pgsql>
+ <!-- Database server host and port -->
+ <host>localhost</host>
+ <port>5432</port>
+
+ <!-- Database name -->
+ <dbname>jabberd2</dbname>
+
+ <!-- Database username and password -->
+ <user>jabberd2</user>
+ <pass>tu_wpisujemy_hasło_do_bazy</pass></screen>
+ <para>
+ Podobne zmiany wykonujemy w pliku
+ <filename>/etc/jabber/c2s.xml</filename>. Umożliwiają one
+ autentykacje użytkowników jabbera:
+ </para>
+ <screen> <!-- Authentication/registration database configuration -->
+ <authreg>
+ <!-- Backend module to use -->
+ <module>pgsql</module></screen>
+ <para>
+ I dalej w tym samym pliku (sekcja "pgsql")
+ </para>
+ <screen> <!-- PostgreSQL module configuration -->
+ <pgsql>
+ <!-- Database server host and port -->
+ <host>localhost</host>
+ <port>5432</port>
+
+ <!-- Database name -->
+ <dbname>jabberd2</dbname>
+
+ <!-- Database username and password -->
+ <user>jabberd2</user>
+ <pass>tu_wpisujemy_hasło_do_bazy</pass>
+ </pgsql></screen>
+ <para>
+ Po zrestartowaniu demona jabberd możemy się już cieszyć bardziej
+ zaawansowaną funkcjonalnością naszego komunikatora.
+ </para>
+ </section>
+ <section id="uslugi_jabber2_ssl">
+ <title>Szyfrowanie</title>
+ <para>
+ Przed konfiguracją samego jabbera, musimy sprawdzić
+ czy mamy pakiet <productname>openssl</productname> i
+ wygenerować klucz:
+ </para>
+ <screen># openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem</screen>
+ <para>
+ sam parametr <emphasis>-days 3650</emphasis> możemy
+ ustawić na krótszy lub dłuższy (oznacza on długość
+ ważności certyfikatu - w naszym przypadku 10 lat).
+ </para>
+ <para>
+ Po wykonaniu powyższego polecenia i wpisaniu
+ odpowiedzi na zadane pytania (zwróćmy tylko uwagę, że
+ w polu <emphasis>Common Name</emphasis> wpiszmy naszą
+ domenę, obsługiwaną przez serwer jabbera) usuniemy
+ hasło z klucza prywatnego:
+ </para>
+ <screen># openssl rsa -in privkey.pem -out privkey.pem</screen>
+ <para>
+ Następnie połączymy oba klucze w jeden plik i
+ skasujemy klucz prywatny:
+ </para>
+ <screen># cat privkey.pem >> server.pem
+# rm privkey.pem</screen>
+ <para>
+ Zmieniamy nazwę naszego certyfikatu (dla porządku),
+ prznosimy w odpowiednie miejsce i nadajemy odpowiednie
+ prawa:
+ </para>
+ <screen># mv server.pem /var/lib/openssl/certs/jabber.pem
+# chown root:jabber /var/lib/openssl/certs/jabber.pem
+# chmod 640 /var/lib/openssl/certs/jabber.pem</screen>
+ <para>
+ Została nam jeszcze konfiguracja Jabbera. W pliku
+ <filename>/etc/jabber/c2s.xml</filename> znajdujemy
+ tag "ssl-port" i odkomentujemy go:
+ </para>
+ <screen> <!-- Older versions of jabberd support encrypted client connections
+ via an additional listening socket on port 5223. If you want
+ this (required to allow pre-STARTTLS clients to do SSL),
+ uncomment this -->
+ <ssl-port>5223</ssl-port>
+ </local></screen>
+ <para>
+ Zdejmujemy komentarz także z tagu "require-starttls"
+ (kilka linijek wyżej):
+ </para>
+ <screen> <!-- Require STARTTLS. If this is enabled, clients must do STARTTLS
+ before they can authenticate. Until the stream is encrypted,
+ all packets will be dropped. -->
+ <require-starttls/></screen>
+ <para>
+ Teraz w każdym z pięciu plików konfiguracyjnych
+ znajdujących się w <filename>/etc/jabber</filename>
+ tj. <filename>router.xml, sm.xml, resolver.xml, s2s.xml, c2s.xml</filename>
+ znajdujemy zakomentowany ciąg wskazujący na nasz
+ certyfikat:
+ </para>
+ <screen><!--
+<pemfile>/etc/jabber/server.pem</pemfile>
+--></screen>
+ <para>
+ Kasujemy komentarze (czyli <!-- i -->) i wpisujemy
+ odpowiednią scieżkę do naszego certyfikatu:
+ </para>
+ <screen><pamfile>/var/lib/openssl/certs/jabber.pem/pemfile></screen>
+ <para>
+ Kolejny restart demona jabber i możemy cieszyć się
+ połączeniami szyfrowanymi.
+ </para>
+ </section>
+ <section id="uslugi_jabber2_zakonczenie">
+ <title>Zakończenie</title>
+ <para>
+ Opisane powyżej sposoby konfiguracji nie wyczerpują
+ oczywiście wszystkich aspektów. Zachęcamy do
+ odwiedzenia strony z <ulink
+ url="http://jabberd.jabberstudio.org/2/docs/">oryginalną
+ dokumentacją jabbera</ulink>. Mimo,
+ że niektórym może sprawić problem język angielski, to
+ podane przykłady w jasny sposób omawiają także
+ zaawansowane zagadnienia.
+ </para>
+ </section>
+</section>
Więcej informacji o liście dyskusyjnej pld-doc