Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
161 lines (114 sloc) 6.08 KB
: umurmur auf Uberspace
Unkomplizierten Team-Voice-Chat selbst hosten.
/This guide is security critical. See [5] // Diese Anleitung ist sicherheitskritisch. Siehe [5]/
::: updates
:::: 2017.09.20
Updated dependency versions: cmake, mbedTLS.
Updated umumur version.
:::: 2015.08.15
Die Installation von cmake und libconfig per toast wurde korrigiert.
:::: 2015.08.12
umurmur hat sich natürlich weiterentwickelt und war so wie hier beschrieben nicht zu installieren. Ich habe die Anleitung neu verfasst, sodass sie für den Stand ef99834 auf git und für die getaggte Version 0.2.16a funktioniert. Im Zuge dessen habe ich sie auch so angepasst, dass umurmur auch polarssl statt OpenSSL nutzt.
:::: some days after heartbleed
Wie mich Maximilian Berger freundlicherweise informierte, gibt murmur beim Start die verwendete openssl-Version aus. Nach dieser Info in der Log zu suchen war mir in der Eile wohl nicht in den Sinn gekommen. Die verwendete Version der neuesten statischen murmur-Version vor heartbleed-Bekanntmachung war 1.0.0l. Diese ist nicht betroffen. Sehr gute Nachricht also. Danke für den Hinweis.
- - -
Nach heartbleed habe ich mich schnell aufgemacht alles betroffene, was ich so betreibe, wieder dicht zu machen.
Dazu gehörten auch paar mumble-Server. Ein neues CA-signiertes Zertifikat habe ich mir sowieso schon geholt, und für andere Instanzen mit selbst-signiertem Zertifikat hätte es ja ein '-wipessl' getan.
Woher aber wissen, ob die statische Version von http://mumble.info/snapshot/ nicht gegen ein betroffenes OpenSSL kompiliert wurde? Ich habe auf die Schnelle keine Informationen dazu gefunden (und wer mir sagen kann, wie ich im Stil von 'ldd /bin/...' sowas an statischen Binarys herausfinde oder ob das überhaupt geht, bekommt Kekse).
Daher wollte ich mal eben ein murmurd selbst auf Uberspace kompilieren (denn die haben ihr OpenSSL ja rasch gefixt). Hat aber nicht mal eben so geklappt, und ich habe wirklich keinen Nerv mich in QT-Buildsysteme einzufuchsen.
Zum Glück gibt es aber umurmur. Es ist kleiner und kommt mit weniger Ballast.
So gehts:
Zunächst brauchen wir paar Abhängigkeiten:
====
toast arm libconfig/v1.5-snscltt: https://github.com/alexh-name/libconfig/archive/v1.5-snscltt.tar.gz
toast arm cmake/v3.9.3: https://github.com/Kitware/CMake/archive/v3.9.3.tar.gz
toast arm https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.bz2
toast arm https://github.com/protobuf-c/protobuf-c/releases/download/v1.1.1/protobuf-c-1.1.1.tar.gz
toast arm https://tls.mbed.org/download/start/mbedtls-2.6.0-apache.tgz
====
/Achtung: der Link zu den libconfig-Quellen weist auf einen Fork von mir. Hintergrund: Das Tarball auf der Homepage von hyperrealm (Autoren von libconfig) ist nur über http (also nicht https!) erreichbar und es gibt keine Checksums. Auf Anfrage wurden nun auch alle nötigen Dateien dem github-Repo hinzugefügt. Ich habe nur den entsprechenden Commit der letzten veröffentlichten Version 1.5 hinzugefügt. [3] [4]/
Bereitet ein Verzeichnis für die Quellen vor:
====
mkdir $HOME/git
cd $HOME/git
====
Und holt sie euch:
====
git clone https://github.com/umurmur/umurmur
====
Wer den Stand des masters auf git kompilieren möchte, überspringt den nächsten Schritt. Wer die zuletzt getaggte stabile Version haben möchte, wechselt im git-Verzeichnes auf dieses:
====
cd $HOME/git/umurmur
git checkout tags/0.2.17
====
Wir kopieren jetzt noch den Inhalt in ein Arbeitsverzeichnis, wo wir dann auch kompilieren:
====
mkdir $HOME/src
cd $HOME/src
cp -r $HOME/git/umurmur .
mkdir umurmur/build
cd umurmur/build
====
Jetzt kanns losgehen:
====
cmake \
-DMBEDTLS_INCLUDE_DIR="$HOME/.toast/armed/include/mbedtls" \
-DMBEDTLS_LIBRARIES="$HOME/.toast/armed/lib" \
-DMBEDTLS_LIB_DIR="$HOME/.toast/armed/lib" \
-DLIBCONFIG_INCLUDE_DIR="$HOME/.toast/armed/include/" \
-DLIBCONFIG_LIBRARIES="$HOME/.toast/armed/lib" \
-DLIBCONFIG_LIB_DIR="$HOME/.toast/armed/lib" \
-DPROTOBUFC_INCLUDE_DIR="$HOME/.toast/armed/include/protobuf-c" \
-DPROTOBUFC_LIBRARIES="$HOME/.toast/armed/lib" \
-DPROTOBUFC_LIB_DIR="$HOME/.toast/armed/lib" \
-DSSL=mbedtls \
../
make
====
Kopiert die Binary an einen guten Platz:
====
mkdir $HOME/bin
cp bin/umurmurd $HOME/bin/
====
Und macht euch an die Config:
====
mkdir $HOME/etc
cp ../umurmur.conf.example $HOME/etc/umurmur.conf
mkdir -p $HOME/var/umurmur/
mkdir -p $HOME/var/log/
====
In '$HOME/var/umurmur/' könnt ihr eure Zertifikate legen.
Wenn ihr keines habt und keines von einer CA authority signiertes braucht, könnt ihr euch so eines selbst erstellen:
====
mkdir -p $HOME/var/ssl/umurmur
cd $HOME/var/ssl/umurmur
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365
====
Diese Zeile trägt das selbstsignierte Zertifikat von eben in die config ein:
====
sed -e "s/\/etc\/umurmur\/cert\.crt/\/home\/$USER\/var\/ssl\/umurmur\/cert\.pem/" -e "s/\/etc\/umurmur\/key\.key/\/home\/$USER\/var\/ssl\/umurmur\/key\.pem/" -i $HOME/etc/umurmur.conf
====
Die Beispielconfig (die wir jetzt in $HOME/etc/umurmur.conf haben) ist gut erklärt.
Diese Parameter solltet ihr aber entkommentieren und unbedingt ändern:
====
bindport = PORT; # Zu erfragen beim Uberspace-Team
logfile = "/home/USER/var/log/umurmurd.log" # 'USER' mit eurem Usernamen ersetzen.'~' funktioniert hier nicht. Wenn wir das nicht setzen, nervt umurmur womöglich SYSLOG.
====
Dann erstellt ihr letztlich noch wie gewohnt [1] einen Dienst:
====
uberspace-setup-service umurmurd $HOME/bin/umurmurd
====
Diese Zeile ändert noch die exec-Zeile in der run des Dienstes etwas:
====
sed -e "s/\/home\/$USER\/bin\/umurmurd/\/home\/$USER\/bin\/umurmurd\ -d\ -r\ -c\ \/home\/$USER\/etc\/umurmur.conf/" -i $HOME/service/umurmurd/run
====
sodass sie dann so aussehen sollte:
====
exec /home/USER/bin/umurmurd -d -r -c /home/USER/etc/umurmur.conf 2>&1
====
Neues, schlankes und sicheres murmur!
[1] https://wiki.uberspace.de/system:daemontools
[2] https://github.com/hyperrealm/libconfig
[3] https://github.com/alexh-name/libconfig/releases/tag/v1.5-snscltt
[4] https://github.com/alexh-name/libconfig/commit/a394d51bd1bd9a3d731493093cdd55aaef70df09
[5] /about/