Advertisement
Guest User

Prosody auf Uberspace (mit LuaSec + Perfect Forward Secrecy)

a guest
May 2nd, 2014
1,451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.16 KB | None | 0 0
  1. Diese Anleitung gilt als Ergänzung zu Daniel 'dictvm' Heitmann's Blog Artikel unter: http://blog.dictvm.org/prosody-auf-dem-uberspace/
  2. Daniel hat die einzelnen Schritte zur späteren Prosody Installation ausführlicher erklärt.
  3.  
  4.  
  5. Login über die Konsole:
  6. ssh uberspace-username@host.uberspace.de
  7.  
  8. Zunächst installiert ihr euch die aktuelle OpenSSL Version local im Uberspace-Account (dauert ca. 3-5 Minuten):
  9. toast arm https://www.openssl.org/source/openssl-1.0.1g.tar.gz
  10.  
  11. Testen, welche Version von Lua von deinem Uberspace-Account verwendet wird:
  12. lua -v
  13.  
  14. Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
  15.  
  16. 5.1.4 passt! Denn Lua 5.2 wird aktuell noch nicht von Prosody unterstützt.
  17.  
  18. nano ~/.bash_profile
  19.  
  20. Falls bei euch Lua 5.2 angezeigt wurde, dann löscht den Lua 5.2 Eintrag aus eurer .bash_profile.
  21. Die Datei sollte so angepasst werden (wobei USERNAME durch euren Uberspace-Usernamen zu ersetzen ist):
  22.  
  23. # .bash_profile
  24.  
  25. # Get the aliases and functions
  26. if [ -f ~/.bashrc ]; then
  27. . ~/.bashrc
  28. fi
  29.  
  30. # User specific environment and startup programs
  31.  
  32. PATH=$PATH:$HOME/bin
  33.  
  34. export PATH
  35.  
  36. # added for Prosody and Luarocks
  37. export LUA_PATH='/home/uberspace-username/.luarocks/share/lua/5.1/?.lua;/home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua;./?.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/home/uberspace-username/.luarocks/share/lua/5.1/?.lua;/home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua;./?.lua;/usr/lib64/lua/5.1/?.lua;/usr/lib64/lua/5.1/?/init.lua;/home/uberspace-username/.luarocks/share/lua/5.1/?.lua;/home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua;./?.lua'
  38. export LUA_CPATH='/home/uberspace-username/.luarocks/lib/lua/5.1/?.so;/usr/lib/lua/5.1/?.so;/home/uberspace-username/.luarocks/lib/lua/5.1/?.so;./?.so;/usr/lib64/lua/5.1/?.so;/usr/lib64/lua/5.1/loadall.so;/home/uberspace-username/.luarocks/lib/lua/5.1/?.so'
  39.  
  40. SPEICHERN NICHT VERGESSEN ;-)
  41.  
  42. ANSCHLIESSEND AUSLOGGEN UND WIEDER NEU EINLOGGEN!!
  43. exit
  44. ssh uberspace-username@host.uberspace.de
  45.  
  46. luarocks list
  47.  
  48. Installed rocks:
  49. ----------------
  50.  
  51. Hier sollte zunächst nichts angezeigt werden. Weiter geht's mit der Installation:
  52.  
  53. luarocks install luasocket --local
  54. luarocks install luaexpat --local
  55. luarocks install luafilesystem --local
  56. luarocks install luasec --local OPENSSL_DIR=~/.toast/armed/usr/local/
  57.  
  58. luarocks list
  59.  
  60. Installed rocks:
  61. ----------------
  62.  
  63. luaexpat
  64. 1.3.0-1 (installed) - /home/prosody/.luarocks/lib/luarocks/rocks
  65.  
  66. luafilesystem
  67. 1.6.2-2 (installed) - /home/prosody/.luarocks/lib/luarocks/rocks
  68.  
  69. luasec
  70. 0.5-2 (installed) - /home/prosody/.luarocks/lib/luarocks/rocks
  71.  
  72. luasocket
  73. 3.0rc1-1 (installed) - /home/prosody/.luarocks/lib/luarocks/rocks
  74.  
  75.  
  76. Jetzt kann es mit der eigentlichen Prosody Installation weitergehen!
  77.  
  78. toast arm https://prosody.im/downloads/source/prosody-0.9.4.tar.gz
  79.  
  80. mkdir -p ~/var/prosody/data
  81. mkdir -p ~/var/prosody/ssl
  82.  
  83. cd ~/var/prosody/ssl/
  84. openssl dhparam -out dh-4096.pem 4096
  85. openssl genrsa -out prosody_domain.com_private-key.pem 4096
  86. openssl req -new -key prosody_domain.com_private-key.pem -out prosody_domain.com_cert.csr
  87.  
  88. Wichtig für uns ist nur “CommonName”; hier muss der Domainname stehen, z.B. “domain.com“.
  89.  
  90. Anschließend:
  91. nano prosody_domain.com_cert.csr
  92.  
  93. Inhalt kopieren und z.B. bei CaCert.org (kostenlos) ein Zertifikat beantragen.
  94.  
  95. Code von CaCert anschließend in folgende Datei abspeichern mittels:
  96. nano prosody_domain.com_cacert.pem
  97.  
  98. Zertifikatsanfrage wieder entfernen
  99. rm prosody_domain.com_cert.csr
  100.  
  101. cd ~/var/prosody/
  102. Dort die Datei "prosody.pid" erstellen.
  103.  
  104. cd
  105. nano ~/var/prosody/data/prosody.cfg.lua
  106.  
  107.  
  108. FOLGENDES REINKOPIEREN UND UBERSPACE-USERNAME, DOMAIN, SOWIE PORTS ANPASSEN:
  109.  
  110.  
  111. pidfile = "/home/uberspace-username/var/prosody/prosody.pid";
  112. admins = { "admin@domain.com" }
  113. modules_enabled = {
  114. "roster";
  115. "saslauth";
  116. "tls";
  117. "dialback";
  118. "disco";
  119. "private";
  120. "vcard";
  121. "privacy";
  122. "version";
  123. "uptime";
  124. "time";
  125. "ping";
  126. "posix";
  127. "pep";
  128. "register";
  129. "admin_adhoc";
  130. "motd";
  131. "welcome";
  132. };
  133. daemonize = false; -- IMPORTANT for daemontools! DO NOT EDIT!
  134. data_path = "/home/uberspace-username/var/prosody/data";
  135. log = { "*console" } -- IMPORTANT for daemontools! DO NOT EDIT!
  136. allow_registration = false;
  137. s2s_ports = { XXXXX } -- Server to Server - freien TCP Port bei hallo@uberspace.de anfragen & eintragen!
  138. c2s_ports = { XXXXX } -- Client to Server - freien TCP Port bei hallo@uberspace.de anfragen & eintragen!
  139. c2s_require_encryption = true
  140. s2s_require_encryption = true
  141. authentication = "internal_hashed" -- do not save passphrases in cleartext!
  142.  
  143. VirtualHost "domain.com" -- anpassen!
  144. enabled = true
  145.  
  146. ssl = {
  147. key = "/home/uberspace-username/var/prosody/ssl/prosody_domain.com_private-key.pem";
  148. certificate = "/home/uberspace-username/var/prosody/ssl/prosody_domain.com_cacert.pem";
  149.  
  150. -- Allow perfect forward secrecy.
  151. dhparam = "/home/uberspace-username/var/prosody/ssl/dh-4096.pem";
  152.  
  153. -- Best ciphers for perfect forward secrecy.
  154. ciphers = "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128";
  155.  
  156. options = { "no_ticket", "no_compression", "no_sslv2", "no_sslv3", "cipher_server_preference" }
  157. }
  158.  
  159.  
  160. SPEICHERN NICHT VERGESSEN ;-)
  161.  
  162. rm ~/.toast/armed/etc/prosody/prosody.cfg.lua
  163. ln -s ~/var/prosody/data/prosody.cfg.lua ~/.toast/armed/etc/prosody/prosody.cfg.lua
  164.  
  165. Falls noch nicht eingerichtet:
  166. uberspace-setup-svscan
  167.  
  168. Anschließend daemontools für Prosody aktivieren
  169. uberspace-setup-service prosody ~/.toast/armed/bin/prosody
  170.  
  171. Testen ob Prosody läuft:
  172. prosodyctl status
  173.  
  174. Prosody is running with PID 5446
  175.  
  176.  
  177. Testen ob Prosody auch die über Luarocks installierten Module erkennt
  178. prosodyctl about
  179.  
  180. Prosody unknown
  181.  
  182. # Prosody directories
  183. Data directory: /home/uberspace-username/.toast/armed/var/lib/prosody
  184. Plugin directory: /home/uberspace-username/.toast/pkg/prosody/v0.9.4/1/root/lib/prosody/modules/
  185. Config directory: /home/uberspace-username/.toast/armed/etc/prosody
  186. Source directory: /home/uberspace-username/.toast/pkg/prosody/v0.9.4/1/root/lib/prosody
  187.  
  188. # Lua environment
  189. Lua version: Lua 5.1
  190.  
  191. Lua module search paths:
  192. /home/uberspace-username/.toast/pkg/prosody/v0.9.4/1/root/lib/prosody/?.lua
  193. /home/uberspace-username/.luarocks/share/lua/5.1/?.lua
  194. /home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua
  195. /usr/share/lua/5.1/?.lua
  196. /usr/share/lua/5.1/?/init.lua
  197. /home/uberspace-username/.luarocks/share/lua/5.1/?.lua
  198. /home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua
  199. /usr/lib64/lua/5.1/?.lua
  200. /usr/lib64/lua/5.1/?/init.lua
  201. /home/uberspace-username/.luarocks/share/lua/5.1/?.lua
  202. /home/uberspace-username/.luarocks/share/lua/5.1/?/init.lua
  203.  
  204. Lua C module search paths:
  205. /home/uberspace-username/.toast/pkg/prosody/v0.9.4/1/root/lib/prosody/?.so
  206. /home/uberspace-username/.luarocks/lib/lua/5.1/?.so
  207. /usr/lib/lua/5.1/?.so
  208. /home/uberspace-username/.luarocks/lib/lua/5.1/?.so
  209. /usr/lib64/lua/5.1/?.so
  210. /usr/lib64/lua/5.1/loadall.so
  211. /home/uberspace-username/.luarocks/lib/lua/5.1/?.so
  212.  
  213. LuaRocks: Installed (2.1.2)
  214.  
  215. # Lua module versions
  216. lfs: LuaFileSystem 1.6.2
  217. lxp: LuaExpat 1.3.0
  218. pposix: 0.3.6
  219. socket: LuaSocket 3.0-rc1
  220. ssl: 0.5.PR
  221.  
  222.  
  223. WICHTIG IST VOR ALLEM DER LETZTE EINTRAG: ssl 0.5.PR
  224. Sollte hier nicht mindestens 0.5 (damit ist LuaSec gemeint) stehen, hast du wahrscheinlich deine .bash_profile nicht richtig editiert oder dich anschließend nicht ausgeloggt und wieder neu angemeldet.
  225.  
  226.  
  227. Account erstellen:
  228. prosodyctl adduser admin@domain.com
  229.  
  230. Nun kannst du dich z.B. mit der Software Pidgin anmelden. Beachtet hierbei, dass du bei Pidgin deinen C2S Port richtig eingeben musst.
  231.  
  232. Zu guter Letzt: Teste deinen Prosody XMPP-Server bei https://xmpp.net/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement