SSLH: cache SSH / HTTPS / OpenVPN / Telegram derrière un seul port 443

image

SSH / HTTPS / OpenVPN / Telegram et tout sur un seul port?! Quoi?!
- Oui!
  • Vous souhaitez masquer la présence de certains de vos services?
  • Tout, à l'exception des ports 443 (https), est-il bloqué sur un réseau Wi-Fi public?
  • Avez-vous configuré Telegram Proxy / OpenVPN et ne voulez pas le "briller"?
  • Connexion SSH à votre serveur depuis des pays censurés?

Il n'y a qu'une seule réponse à toutes ces questions: les connexions SSL / TLS de multiplexage ou SSLH.

Dans le post, nous verrons comment cacher un tas de services dans 1 commande derrière 1 port .

Pourquoi?


Avec la sortie récente de Telegram Proxy, qui ressemble presque complètement à du trafic SSL, une question intéressante est apparue dans les commentaires de la publication :
Newton :
J'ai une jolie question noob - n'est-il vraiment pas possible de mettre cela ensemble avec sslh?
Après une rapide vérification des capacités de l'application sslh, il me semblait que je ne pourrais pas la démarrer, mais j'étais très intéressé par cette application, et, comme il s'est avéré, je peux toujours la croiser avec un hérisson .

Comment?


L'application SSLH est un multiplexeur, en d'autres termes, elle analyse le trafic (en fait un travail mini-DPI) et, selon le type de trafic, l'envoie au port local 8443/999/991 ou à tout autre ...

Ce qui nous permet d' utiliser la technologie DPI pour la première fois pour le bénéfice .

Défi


Pour un exemple d'utilisation de SSLH, nous avons défini la tâche:

Les applications suivantes sont installées sur le serveur - Telegram Proxy, Apache, SSH et nous voulons laisser tous ces services dans le monde via le port 443.

Le serveur dans notre exemple est Ubuntu 16.04.4 LTS, Apache2 + LetsEncrypt, SSH, Telegram Proxy dans Docker.

Pour le moment, Apache y travaille, comme il se doit.

Installation et configuration


Installez SSLH:

sudo apt-get install --no-install-recommends sslh 

Lors de l'installation, une question sera posée sur le mode d'utilisation, il y en a deux:

  • stable mais plus gourmand en ressources
  • rapide, mais avec perte de connexions lorsque le processus tombe

Je suis pour la deuxième option, bien sûr, vous pouvez en choisir une autre.

Vérifiez si notre miracle fonctionne avec la commande suivante:

 sudo sslh-select -f --listen IP:8443 --tls 127.0.0.1:443 --ssh 127.0.0.1:22 --anyprot 127.0.0.1:9443 

IP - serveur IP externe
8443 - port sur lequel notre multiplexeur sera lancé
443 - où habite Apache
Faites attention à l'option anyprot - c'est là que notre proxy Telegram vivra, en d'autres termes, si le trafic ne correspond à aucun type - envoyez-le.

Attention! Si votre configuration n'a pas de télégramme ou SSH, supprimez les clés de démarrage supplémentaires.

Vérifiez-le?


Ouvrez un navigateur à l'adresse de votre serveur avec le port 8443 - vous devriez voir une réponse d'Apache, puis essayez de vous connecter via SSH ou via Telegram Proxy.

Portage d'Apache vers un autre port


Pour transférer Apache du port standard (443) vers un autre, par exemple vers 7443, visitez les fichiers suivants:

 sudo nano /etc/apache2/ports.conf sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf 

Dans l'exemple, Apache + SSL / HTTPS a été installé à l'aide de LetsEncrypt avec un certificat différent, les fichiers de configuration peuvent l'être d'une autre manière.

Démarrage automatique


Il est temps de configurer l'exécution automatique.

Modifiez le fichier:

 sudo nano /etc/default/sslh 

Dans le champ DAEMON_OPTS = , ajoutez des attributs lors de l'exécution de la commande sslh-select, définissez RUN sur = yes.

Exécuter:

 sudo systemctl start sslh 

Assurez-vous que tout va bien:

 sudo systemctl status sslh 

Quel est le résultat?


Après avoir terminé ce didacticiel, vous devez disposer d'un serveur disposant de plusieurs services via un seul port (lesquels de votre choix) .

Et OpenVPN? Quels protocoles l'application est-elle toujours capable de faire?


Au moment de l'écriture, sslh peut détecter et multiplexer les protocoles suivants:
 [--ssh <addr>] [--openvpn <addr>] [--tinc <addr>] [--xmpp <addr>] [--http <addr>] [--ssl <addr>] [--tls <addr>] [--anyprot <addr>] 

Avant d'utiliser, il est préférable de vous assurer des protocoles pris en charge par votre version (du coup c'est plus récent) en utilisant:

 sslh-select -h 


Les références


Le développement SSLH a lieu sur github, dans ce référentiel: github.com/yrutschle/sslh

Docker


Je n'ai pas réussi à collecter la version de travail de sslh dans docker avec tous les autres services, à mon avis le fichier docker-compose qui peut être généré sur le port 443 sera intéressant:
  • Apache + LetsEncrypt
  • Télégramme proxy
  • OpenVPN (facultatif)
  • Utiliser SSH local


Si quelqu'un réussit - écrivez dans les commentaires - ajoutez à l'article, à mon avis, ce sera utile.

Vous pourriez également être intéressé.


Source: https://habr.com/ru/post/fr412779/


All Articles