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>&lt;!-- Local network configuration --&gt;
+  &lt;local&gt;
+  &lt;!-- 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. --&gt;
+   &lt;id&gt;jabber.domena.org&lt;/id&gt;</screen>
+       <para>
+	       W pliku <filename>/etc/jabber/sm.xml</filename> w pierwszych
+	       linijkach także dodajemy naszą domenę:       
+       </para>   
+       <screen>&lt;sm&gt;
+  &lt;!-- 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) --&gt;
+   &lt;id&gt;jabber.domena.org&lt;/id&gt;</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>  &lt;!-- Storage database configuration --&gt;
+  &lt;storage&gt;
+  &lt;!-- By default, we use the MySQL driver for all storage --&gt;
+  &lt;driver&gt;pgsql&lt;/driver&gt;</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>    &lt;!-- PostgreSQL driver configuration --&gt;
+    &lt;pgsql&gt;
+      &lt;!-- Database server host and port --&gt;
+      &lt;host&gt;localhost&lt;/host&gt;
+      &lt;port&gt;5432&lt;/port&gt;
+     
+      &lt;!-- Database name --&gt;
+      &lt;dbname&gt;jabberd2&lt;/dbname&gt;
+
+      &lt;!-- Database username and password --&gt;
+      &lt;user&gt;jabberd2&lt;/user&gt;
+      &lt;pass&gt;tu_wpisujemy_hasło_do_bazy&lt;/pass&gt;</screen>
+      <para>
+	      Podobne zmiany wykonujemy w pliku
+	      <filename>/etc/jabber/c2s.xml</filename>. Umożliwiają one
+	      autentykacje użytkowników jabbera:
+      </para>
+      <screen>  &lt;!-- Authentication/registration database configuration --&gt;
+  &lt;authreg&gt;
+   &lt;!-- Backend module to use --&gt;
+   &lt;module&gt;pgsql&lt;/module&gt;</screen>
+	<para>
+		I dalej w tym samym pliku (sekcja "pgsql")
+	</para>
+	<screen>    &lt;!-- PostgreSQL module configuration --&gt;
+    &lt;pgsql&gt;
+      &lt;!-- Database server host and port --&gt;
+      &lt;host&gt;localhost&lt;/host&gt;
+      &lt;port&gt;5432&lt;/port&gt;
+
+      &lt;!-- Database name --&gt;
+      &lt;dbname&gt;jabberd2&lt;/dbname&gt;
+
+      &lt;!-- Database username and password --&gt;
+      &lt;user&gt;jabberd2&lt;/user&gt;
+      &lt;pass&gt;tu_wpisujemy_hasło_do_bazy&lt;/pass&gt;
+      &lt;/pgsql&gt;</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>    &lt;!-- 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 --&gt;
+  &lt;ssl-port&gt;5223&lt;/ssl-port&gt;
+		 &lt;/local&gt;</screen>
+		 <para>
+			Zdejmujemy komentarz także z tagu "require-starttls"
+			(kilka linijek wyżej):
+		</para>
+		<screen>    &lt;!-- Require STARTTLS. If this is enabled, clients must do STARTTLS
+    before they can authenticate. Until the stream is encrypted,
+    all packets will be dropped. --&gt;
+  &lt;require-starttls/&gt;</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>&lt;!--
+&lt;pemfile>/etc/jabber/server.pem&lt;/pemfile&gt;
+--&gt;</screen>
+		<para>
+			Kasujemy komentarze (czyli &lt;!-- i --&gt;) i wpisujemy
+			odpowiednią scieżkę do naszego certyfikatu:
+		</para>
+		<screen>&lt;pamfile>/var/lib/openssl/certs/jabber.pem/pemfile&gt;</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