GNU/Linux >> Tutoriels Linux >  >> Linux

SSLH - Partager un même port pour HTTPS et SSH

Dans ce bref tutoriel, nous verrons ce qu'est SSLH, comment installer SSLH et comment configurer SSLH pour partager un même port pour https et ssh dans les systèmes d'exploitation Linux et Unix.

Qu'est-ce que SSLH ?

Certains fournisseurs de services Internet et certaines entreprises peuvent avoir bloqué la plupart des ports et n'autoriser que quelques ports spécifiques, tels que les ports 80 et 443, à renforcer leur sécurité.

Dans de tels cas, nous n'avons pas le choix, mais utilisons un même port pour plusieurs programmes, disons le port HTTPS 443 , qui est rarement bloqué. C'est ici que SSLH , un multiplexeur SSL/SSH, vient en aide.

SSLH écoutera les connexions entrantes sur un port 443. Pour le dire plus simplement, SSLH nous permet d'exécuter plusieurs programmes ou services sur le port 443 sur un système Linux. Ainsi, vous pouvez utiliser SSL et SSH en utilisant le même port en même temps.

Si vous vous êtes déjà trouvé dans une situation où la plupart des ports sont bloqués par les pare-feu, vous pouvez utiliser SSLH pour accéder à votre serveur distant.

Installer SSLH sous Linux

SSLH est fourni pour la plupart des distributions Linux, vous pouvez donc l'installer à l'aide des gestionnaires de packages par défaut.

Sur Debian , Ubuntu , Linux Mint et Pop OS , exécutez :

$ sudo apt install sslh

Lors de l'installation de SSLH, vous serez invité à indiquer si vous souhaitez exécuter sslh en tant que service d'inetd ou en tant que serveur autonome.

Chaque choix a ses propres avantages. Avec seulement quelques connexions par jour, il est probablement préférable d'exécuter sslh depuis inetd afin d'économiser les ressources.

D'un autre côté, avec de nombreuses connexions, sslh doit fonctionner comme un serveur autonome pour éviter de générer un nouveau processus pour chaque connexion entrante.

Sur Arch Linux et des dérivés comme Antergos, Manjaro Linux, installez-le en utilisant Pacman comme indiqué ci-dessous.

$ sudo pacman -S sslh

Sur RHEL , CentOS , AlmaLinux et Rocky Linux , vous devez ajouter EPEL référentiel, puis installez SSLH comme indiqué ci-dessous.

$ sudo dnf install epel-release
$ sudo dnf install sslh

Sur Fedora :

$ sudo dnf install sslh

S'il n'est pas disponible sur les référentiels par défaut, vous pouvez compiler et installer manuellement SSLH comme décrit ici .

Configurer les serveurs Web Apache ou Nginx

Comme vous le savez déjà, les serveurs Web Apache et Nginx écouteront sur toutes les interfaces réseau (c'est-à-dire 0.0.0.0:443 ) par défaut. Nous devons modifier ce paramètre pour indiquer au serveur Web d'écouter uniquement sur l'interface de l'hôte local (c'est-à-dire 127.0.0.1:443 ou localhost:443 ).

Pour ce faire, modifiez le fichier de configuration du serveur Web (nginx ou apache) et recherchez la ligne suivante :

listen 443 ssl;

Et changez-le en :

listen 127.0.0.1:443 ssl;

Si vous utilisez Virtualhosts dans Apache, assurez-vous de l'avoir également modifié.

VirtualHost 127.0.0.1:443

Enregistrez et fermez les fichiers de configuration. Ne redémarrez pas les services. Nous n'avons pas encore fini.

Configurer SSLH

Une fois que vous avez fait en sorte que les serveurs Web n'écoutent que sur l'interface locale, modifiez le fichier de configuration SSLH :

$ sudo vi /etc/default/sslh

Recherchez la ligne suivante :

Run=no

Et changez-le en :

Run=yes

Ensuite, faites défiler un peu vers le bas et modifiez la ligne suivante pour permettre à SSLH d'écouter sur le port 443 sur toutes les interfaces disponibles (Ex. 0.0.0.0:443 ).

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

Où,

  • --user sslh  :Nécessite de s'exécuter sous ce nom d'utilisateur spécifié.
  • --listen 0.0.0.0:443 :SSLH écoute sur le port 443 sur toutes les interfaces disponibles.
  • --sshs 127.0.0.1:22 :Achemine le trafic SSH vers le port 22 sur l'hôte local.
  • --ssl 127.0.0.1:443 :Achemine le trafic HTTPS/SSL vers le port 443 sur l'hôte local.

Enregistrez et fermez le fichier.

Enfin, activez et démarrez sslh service pour mettre à jour les modifications.

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

Test

Vérifiez si le démon SSLH écoute 443 .

$ ps -ef | grep sslh 
sslh 2746 1 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sslh 2747 2746 0 15:51 ? 00:00:00 /usr/sbin/sslh --foreground --user sslh --listen 0.0.0.0 443 --ssh 127.0.0.1 22 --ssl 127.0.0.1 443 --pidfile /var/run/sslh/sslh.pid
sk 2754 1432 0 15:51 pts/0 00:00:00 grep --color=auto sslh

Maintenant, vous pouvez accéder à votre serveur distant via SSH en utilisant le port 443 :

$ ssh -p 443 [email protected]

Exemple de résultat :

Mot de passe de
[email protected]'s password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Wed Aug 14 13:11:04 IST 2019

System load: 0.23 Processes: 101
Usage of /: 53.5% of 19.56GB Users logged in: 0
Memory usage: 9% IP address for enp0s3: 192.168.225.50
Swap usage: 0% IP address for enp0s8: 192.168.225.51

* Keen to learn Istio? It's included in the single-package MicroK8s.

https://snapcraft.io/microk8s

61 packages can be updated.
22 updates are security updates.


Last login: Wed Aug 14 13:10:33 2019 from 127.0.0.1

Voir? Je peux maintenant accéder au serveur distant via SSH même si le port SSH par défaut 22 est bloqué. Comme vous le voyez dans l'exemple ci-dessus, j'ai utilisé le port https 443 pour la connexion SSH. Aussi, nous pouvons utiliser le même port 443 également pour les connexions openVPN.

J'ai testé SSLH sur mon serveur Ubuntu 18.04 LTS et cela a très bien fonctionné comme décrit ci-dessus. J'ai testé SSLH dans un réseau local protégé, donc je ne suis pas au courant des problèmes de sécurité. Si vous l'utilisez en production, indiquez-nous les avantages et les inconvénients de l'utilisation de SSLH dans la section des commentaires ci-dessous.

Pour plus de détails, consultez la page officielle GitHub indiquée ci-dessous.


Linux
  1. Comment configurer le tunnel SSH

  2. Lire et écrire dans le même fichier sous Linux sans l'écraser ??

  3. Autorisations SSH et répertoire personnel ?

  4. 5 meilleures applications Android SSH et FTP pour Linux

  5. Changer le port SSH dans CentOS et Red Hat

Comment connecter et partager des données entre deux systèmes Linux

Tunnellisation et proxy SSH

Comment changer le port SSH par défaut sous Linux [correctement et en toute sécurité]

Changez votre port SSH dans Ubuntu et Debian

Comment changer le port SSH sur Centos 7.x ?

Comment changer le port SSH sur Ubuntu ?