Brainfact.de All about IT

10Jan/151

Angetestet: Jabber/XMPP Server Dienste

In letzter Zeit habe ich mich recht viel mit der Installation und Konfiguration verschiedener Jabber Server auseinander gesetzt. Ausgangslage war mein Test vServer welcher unter OpenSuse13.1 läuft. Angesehen habe ich mir Jabberd2, eJabberd und prosody. Meine Erfahrungen und Eindrücke über die einzelnen Programme würde ich euch gerne schildern:

Jabberd2

Jabberd2 ist der "Nachfolger" des in die Jahre gekommenen Jabberd14, dieser war bereits auch schon in C und C++ geschrieben und kam sehr oft zum Einsatz. Bei Jabberd2 wurde der Quelltext komplett neugeschrieben.

Die Installation von Jabberd2 hat sich relativ einfach gestaltet nachdem alle Abhängigkeiten erfüllt waren lies sich die Software problemlos Kompilieren, schon bei diesem Vorgang muss festgelegt sein in welcher Art man seine Benutzer verwalten möchte. Dabei stehen mehrere Datenbank Formate zur Auswahl (MySQL; PSQL, SQLite,..), ich habe mich zum Test aus die im Tutorial empfohlene BerkeleyDB entschieden. Da ich das Paket selbst Kompiliert habe musste ich nach der Installation in den Konfigurationsdateien mehrere Pfade und Datei Berechtigungen anpassen damit der Dienst starten konnte. Die Config ist hier über mehrere Dateien verteilt, aber dennoch gut strukturiert und dokumentiert. Allgemein sind in der Dokumentation einige Szenarien und Konfigurationsbeispiele abgebildet die eine Einrichtung erleichtern. Nach der Ersteinrichtung kam der Dienst problemlos hoch und eine Registrierung war möglich. In der Gesamtsicht ist zusagen das Jaberd2 einen gewachsenen und modularen Eindruck verschafft. Es gibt diverse Module die sich Nachinstallieren lassen und das System ist in mehrere unter Module verschachtelt. Leider scheint die Entwicklung nicht all zu aktiv zu sein, ein Blick in die letzten commits auf Github verrät das es schleppend voran geht und nur vereinzelt Entwickler daran arbeiten.

 

eJabberd

Der in Erlang geschriebene Deamon ejabberd wird scheinbar oft in größeren und gewachsenen Strukturen eingesetzt. Es wird Ihm nachgesagt einer der stabilsten Jabber Server zu sein, jedoch strukturell etwas veraltet zu sein. Bei Installation und durchsicht der Konfiguration spiegelte sich die gewachsene Struktur ebenfalls wieder. Auch hier gibt es die möglichkeiten verschiedenste Datenbanken anzubinden und Module einzubinden. Ein Blick ins Commitlog auf github verrät auch das an der Software aktiv entwickelt wird und das regelmäßig Updates erscheinen.

Ich muss jedoch gestehen das ich das ganze nicht ans laufen bekommen habe da ich unter OpenSUSE ein paar Probleme mit Erlang hatte und nach mehreren Stunden bastellei aufgegeben hatte. Wer jedoch eine größere Infrastruktur für XMPP betreiben möchte sollte sich jedoch ejabberd genauer anschauen und es mit in Betracht ziehen 😉

 

Prosody

Prosody war von den 3 genannten Servern am leichtesten einzurichten. Nach kurzer Installation mussten nur SSL Zertifikat, admin Nutzer und Domain Name in der Konfiguration hinterlegt werden und es konnte los gechattet werden.Prosody unterstützt die in Verbidung mit XMPP genutzten Protokolle wie zum Beispiel die Remote Administration etc. . Auch wird ein breites Spektrum an Konfigurationsmöglichkeiten geboten. Auch die Entwicklung von Prosody wird aktiv weiter betrieben. Leider kann ich zur Performance hier wenig Aussage geben da ich kaum Erfahrungen mit LUA habe und das ganze bis jetzt nur mit einem User testen konnte. Aus meinem Bekanntenkreis habe ich jedoch Erfahrungsberichte gehört das der Server seit langer Zeit stabil und ohne Abbrüche läuft und auch wenig Systemressourcen benötigt werden. Sollte mir auf Dauer da was auffallen würde ich das in einem entsprechenden Artikel nachreichen.

 

Abschließend ist zu sagen das jemand der gerne einen XMPP/Jabber Service für eine kleine User Struktur mit geringem Administration Aufwand betreiben möchte, auf jeden Fall mit Prosody bestens bedient ist. Da dieser sehr viele Funktionen mit sich bringt und dennoch einfach zu warten ist. Bei größeren Strukturen sollte man dann eventuell abwägen eJabberd in Betracht zu ziehen oder dort auch Prosody zu nutzen.

Falls Ihr auch bereits Erfahrungen mit XMPP Servern gemacht habt würde ich mich über einen Kommentar darüber freuen 😉

27Okt/110

Tinyproxy–Klein aber fein

Wer einen vServer oder einen Root-Server hat, kann diesen über einen SSH-Tunnel als Proxy benutzen um nicht auf direktem Weg mit dem Internet verbunden sein. Dies kann mehrere Vorteile haben, wie zum Beispiel wenn man seiner aktuellen WLan-Verbindung nicht vertraut (zB in einem Cafe), oder wenn man bewusst Logging in einem Netzwerk umgehen möchte (Schule, Uni, …).

Ich habe eine Weile nach einem kleinen und einfachem Proxy gesucht, da mir OpenVPN einfach zu groß für meine Zwecke schien. Ich habe mich nach ein bisschen suchen dann für tinyproxy entschieden, und kann mich bis heute nicht über diese Entscheidung beklagen. Ich werde euch nun die Installation, sowie die Verwendung unter Windows erklären. Die nachfolgende Anleitung ist für Ubuntu geschrieben, sollte jedoch auch auf Debian Servern funktionieren.

Zuerst muss man sich per ssh (als root) mit seinem Server verbinden. Hierzu empfehle ich Putty. (Dies wird zum Verbinden zum Proxy ebenfalls gebraucht.) Sobald man verbunden ist, muss tinyproxy erstmal installiert werden:

apt-get install tinyproxy

Sollte die Installation fehlschlagen, ist ggf ein apt-get update nötig. Dann sollte es aber klappen! Nun muss der Proxy erstmal konfiguriert werden. Ich verwende zum Bearbeiten vim, es funktioniert aber auch mit jedem anderen Editor (vi, nano, gedit, …).

vim /etc/tinyproxy/tinyproxy.conf

Ganz oben kann man erstmal festlegen, unter welchem Benutzer der Proxy laufen soll. Die Standartwerte User nobody und Group nogroup können einfach so gelassen werden. Wichtig ist aber nun, den Listen-Port für den Proxy einzustellen:

Port 5050

Ich habe meinen Port auf 5050 gestellt, ihr könnt aber einen beliebigen Port wählen. Dabei muss man jedoch unbedingt darauf achten, keinen Standartport zu blockieren!

Jetzt sollte man die Listen Einstellung auf Localhost stellen, um Verbindungen von außerhalb erstmal zu unterbinden (tinyproxy bietet kein auth-modul):

Listen 127.0.0.1

Die Bind Einstellung kann man auskommentieren. Das Timeout für Connections sollte man zwischen 400 und 800 Sekunden setzen, ist aber wenn man den Proxy als einziger verwendet keine Wichtige Einstellung.

Timeout 800

Nun kann man Error-Files einstellen, das braucht man meiner Meinung nach aber nicht. Die Stat-File und die Logfile Settings kann man konfigurieren (an/aus stellen, …) – sie sollten aber schon sinnvoll eingestellt sein.

Nun kommt wieder eine wichtige Einstellung XTinyproxy. Diese unbedingt auskommentieren! Ansonsten leitet der Proxy eure eigentliche IP weiter.

Die Einstellungen MaxClients, MinSpareServers und MaxSpareServers, StartServers und MaxRequestsPerChild würde ich für einen einzigen Benutzer wie folgt einstellen:

MaxClients 20

MinSpareServers 5

MaxSpareServers 10

StartServers 2

MaxRequestsPerChild 0

Jetzt kommt ein wichtiger Teil – die Zugangskontrolle. Da wir die Verbindung zum Proxy per SSH-Tunnel aufbauen wollen, erlauben wir nur Lokale Verbindungen:

Allow 127.0.0.1

Nun kommen Einstellungen zum Filtern und Anonyme Verbindungen, diese kann man aber so lassen.

Zuletzt kann man noch Einstellen, welche Outgoing-Ports der Proxy unterstützen soll. Port 80 ist immer erlaubt (HTTP), Port 443 & 563 (HTTPS) sind bereits in der Config Datei eingetragen. Wer zB FTP noch hinzufügen mag, könnte noch Port 21 eintragen:

ConnectPort 443

ConnectPort 563

ConnectPort 21

Das war’s auch schon mit dem Konfigurieren. Datei speichern und tinyproxy neustarten:

/etc/init.d/tinyproxy stop

/etc/init.d/tinyproxy start

Jetzt läuft der Proxy auf dem Server. Nun brauchen wir nur noch unseren SSH Tunnel einrichten, und dann können wir schon über den Proxy surfen! Dazu starten wir Putty (siehe oben) erneut. Unter Host-Name wieder den Server, unter Port 22 (SSH). Nun klicken wir links unter “Connection” auf “SSH” und dann auf “Tunnels”. Hier tragen wir unter “Add new forwarded port:” folgendes Einstellungen ein:

Source-Port: 5050

Destination: localhost:5050

[X] Local

[X] Auto

Dann auf “Add” klicken. Jetzt wieder Links zurück auf “Session” drücken, dann auf “Open” klicken. Dann wie gewohnt die SSH-Logindaten eingeben. Jetzt steht auch der SSH-Tunnel! Nun muss dieser noch bei Firefox unter Proxy-Einstellungen eingetragen werden. Dazu klicken wir auf “Einstellungen” > “Erweitert” > “Netzwerk” > “Festlegen wie sich Firefox mit dem Internet verbindet”. Dann “Manuelle Proxy-Konfiguration” wählen, einen Hacken bei “Für alle Protokolle diesen Proxy Server verwenden” und bei HTTP-Proxy localhost und Port 5050 einstellen. Mit OK bestätigen. Das wars!

Unter Wie Ist Meine Ip.de kann man jetzt nachprüfen, ob man wirklich die IP von seinem Server hat – und per Wireshark kann man sich selbst Packet-Sniffen und nur noch Verschlüsselte SSH-Verbindungen sehen, keine HTTP Requests mehr! Smiley