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/sslhDocker
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é.