Project

General

Profile

Actions

Demande #5614

closed

Rendre le service XMPP joignable sur le port 443

Added by pitchum . almost 3 years ago. Updated about 2 months ago.

Status:
Fermé
Priority:
Normale
Assignee:
Target version:
Start date:
10/06/2021
Due date:
% Done:

0%

Estimated time:
Difficulté:
3 Moyen

Description

Ça permettrait de rendre le service utilisable depuis certains campus universitaires par exemple, où la connectivité vers internet est très limitée.
Ça impliquerait de publier des méta-données sur https://chapril.org/.well-known/host-meta et d'activer un module nginx stream_ssl_preread sur bastion.

Actions #1

Updated by pitchum . 5 months ago

Expérimenté sur mon serveur perso, ça nécessite de modifier tous les vhosts nginx pour qu'ils écoutent sur un port différent du port 443.

Ajouter ce bloc stream dans /etc/nginx/nginx.conf :

diff --git a/nginx/nginx.conf b/nginx/nginx.conf
index f52668a..c1dd930 100644
--- a/nginx/nginx.conf
+++ b/nginx/nginx.conf
@@ -81,3 +81,48 @@ http {
 #              proxy      on;
 #      }
 #}
+
+stream {
+
+   upstream httpserver {
+       server 127.0.0.1:442;
+   }
+
+   upstream xmppserver {
+       server xmpp.cluster.chapril.org:5223;
+   }
+
+   map $ssl_preread_alpn_protocols $upstream {
+       default httpserver;
+       "xmpp-client" xmppserver;
+   }
+   server {
+       listen 443;
+
+       ssl_preread on;
+       proxy_pass $upstream;
+       proxy_protocol on;
+   }
+}

Puis patcher tous les vhosts ainsi :

sed -ri 's/listen (.*)443/listen \1442/g' /etc/nginx/sites-available/*
# puis
sed -ri 's/listen (.*) default_server/listen \1 proxy_protocol/g' /etc/nginx/sites-available/*

Pour continuer d'avoir les IPs dans les logs (pour fail2ban notamment), créer le fichier /etc/nginx/conf.d/real_ip.conf contenant ceci :

set_real_ip_from 127.0.0.1;
set_real_ip_from ::1/128;
real_ip_header proxy_protocol;

Ajouter au bloc listen: du fichier /etc/ejabberd/ejabberd.yml :

  -
    port: 5225
    use_proxy_protocol: true
    ip: "::" 
    module: ejabberd_c2s
    tls: true
    max_stanza_size: 65536
    shaper: c2s_shaper
    access: c2s

Adapter les enregistrements DNS :

_xmpps-client._tcp.chapril.org.        86400   IN      SRV  5 10 5223  xmpp.chapril.org.
_xmpps-client._tcp.chapril.org.        86400   IN      SRV 10 10  443  xmpp.chapril.org.
Actions #2

Updated by pitchum . 2 months ago

  • Description updated (diff)
Actions #3

Updated by pitchum . 2 months ago

  • Status changed from Nouveau to Résolu

Ayé, c'est enfin mis en place.
Ça a nécessité des changements sur les VMs bastion (pour nginx ssl_preread), sur dns (1 nouvel enregistrement) et sur xmpp (firewall + config ejabberd).

Actions #4

Updated by Quentin Gibeaux about 2 months ago

  • Status changed from Résolu to Fermé
Actions

Also available in: Atom PDF