Le grand classique : votre client est OK pour exposer le port 443 car il en a besoin pour accéder à sa WebApp mais impossible de vous ouvrir le port 22 (raisons multiples : « on peut pas », « SSH c’est quoi ? » …) pour accéder au serveur.
Grâce à ShellInABox et au mode proxy d’Apache l’on va pouvoir « mapper » un « SSH Web » à une URL de votre site Web et ainsi accéder en SSH – via HTTPS – au serveur via un simple navigateur web .
Source image : https://github.com/shellinabox/shellinabox
Maquette (Debian)
Activation des modules Apache de gestion du SSL et Proxy
a2enmod ssl a2enmod proxy a2enmod proxy_http
Sur Debian (en tout cas sur la Raspbian utilisé pour ce test) il existe déjà un fichier de configuration valide (avec un certificat auto-signé).
/etc/apache2/sites-available/default-ssl.conf
... # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ...
On active ce host
a2ensite default-ssl
On ajoute le « mapping » entre l’URL /shell et ShellInABox
[Avant] /etc/apache2/sites-available/default-ssl.conf
</VirtualHost> </IfModule>
[Après] /etc/apache2/sites-available/default-ssl.conf
</VirtualHost> <Location /shell> ProxyPass http://localhost:4200/ </Location> </IfModule>
On re-démarre les services
service shellinabox restart service apache2 restart
Vous pouvez à présent accéder à votre SSH via l’adresse https://[votreIP]/shell
Attention : ShelInABox est encore en écoute sur son port. Pour limiter l’accès au seul port 443 il faut modifier la configuration de ShellInABox afin de limiter son écoute au localhost.
/etc/default/shellinabox
... SHELLINABOX_ARGS="--localhost-only" ...