I modi migliori per proteggere il tuo server SSH

Oct 15, 2025
Privacy e sicurezza
Eny Setiyowati / Shutterstock.com

Proteggi la connessione SSH del tuo sistema Linux per proteggere il tuo sistema e i tuoi dati. Sia gli amministratori di sistema che gli utenti domestici devono rafforzare e proteggere i computer con connessione a Internet, ma SSH può essere complicato. Ecco dieci facili vincite rapide per proteggere il tuo server SSH.

Nozioni di base sulla sicurezza SSH

SSH sta per Shell sicuro . Il nome "SSH" viene utilizzato in modo intercambiabile per indicare il protocollo SSH stesso o gli strumenti software che consentono agli amministratori di sistema e agli utenti di effettuare connessioni sicure a computer remoti utilizzando tale protocollo.

Il protocollo SSH è un protocollo crittografato progettato per fornire una connessione sicura su una rete non sicura, come Internet. SSH in Linux è basato su una versione portatile di OpenSSH progetto. È implementato in un file modello classico client-server , con un server SSH che accetta connessioni da client SSH. Il client viene utilizzato per connettersi al server e a Schermo la sessione all'utente remoto. Il server accetta la connessione e esegue la sessione.

Nella sua configurazione predefinita, un server SSH ascolterà le connessioni in entrata su Transmission Control Protocol ( TCP ) porta 22. Poiché si tratta di una noto porto , è un obiettivo per attori della minaccia e bot dannosi .

Gli autori delle minacce lanciano bot che scansionano un intervallo di indirizzi IP alla ricerca di porte aperte. Le porte vengono quindi esaminate per vedere se ci sono vulnerabilità che possono essere sfruttate. Pensare: "Sono al sicuro, ci sono obiettivi più grandi e migliori di me per i cattivi a cui mirare", è un falso ragionamento. I bot non stanno selezionando obiettivi in ​​base a nessun merito; stanno metodicamente cercando sistemi che possono violare.

Ti candidi come vittima se non hai protetto il tuo sistema.

Attrito di sicurezza

L'attrito per la sicurezza è l'irritazione, di qualsiasi grado, che gli utenti e gli altri sperimenteranno quando si implementano le misure di sicurezza. Abbiamo una lunga memoria e possiamo ricordare di aver introdotto nuovi utenti a un sistema informatico e di averli sentiti chiedere con voce inorridita se veramente ha dovuto inserire una password ogni volta hanno effettuato l'accesso al mainframe. Quello, per loro, era un attrito per la sicurezza.

(Per inciso, l'invenzione della password è accreditata a Fernando J. Corbató , un'altra figura nel pantheon degli scienziati informatici il cui lavoro combinato ha contribuito alle circostanze che hanno portato alla nascita di Unix .)

L'introduzione di misure di sicurezza di solito comporta una qualche forma di attrito per qualcuno. Gli imprenditori devono pagare per questo. Gli utenti di computer potrebbero dover modificare le loro pratiche familiari o ricordare un altro set di dettagli di autenticazione o aggiungere passaggi aggiuntivi per connettersi correttamente. Gli amministratori di sistema avranno ulteriore lavoro da fare per implementare e mantenere le nuove misure di sicurezza.

Rafforzare e bloccare un sistema operativo simile a Linux o Unix può essere molto complicato, molto rapidamente. Quello che presentiamo qui è una serie di passaggi facili da implementare che miglioreranno la sicurezza del tuo computer senza la necessità di applicazioni di terze parti e senza scavare nel firewall.

Questi passaggi non sono l'ultima parola nella sicurezza SSH, ma ti faranno andare molto avanti rispetto alle impostazioni predefinite e senza troppi attriti.

Usa protocollo SSH versione 2

Nel 2006, il protocollo SSH è stato aggiornato dalla versione 1 alla versione 2 . È stato un aggiornamento significativo. Sono state apportate così tante modifiche e miglioramenti, soprattutto per quanto riguarda la crittografia e la sicurezza, che la versione 2 non è retrocompatibile con la versione 1. Per impedire le connessioni dai client della versione 1, è possibile stabilire che il computer accetterà solo le connessioni dai client della versione 2.

A tale scopo, modificare il file / etc / ssh / sshd_config file. Lo faremo spesso in questo articolo. Ogni volta che devi modificare questo file, questo è il comando da usare:

sudo gedit / etc / ssh / sshd_config

Aggiungi la riga:

Protocollo 2

E salva il file. Riavvia il processo del demone SSH. Ancora una volta, lo faremo spesso in questo articolo. Questo è il comando da usare in ogni caso:

sudo systemctl riavvia sshd

Controlliamo che la nostra nuova impostazione sia in vigore. Salteremo su una macchina diversa e proveremo a eseguire SSH sulla nostra macchina di prova. E useremo il -1 (protocollo 1) per forzare il ssh comando per utilizzare la versione del protocollo 1.

ssh -1 [email protected]

Ottimo, la nostra richiesta di connessione è stata rifiutata. Assicuriamoci di poter ancora connetterci con il protocollo 2. Useremo il -2 (protocollo 2) opzione per provare il fatto.

ssh -2 [email protected]

Il fatto che il server SSH richieda la nostra password è un'indicazione positiva che la connessione è stata stabilita e che stai interagendo con il server. In realtà, poiché i client SSH moderni utilizzeranno per impostazione predefinita il protocollo 2, non è necessario specificare il protocollo 2 finché il nostro client è aggiornato.

ssh [email protected]

E la nostra connessione è accettata. Quindi sono solo le connessioni del protocollo 1 più deboli e meno sicure che vengono rifiutate.

Evita la porta 22

La porta 22 è la porta standard per le connessioni SSH. Se usi una porta diversa, aggiunge un po 'di sicurezza attraverso l'oscurità al tuo sistema. La sicurezza attraverso l'oscurità non è mai considerata una vera misura di sicurezza, e ho inveito contro di essa in altri articoli. In effetti, alcuni dei bot di attacco più intelligenti sondano tutte le porte aperte e determinano quale servizio stanno offrendo, piuttosto che fare affidamento su un semplice elenco di porte e presumere che forniscano i servizi usuali. Ma l'utilizzo di una porta non standard può aiutare ad abbassare il rumore e il cattivo traffico sulla porta 22.

Per configurare una porta non standard, modifica il file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Rimuovere il cancelletto # dall'inizio della riga "Porta" e sostituire "22" con il numero di porta desiderato. Salva il file di configurazione e riavvia il demone SSH:

sudo systemctl riavvia sshd

Vediamo quale effetto ha avuto. Sull'altro nostro computer, useremo il ssh comando per connettersi al nostro server. Il ssh il comando utilizza per impostazione predefinita la porta 22:

ssh [email protected]

La nostra connessione è stata rifiutata. Riproviamo e specifica la porta 470, utilizzando l'opzione -p (porta):

ssh -p 479 [email protected]

La nostra connessione è accettata.

Filtrare le connessioni utilizzando i wrapper TCP

TCP Wrappers è facile da capire elenco di controllo degli accessi . Consente di escludere e consentire le connessioni in base alle caratteristiche della richiesta di connessione, come l'indirizzo IP o il nome host. I wrapper TCP dovrebbero essere usati insieme e non al posto di un firewall configurato correttamente. Nel nostro scenario specifico, possiamo rafforzare notevolmente le cose utilizzando i wrapper TCP.

I wrapper TCP erano già installati sulla macchina Ubuntu 18.04 LTS utilizzata per la ricerca di questo articolo. Doveva essere installato su Manjaro 18.10 e Fedora 30.

Per installare su Fedora, usa questo comando:

sudo yum installa tcp_wrappers

Per installare su Manjaro, usa questo comando:

sudo pacman -Syu tcp-wrappers

Sono coinvolti due file. Uno contiene l'elenco consentito e l'altro contiene l'elenco negato. Modifica l'elenco dei negati utilizzando:

sudo gedit /etc/hosts.deny

Questo aprirà il file gedit editor con il file di negazione caricato in esso.

Devi aggiungere la riga:

TUTTO TUTTO

E salva il file. Ciò blocca tutti gli accessi che non sono stati autorizzati. Ora dobbiamo autorizzare le connessioni che desideri accettare. Per farlo, devi modificare il file allow:

sudo gedit /etc/hosts.allow

Questo aprirà il file gedit editor con il file allow caricato al suo interno.

Abbiamo aggiunto il nome del daemon SSH, SSHD E l'indirizzo IP del computer a cui consentiremo di effettuare una connessione. Salva il file e vediamo se le restrizioni e le autorizzazioni sono in vigore.

Innanzitutto, proveremo a connetterci da un computer che non si trova in hosts.allow file:

La connessione viene rifiutata. Ora proveremo a connetterci dalla macchina all'indirizzo IP 192.168.4.23:

La nostra connessione è accettata.

Il nostro esempio qui è un po 'brutale: solo un singolo computer può connettersi. I wrapper TCP sono abbastanza versatili e più flessibili di così. Supporta nomi host, caratteri jolly e maschere di sottorete per accettare connessioni da intervalli di indirizzi IP. Sei incoraggiato a farlo controlla la pagina man .

Rifiuta richieste di connessione senza password

Sebbene sia una cattiva pratica, un amministratore di sistema Linux può creare un account utente senza password. Ciò significa che le richieste di connessione remota da quell'account non avranno password da controllare. Tali connessioni verranno accettate ma non autenticate.

Le impostazioni predefinite per SSH accettano richieste di connessione senza password. Possiamo cambiarlo molto facilmente e assicurarci che tutte le connessioni siano autenticate.

Dobbiamo modificare il tuo file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file finché non vedi la riga che legge con "#PermitEmptyPasswords no". Rimuovi l'hash # dall'inizio della riga e salvare il file. Riavvia il demone SSH:

sudo systemctl riavvia sshd

Usa chiavi SSH invece di password

Le chiavi SSH forniscono un mezzo sicuro per accedere a un server SSH. Le password possono essere indovinate, decifrate o forzato . Le chiavi SSH non sono aperte a questi tipi di attacchi.

Quando generi chiavi SSH, crei una coppia di chiavi. Una è la chiave pubblica e l'altra è la chiave privata. La chiave pubblica viene installata sui server a cui desideri connetterti. La chiave privata, come suggerisce il nome, è tenuta al sicuro sul tuo computer.

Le chiavi SSH consentono di effettuare connessioni senza password che sono, controintuitivamente, più sicure delle connessioni che utilizzano l'autenticazione tramite password.

Quando si effettua una richiesta di connessione, il computer remoto utilizza la propria copia della chiave pubblica per creare un messaggio crittografato che viene inviato di nuovo al computer. Poiché è stato crittografato con la tua chiave pubblica, il tuo computer può decrittografarlo con la tua chiave privata.

Il computer quindi estrae alcune informazioni dal messaggio, in particolare l'ID di sessione, lo crittografa e lo invia al server. Se il server è in grado di decrittografarlo con la sua copia della tua chiave pubblica e se le informazioni all'interno del messaggio corrispondono a quelle che il server ti ha inviato, si conferma che la tua connessione proviene da te.

Qui viene stabilita una connessione al server 192.168.4.11, da un utente con chiavi SSH. Notare che non viene richiesta una password.

ssh [email protected]

Le chiavi SSH meritano un articolo tutto per sé. Facilmente, ne abbiamo uno per te. Ecco come creare e installare chiavi SSH .

RELAZIONATO: Come creare e installare chiavi SSH dalla shell di Linux

Disattiva completamente l'autenticazione della password

Ovviamente, l'estensione logica dell'utilizzo delle chiavi SSH è che se tutti gli utenti remoti sono costretti ad adottarle, è possibile disattivare completamente l'autenticazione della password.

Dobbiamo modificare il tuo file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file fino a visualizzare la riga che inizia con "#PasswordAuthentication yes". Rimuovi l'hash # dall'inizio della riga, modificare il "sì" in "no" e salvare il file. Riavvia il demone SSH:

sudo systemctl riavvia sshd

Disabilita l'inoltro X11

L'inoltro X11 consente agli utenti remoti di eseguire applicazioni grafiche dal tuo server su una sessione SSH. Nelle mani di un attore di minacce o di un utente malintenzionato, un'interfaccia GUI può semplificare i loro scopi maligni.

Un mantra standard nella sicurezza informatica è che se non hai un motivo autentico per attivarlo, spegnilo. Lo faremo modificando il file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file fino a visualizzare la riga che inizia con "# X11 Inoltro no". Rimuovi l'hash # dall'inizio della riga e salvare il file. Riavvia il demone SSH:

sudo systemctl riavvia sshd

Imposta un valore di timeout di inattività

Se è stata stabilita una connessione SSH al computer e non è stata eseguita alcuna attività su di essa per un periodo di tempo, potrebbe rappresentare un rischio per la sicurezza. È possibile che l'utente abbia lasciato la scrivania e sia impegnato altrove. Chiunque altro passi dalla propria scrivania può sedersi e iniziare a utilizzare il proprio computer e, tramite SSH, il proprio computer.

È molto più sicuro stabilire un limite di timeout. La connessione SSH verrà interrotta se il periodo di inattività corrisponde al limite di tempo. Ancora una volta, modificheremo il tuo file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file finché non vedi la riga che inizia con "#ClientAliveInterval 0" Rimuovi l'hash # dall'inizio della riga, modificare la cifra 0 con il valore desiderato. Abbiamo utilizzato 300 secondi, ovvero 5 minuti. Salvare il file e riavviare il demone SSH:

sudo systemctl riavvia sshd

Imposta un limite per i tentativi di password

La definizione di un limite al numero di tentativi di autenticazione può aiutare a contrastare l'ipotesi della password e gli attacchi di forza bruta. Dopo il numero designato di richieste di autenticazione, l'utente verrà disconnesso dal server SSH. Per impostazione predefinita, non ci sono limiti. Ma questo è rapidamente risolto.

Di nuovo, dobbiamo modificare il tuo file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file fino a visualizzare la riga che inizia con "#MaxAuthTries 0". Rimuovi l'hash # dall'inizio della riga, modificare la cifra 0 con il valore desiderato. Ne abbiamo usati 3 qui. Salva il file quando hai apportato le modifiche e riavvia il daemon SSH:

sudo systemctl riavvia sshd

Possiamo testarlo tentando di connetterci e inserendo deliberatamente una password errata.

Si noti che il numero MaxAuthTries sembrava essere uno in più rispetto al numero di tentativi consentiti all'utente. Dopo due tentativi sbagliati, il nostro utente di prova viene disconnesso. Questo era con MaxAuthTries impostato su tre.

Disabilita gli accessi root

È una cattiva pratica accedere come root sul tuo computer Linux. È necessario accedere come un normale utente e utilizzare sudo per eseguire azioni che richiedono privilegi di root. Inoltre, non dovresti permettere a root di accedere al tuo server SSH. Solo gli utenti regolari dovrebbero essere autorizzati a connettersi. Se devono eseguire un'attività amministrativa, dovrebbero utilizzare sudo pure. Se sei costretto a consentire a un utente root di accedere, puoi almeno forzarlo a utilizzare le chiavi SSH.

Per l'ultima volta, dovremo modificare il tuo file di configurazione SSH:

sudo gedit / etc / ssh / sshd_config

Scorri il file finché non vedi la riga che inizia con "#PermitRootLogin forbit-password" Rimuovi l'hash # dall'inizio della linea.

  • Se vuoi impedire a root di accedere del tutto, sostituisci "password proibita" con "no".
  • Se vuoi consentire a root di accedere ma costringerlo a usare le chiavi SSH, lascia "proibisci password" al suo posto.

Salva le modifiche e riavvia il daemon SSH:

sudo systemctl riavvia sshd

Il passo definitivo

Ovviamente, se non hai affatto bisogno di SSH in esecuzione sul tuo computer, assicurati che sia disabilitato.

sudo systemctl stop sshd
sudo systemctl disabilita sshd

Se non apri la finestra, nessuno può salire.

The Best Ways To Secure Your SSH Server

How To Secure Linux SSH Server

How To Secure And Protect SSH Server

How To Secure A Server

Fail2ban Tutorial | How To Secure Your Server

How To Secure A Linux Server With UFW, SSH Keygen, Fail2ban & Two Factor Authentication

🔒 Securing SSH Server: Configuration

Beginners Guide To SSH


Privacy e sicurezza - Articoli più popolari

Che cos'è un account Reddit usa e getta e come posso crearne uno?

Privacy e sicurezza May 17, 2025

Su Reddit, ogni post e commento che lasci è legato al tuo account utente. Di solito va bene, ma cosa succede se desideri pubblicare in modo anonimo? Ecco a cosa serve un account us..


Chiavi Windows 10 economiche: funzionano?

Privacy e sicurezza Oct 30, 2025

Microsoft charges $200 per un codice Product Key di Windows 10 Professional. Ma, con una rapida ricerca online, puoi trovare siti Web che promettono chiavi di Windows..


Come recuperare la tua password Instagram dimenticata

Privacy e sicurezza Jun 28, 2025

Se non utilizzi un file gestore di password , quelle password complesse possono essere piuttosto difficili da ricordare. Se hai dimenticato la tua password Instagram,..


Come rimuovere Google dalla tua vita (e perché è quasi impossibile)

Privacy e sicurezza Apr 16, 2025

Google può sembrare piuttosto pervasivo e, se sei preoccupato per la tua privacy, questo potrebbe preoccuparti. Quindi, se vuoi sbarazzarti di tutti i tuoi servizi Google, ecco com..


Come disattivare il microfono sulla videocamera Netgear Arlo Pro

Privacy e sicurezza Jun 2, 2025

La videocamera Arlo Pro non solo registra video quando rileva il movimento, ma può anche acquisire l'audio. Tuttavia, se questa non è una funzionalità di cui trarrai davvero vant..


Gli svantaggi del software open source

Privacy e sicurezza Jan 3, 2025

CyanogenMod è morto , ucciso dalla casa madre Cyanogen. La comunità sta tentando di raccogliere i pezzi e creare un nuovo progetto, LineageOS, basato sul codice. Ma ci..


Perché non puoi essere infettato semplicemente aprendo un'e-mail (più)

Privacy e sicurezza Jul 12, 2025

CONTENUTO UNCACHED I virus delle email sono reali, ma i computer non vengono più infettati solo aprendo le email. È sicuro aprire semplicemente un'e-mail per visualizzarla, sebb..


Come consentire alle app di comunicare tramite Windows Firewall

Privacy e sicurezza Mar 1, 2025

CONTENUTO UNCACHED Windows Firewall agisce come una barriera tra il tuo computer e il resto del mondo Internet, impedendo l'ingresso di traffico di rete indesiderato e impedendo a..


Categorie