sslh viene definito come un multiplexer ssl/ssh per Linux. In pratica questo software viene messo in ascolto sulla porta 443 e si occupa di inoltrare al server web le richieste SSL ed al server SSH le relative richieste di connessione ssh.
A cosa serve e come funziona?
In alcuni casi, generalmente per motivi di sicurezza che l’amministratore di rete impone, le uniche porte aperte per la connessione verso il server sono la 80 (http) e la 443 (https). Capita però di aver bisogno anche della connessione ssh per la relativa amministrazione. Ecco a cosa serve sslh: il servizio si mette in ascolto sulla porta 443 e smista le richieste che riceve in base alla tipologia di richiesta (le richieste ssh verso il server ssh e le richieste https verso il server web).
Come è possibile questa cosa? Il servizio di occupa di effettuare una verifica sul protocollo della richiesta e di conseguenza inoltra i pacchetti al corretto servizio. La distinzione tra i due protocolli avviene grazie ad una piccola differenza tra SSL e SSH: un client SSL si collega al server inviando subito una richiesta, mentre un client SSH si collega al server aspettando che il server risponda (con il classico banner iniziale). sslh attende per il tempo necessario al client SSL di inviare la richiesta; se la riceve allora tratterà la connessione come SSL, altrimenti come SSH.
Ora passiamo all’installazione. Sui sistemi Debian based si può usare il classico:
1 | apt-getinstall sslh |
altrimenti si può scaricare l’ultima release stabile e compilarla:
1 2 3 4 5 6 | apt-getinstall build-essential cd/usr/src wget http://www.rutschle.net/tech/sslh-1.14.tar.gz tar xvzf sslh-1.14.tar.gz cdsslh-1.14 makeinstall |
Adesso veniamo alla configurazione. Sui sistemi Debian based si trova nel file /etc/default/sslh. Possiamo modificarlo in:
1 2 | RUN=yes DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:8080" |
In questo caso le connessioni ssl (https) vengono inoltrate verso la porta 8080 e pertanto apache (o il nostro server web) va configurato (aggiunta la porta nel file /etc/apache2/ports.conf e poi modificato il virtualhost) per gestire le richieste https sulla porta 8080 e non sulla classica 443. Lato ssh, invece, non c’è nulla da configurare.
In alternativa, si può configurare il server web per accettare connessioni 443 solo un localhost e quindi sslh per accettare le connessioni alla 443 dall’esterno ed inoltrarle alla 443 in localhost. In pratica il file /etc/default/sslh diventa:
1 2 | RUN=yes DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443" |
ed il file /etc/apache2/ports.conf del server web (esempio per apache) diventa:
# If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to # Server Name Indication for SSL named virtual hosts is currently not# supported by MSIE on Windows XP. Listen 127.0.0.1:443 Listen 127.0.0.1:443
Fatto questo, basterà riavviare il webserver (per liberare la porta 443), il servizio sslh e finalmente potremo connetterci al server ssh tramite la porta 443 con:
ssh XXXXXX -p 443
dove XXXXXX è l’hostname del nostro server.
Nota: Quello descritto è il classico utilizzo di sslh, ma è giusto ricordare che questo software permette di riconoscere i protocolli HTTP, SSL, SSH, OpenVPN, tinc e XMPP e smistare le richieste ai relativi servizi.
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta