GNU/Linux >> Linux Esercitazione >  >> Linux

SSLH:condividi una stessa porta per HTTPS e SSH

In questo breve tutorial, vedremo cos'è SSLH, come installare SSLH e come configurare SSLH per condividere una stessa porta per https e ssh in sistemi operativi simili a Linux e Unix.

Cos'è SSLH?

Alcuni provider di servizi Internet e società aziendali potrebbero aver bloccato la maggior parte delle porte e consentito solo a poche porte specifiche come la porta 80 e 443 per rafforzare la loro sicurezza.

In questi casi, non abbiamo scelta, ma utilizzare la stessa porta per più programmi, ad esempio la porta HTTPS 443 , che è raramente bloccato. Ecco dove SSLH , un multiplexer SSL/SSH, viene in aiuto.

SSLH ascolterà le connessioni in entrata su una porta 443. Per dirla in modo più semplice, SSLH ci consente di eseguire diversi programmi o servizi sulla porta 443 su un sistema Linux. Quindi, puoi utilizzare sia SSL che SSH utilizzando la stessa porta contemporaneamente.

Se ti sei mai trovato in una situazione in cui la maggior parte delle porte è bloccata dai firewall, puoi utilizzare SSLH per accedere al tuo server remoto.

Installa SSLH in Linux

SSLH è incluso in un pacchetto per la maggior parte delle distribuzioni Linux, quindi puoi installarlo utilizzando i gestori di pacchetti predefiniti.

Su Debian , Ubuntu , Linux Mint e sistema operativo pop , esegui:

$ sudo apt install sslh

Durante l'installazione di SSLH, ti verrà chiesto se desideri eseguire sslh come servizio da inetd o come server autonomo.

Ogni scelta ha i suoi vantaggi. Con poche connessioni al giorno, probabilmente è meglio eseguire sslh da inetd per risparmiare risorse.

D'altra parte, con molte connessioni, sslh dovrebbe essere eseguito come server autonomo per evitare di generare un nuovo processo per ogni connessione in entrata.

Su Arch Linux e derivati ​​come Antergos, Manjaro Linux, installalo usando Pacman come mostrato di seguito.

$ sudo pacman -S sslh

Su RHEL , CentOS , AlmaLinux e Rocky Linux , devi aggiungere EPEL repository e quindi installare SSLH come mostrato di seguito.

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

Su Fedora :

$ sudo dnf install sslh

Se non è disponibile nei repository predefiniti, puoi compilare e installare manualmente SSLH come descritto qui .

Configura i server web Apache o Nginx

Come già sai, i server web Apache e Nginx ascolteranno su tutte le interfacce di rete (ad esempio 0.0.0.0:443 ) per impostazione predefinita. Dobbiamo modificare questa impostazione per dire al server web di ascoltare solo sull'interfaccia localhost (ad esempio 127.0.0.1:443 localhost:443 ).

Per farlo, modifica il file di configurazione del server web (nginx o apache) e trova la seguente riga:

listen 443 ssl;

E cambialo in:

listen 127.0.0.1:443 ssl;

Se stai usando Virutalhosts in Apache, assicurati di aver cambiato anche quello.

VirtualHost 127.0.0.1:443

Salva e chiudi i file di configurazione. Non riavviare i servizi. Non abbiamo ancora finito.

Configura SSLH

Dopo aver impostato i server Web in ascolto solo sull'interfaccia locale, modificare il file di configurazione SSLH:

$ sudo vi /etc/default/sslh

Trova la riga seguente:

Run=no

E cambialo in:

Run=yes

Quindi, scorri un po' verso il basso e modifica la riga seguente per consentire a SSLH di essere in ascolto sulla porta 443 su tutte le interfacce disponibili (es. 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"

Dove,

  • --user sslh :richiede l'esecuzione con questo nome utente specificato.
  • --listen 0.0.0.0:443 :SSLH è in ascolto sulla porta 443 su tutte le interfacce disponibili.
  • --sshs 127.0.0.1:22 :instrada il traffico SSH alla porta 22 sull'host locale.
  • --ssl 127.0.0.1:443 :instrada il traffico HTTPS/SSL alla porta 443 sull'host locale.

Salva e chiudi il file.

Infine, abilita e avvia sslh servizio per aggiornare le modifiche.

$ sudo systemctl enable sslh
$ sudo systemctl start sslh

Test

Controlla se il demone SSLH sta ascoltando 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

Ora puoi accedere al tuo server remoto tramite SSH utilizzando la porta 443 :

$ ssh -p 443 [email protected]

Risultato di esempio:

Password di
[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

Vedere? Ora posso accedere al server remoto tramite SSH anche se la porta SSH predefinita 22 è bloccato. Come vedi nell'esempio sopra, ho usato la porta https 443 per la connessione SSH. Inoltre, possiamo usare la stessa porta 443 anche per connessioni openVPN.

Ho testato SSLH sul mio server Ubuntu 18.04 LTS e ha funzionato perfettamente come descritto sopra. Ho testato SSLH in una rete locale protetta, quindi non sono a conoscenza dei problemi di sicurezza. Se lo stai utilizzando in produzione, facci sapere i vantaggi e gli svantaggi dell'utilizzo di SSLH nella sezione commenti qui sotto.

Per maggiori dettagli, controlla la pagina ufficiale di GitHub riportata di seguito.


Linux
  1. Come modificare la porta SSH in Linux

  2. Come configurare il tunneling SSH

  3. Leggi e scrivi sullo stesso file in Linux senza sovrascriverlo??

  4. Timeout di connessione per il server Ssh?

  5. 5 migliori app Android SSH e FTP per Linux

Come connettere e condividere dati tra due sistemi Linux

Tunneling e proxy SSH

Come modificare la porta SSH predefinita in Linux [correttamente e in modo sicuro]

Cambia la tua porta SSH in Ubuntu e Debian

Come modificare la porta SSH su Centos 7.x?

Come cambiare la porta SSH su Ubuntu?