Przejdź do głównej zawartości

Prosody - serwer Jabber / XMPP dla Debiana



Repozytoria Jessie Debiana mają akceptowalną wersję 0.9.7. Przygotowaliśmy go za pomocą dodatku do pracy z mysql:

  # aptitude install pro fi 

Następnie musisz zdecydować, której bazy danych użyć: mysql lub sqlite.



SQLite jest bardziej kompaktowy i mało wymagający dla zasobów. Jest to plik na serwerze, na którym przechowywane są tabele z informacjami. Łatwo jest skopiować, nic nie jest potrzebne, z wyjątkiem biblioteki sqlite3. Taka baza danych będzie najlepszym rozwiązaniem, jeśli ustawisz sobie jabber (i dodatkowo kilkanaście użytkowników :).

  # aptitude install lua-dbi-sqlite3 

MySQL jest lepiej dostosowany, gdy planujesz hostować wiele kont użytkowników na serwerze i stale dodawać, usuwać, edytować itd. W przypadku takiej bazy danych potrzebny jest również odpowiedni składnik.

  # aptitude install lua-dbi-mysql 

Treść artykułu:

Przygotowanie certyfikatu SSL

Korzystanie z certyfikatów samopodpisanych wcale nie jest koszerne. :) Nie ma w nich zaufania. Dlatego musisz uzyskać bezpłatny certyfikat z witryny StartSSL.com . Jest na to dobra instrukcja .



Załóżmy, że otrzymałeś certyfikat. Teraz masz plik certyfikatu ssl.crt i klucz ssl.key. Klucz musi najpierw zostać odszyfrowany. Oczywiście możesz używać i nie odszyfrowywać, ale musisz podać hasło w konfiguracji Prosody, ustawić odpowiednie prawa dostępu i tak dalej ...

  # openssl rsa -in ssl.key -out ssl.key 

Podczas odszyfrowywania musisz podać hasło klucza.

Oprócz certyfikatu i klucza potrzebujesz certyfikatu "Klasa 1 pośredniego serwera CA". Pobierz:


  # wget https://startssl.com/certs/sca.server1.crt 

Łączymy się w jeden plik (przykład.com jest zapisywany jako przykład, zamień go na nazwę Twojej domeny ):

  # cat ssl.crt ssl.key sca.server1.crt> /etc/prosody/certs/example.com.pem 

Certyfikat zostanie zapisany w folderze / etc / proxy / certs /.

Ponadto musisz utworzyć klucz dla protokołu Diffiego-Hellmana . Będzie również używany w ustawieniach hosta wirtualnego, umożliwiając korzystanie z funkcji Forward Secrecy.

  openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048 

Ustaw uprawnienia zezwalające tylko na odczyt certyfikatów w imieniu użytkownika prozy.

  # chown prozody: prozodia /etc/prosody/certs/*.pem
 # chmod 0400 /etc/prosody/certs/*.pem

To kończy proces przygotowania certyfikatów.

Tworzenie bazy danych MySQL

Możesz utworzyć bazę danych i użytkownika za pośrednictwem konsoli lub za pośrednictwem panelu sterowania phpmyadmin lub podobnego.

Konfiguracja Prosody

Proces instalacji jest prosty. Wszystko jest dobrze udokumentowane (aczkolwiek w języku angielskim), a struktura plików konfiguracyjnych jest prosta.

Możesz łatwo tworzyć wirtualne hosty, przypisywać im specjalne parametry i tak dalej. Prawie analogia do Apache i nginx. :)

Główne parametry pliku konfiguracyjnego /etc/prosody/prosody.cfg.lua, którego wartości będziemy musieli edytować.

  allow_registration = true; 

Umożliwia rejestrację użytkowników za pomocą programów klienckich. Pidgin, na przykład. Wartością domyślną jest fałsz . Nie włączaj, jeśli nie musisz zezwalać na rejestrację.

  authentication = "internal_hashed" 

Włącza hashowanie hasłem użytkownika. Wartością domyślną jest internal_plain, która nie jest całkowicie bezpieczna - przechowuj hasła w bazie danych w czystej formie.

Określ typ magazynu - baza danych sql:

  storage = "sql"

Jeśli wybrałeś sqlite jako pamięć, to odkomentuj linię:

  sql = {driver = "SQLite3", database = "proxy.sqlite"} 

Jeśli mysql:

  sql = {driver = "MySQL", database = "prozodia", nazwa użytkownika = "prozodia", hasło = "secret", host = "localhost"}

Nie zapomnij podać poniższego parametru sql_manage_tables = true , aby Prosody automatycznie wypełniał bazę danych tabelami.

Wartości prozodii w parametrach bazy danych i nazwy użytkownika należy zastąpić odpowiednio nazwą bazy danych i nazwą użytkownika. Musisz także podać hasło do opcji hasła , zastępując tajną frazę. Host pozostanie niezmieniony, jeśli serwer MySQL jest zainstalowany na tym samym komputerze co Prosody.

Wirtualni gospodarze w Prosody

Następnym elementem konfiguracji Prosody jest utworzenie konfiguracji dla hostów wirtualnych. Załóżmy, że mamy jedną domenę. Znajdujemy następujący wiersz i zastępujemy example.com nazwą domeny.

  VirtualHost "example.com"

Skomentuj linię:

  enabled = false

Następują ustawienia ssl dla konkretnego hosta wirtualnego. Musisz określić ścieżkę do certyfikatu i inne dodatkowe opcje.

Ponieważ wcześniej eksportowaliśmy certyfikat i klucz do jednego pliku, ścieżkę należy podać tylko do jednego pliku.

Pierwsze trzy linie to ścieżki do kluczy / certyfikatów. odpowiednio.

  ssl = {
   key = "/etc/prosody/certs/example.com.pem";
   certificate = "/etc/prosody/certs/example.com.pem";
   dhparam = "/etc/prosody/certs/dh-2048.pem";
   options = {"no_sslv3", "no_sslv2", "no_ticket", "no_compression", "single_dh_use", "single_ecdh_use"};
   szyfry = "ECDH: DH:! ADH:! AECDH:! SEED:! DES :! 3DES:! RC4 :! NULL";
 } 

Czwarta linia odpowiada za opcje ssl i wyłącza wersje 2 i 3 ssl. Piąta wskazuje, które szyfry mogą być używane.

Dwa ostatnie parametry hosta wirtualnego, który wymaga szyfrowania podczas łączenia klientów i serwerów. Muszą być określone po pozycji ssl = {...}.

  c2s_require_encryption = true
 s2s_require_encryption = true

To kończy konfigurację Prosody.

Twórz i usuwaj użytkowników

Jeśli nie masz możliwości samodzielnej rejestracji użytkowników za pomocą klienta, możesz dodać nowych użytkowników za pomocą konsoli za pomocą prostego polecenia: prosodyctl adduser nazwa@example.com . Podczas dodawania musisz dwukrotnie podać hasło.

Prawa administracyjne mogą być również przyznawane każdemu użytkownikowi. Podaj login wymaganego użytkownika w parametrze admins = {} pliku konfiguracyjnego. Na przykład:

  admins = {"user1@example.com", "user2@example.net"}

Usunięcie konta użytkownika odbywa się za pomocą komendy: prosodyctl deluser nazwa@example.com , gdzie nazwa@example.com musi zostać zastąpiona identyfikatorem Jabber istniejącego użytkownika.

Komunikaty o błędach

Sprawdź następujący komunikat o błędzie w protokole błędów Prosody (/var/log/prosody/prosody.err):

  Błąd certmanager SSL / TLS: Nie udało się wczytać "/etc/prosody/certs/example.com.pem": 
 Powód: zła linia końcowa (na przykład.com)

W takim przypadku musisz sprawdzić plik certyfikatu pod kątem obecności takich linii:

  ----- KONIEC CERTYFIKATU ---------- BEGIN PRYWATNY KLUCZ RSA -----

To jest złe i musisz je rozdzielić, aby wyglądały tak:

  ----- CERTYFIKAT KONIECZNY -----
 ----- BEGIN KLUCZ PRYWATNY RSA -----

Rekordy DNS dla Jabbera

Dla każdej domeny musisz zarejestrować odpowiednie rekordy w DNS (chociaż nie jest to konieczne, jeśli nie musisz komunikować się z użytkownikami innej domeny).

  _xmpp-client._tcp IN SRV 5 0 5222 xmpp.example.com.
 _xmpp-server._tcp IN SRV 5 0 5269 xmpp.example.com.

Gdzie 5 jest priorytetem, 0 to waga, a 5222 i 5269 to porty odpowiednio dla typów komunikacji klient-serwer i serwer-serwer.

Poniżej znajduje się nazwa domeny wskazująca serwer z zainstalowanym Jabber. Może to być ten sam serwer, na którym działa strona lub jakikolwiek inny.

Zasady Iptables

Jeśli połączenia przychodzące są domyślnie blokowane na twoim serwerze, powinieneś utworzyć reguły iptables, które zezwalają na połączenia z serwerem jabber przez tcp dla potrzebnych portów:

  # iptables -A INPUT -p tcp --dport 5222 -j AKCEPTUJ
 # iptables -A INPUT -p tcp --dport 5269 -j AKCEPTUJ 

Włącz kompresję w Prosody

Czasami może być konieczne włączenie kompresji, aby zapisać ruch klienta lub serwera. Aby to zrobić, zainstaluj pakiet lua-zlib:

  # aptitude install lua-zlib 

Znajdź grupę parametrów modules_enabled na samym początku pliku konfiguracyjnego i odkomentuj linię:

  "kompresja";  - Kompresja strumienia (Debian: wymaga modułu lua-zlib do pracy) 

I ustaw poziom kompresji od 1 do 9 przez parametr, który musisz zarejestrować po grupie modules_enabled.

  poziom kompresji = 5 

Testowanie

Poprawność ustawień szyfrowania można sprawdzić na stronie https://xmpp.net . Istnieje test dla połączeń między klientem a serwerem oraz połączeń między serwerami.



Jak oceniasz artykuł?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 1 ocena, średnia: 5,00 z 5)
Ładowanie ...

” 2 komentarze " Prosody - serwer Jabber / XMPP dla Debiana "

  1. Pozdrowienia.
    Zrobiłem wszystko zgodnie z twoimi instrukcjami - po prostu nie mogę rozwiązać problemu z zaufanym certyfikatem. Zacząłeś startssl. Istnieje archiwum z innymi, w tym apache, ngnix, otherserver. Użyłem certyfikatu z innego serwera (wypróbowałem i apache) - w wyniku tego autoryzacja z innymi serwerami nie ma miejsca, błąd na tym etapie w dziennikach jest następujący:
    info Zaakceptowanie tożsamości SASL EXTERNAL z ya.ru
    informacje przychodzące połączenie s2s ya.ru-> myserver.ru kompletny
    strumień informacyjny przychodzący s2s ya.ru-> myserver.ru zamknięty: atrybut nowego strumienia "z" nie pasuje do oryginału
    Czytałem gdzieś, że decyduje o tym moduł s2s_auth_compat. Włączone, w wyniku autoryzacji:
    warn Nieprawidłowy nagłówek strumienia, certyfikat nie będzie zaufany

    Jak problem z samym certyfikatem. Napisane w obsłudze startssl, powiedzieli, że certyfikaty dla serwerów XMPP nie obsługują. Chociaż tutaj radzisz, a w innych miejscach wspominają, że prozodia z ich certyfikatami działa dobrze ... proszę powiedz mi, jak łączyłeś się i jaki konkretny certyfikat od startssl jest podłączony?

    1. To zabawne, kiedyś je wspierały, ale teraz nie.

      Biorę certyfikat z folderu nginx. Tam natychmiast "skleił" go pośrednim certyfikatem. Wszystko się zaczyna, chociaż z ya.ru nie testowane.

      Certyfikat musi być zgodny z domeną www i bez.

      Ewentualnie skomentuj szyfry i opcje wirtualnego hosta, aby użyć wartości domyślnych. Może xmpp Yandex działa z mniej silnymi szyframi i tylko pod sslv3.

      Możesz również dodać wyjątek:

      s2s_insecure_domains = { "ya.ru" }

      http://prosody.im/doc/s2s#security

Dodaj komentarz

Twój e-mail nie zostanie opublikowany.