GNU/Linux >> Linux Esercitazione >  >> Linux

5 Best practice per la sicurezza SSH Linux per proteggere i tuoi sistemi

Introduzione

Ridurre al minimo le vulnerabilità nel tuo protocollo Secure Shell (SSH) è fondamentale per garantire la sicurezza del tuo ambiente Linux.

In questo articolo, trattiamo la sicurezza SSH Linux più comune misure che puoi adottare per rendere i tuoi server più sicuri. Modificando la porta SSH predefinita, utilizzando coppie di chiavi e seguendo le altre best practice consigliate, puoi migliorare notevolmente la sicurezza generale del tuo sistema.

Che cos'è SSH?

Il protocollo Secure Shell (SSH) consente l'amministrazione remota del sistema crittograficamente protetta e il trasferimento di file su reti non sicure. Utilizzando più metodi di crittografia, SSH protegge la connessione tra un client e un server salvaguardando i comandi, l'autenticazione e l'output degli utenti da accessi e attacchi non autorizzati.

Il protocollo SSH è ora ampiamente utilizzato nei data center e da quasi tutte le principali aziende che utilizzano una qualsiasi delle varianti UNIX.

Quando si tratta di misure di sicurezza, è essenziale combinarle, applicarle a strati e non sceglierne solo una e affidarsi solo a quella soluzione.

Per ulteriori informazioni sulle connessioni SSH, consulta il nostro articolo su come funziona SSH.

1. Modifica la porta SSH predefinita

L'utilizzo di una porta non standard per la connessione SSH consente di evitare attacchi automatici al server. Aiuta anche a ridurre le possibilità che appaia sul radar di un hacker e lo rende un bersaglio meno ovvio.

Nota :La maggior parte degli hacker che cercano server OpenSSH punteranno alla porta SSH predefinita 22 .

In tal caso, gli script che stanno utilizzando cercheranno gli indirizzi IP solo sulla porta 22. Se il tuo server rientra in quel gruppo, ogni attacco automatico di questo tipo avrà un impatto sui tuoi file di registro. Di conseguenza, il carico sul tuo server potrebbe aumentare in modo sostanziale poiché molti exploit del server SSH sono in esecuzione 24 ore su 24 bussando alla porta di ogni server.

È importante notare che la modifica della porta SSH predefinita non migliora la sicurezza del server. Tuttavia, aiuta a tenere lontani gli attacchi automatici.

Come modificare il numero di porta

Prima di iniziare, devi decidere quale porta utilizzerai al posto della porta predefinita 22. Prima di prendere una decisione, dovresti considerare alcune cose:

Per cambiare la porta sul tuo server Linux , segui questi passaggi:

  1. Connettiti al server tramite SSH come faresti di solito.
  2. Passa all'utente root usando il comando su, che ti chiederà di inserire la password del server.
  3. Utilizza un editor di testo a tua scelta per modificare il file di configurazione sshd che si trova nel etc/ssh/ directory. Se non hai mai utilizzato un editor di testo all'interno del terminale, si consiglia di utilizzare Nano. Altrimenti, usa vi o vim poiché sono gli editor più comunemente usati oggi. Ti consigliamo di eseguire il backup del file originale prima di apportare modifiche.
  4. Esegui questo comando per modificare il file di configurazione:
nano /etc/ssh/sshd_config
  1. Nell'output di sshd_config individuare la riga che dice "Port 22 ."
  1. Cambia il numero di porta con il valore che preferisci. Assicurati che non sia presente "# ” all'inizio della riga.
  2. Esci dall'editor e conferma di voler salvare le modifiche.
  3. Affinché le modifiche abbiano effetto, riavvia il servizio sshd con questo comando:
service sshd restart
  1. Verifica che SSH sia in ascolto sulla porta specificata collegandoti ad essa.

Nota che ora dovrai specificare la porta durante la connessione poiché il tuo client utilizzerà sempre la porta SSH predefinita se non diversamente indicato.

Vantaggi

Sebbene la procedura per modificare la porta SSH predefinita non aumenti il ​​livello di sicurezza stesso, ti allontana dal radar delle scansioni più comuni. Un modo semplice per testarlo è lasciare che il tuo server funzioni per alcuni giorni con sshd in ascolto sulla porta predefinita e quindi cambiarlo in uno non standard. Confronta il numero di accessi non riusciti sul tuo server e lo vedrai diminuire notevolmente.

Utilizzando una porta non standard per SSH:

  • Eviti di essere visto da scansioni casuali.
  • È più difficile trovare il tuo server. La maggior parte degli attacchi eseguirà la scansione della porta predefinita o di alcune sue varianti, ma proseguirà una volta rifiutata la connessione.
  • Il demone SSH può prendersi una pausa poiché non riceverà richieste di connessione da attacchi con script. Il carico del server viene ridotto e il file di registro rimane pulito, risparmiando tempo per la revisione.
  • Non ricevi tanti avvisi per accessi non riusciti. Se stai utilizzando una porta non standard e qualcuno tenta ancora di accedere al tuo server, probabilmente significa che il tuo server è stato preso di mira in modo specifico e che l'allarme non proviene da un attacco con script.
  • Sei meno esposto ad essere violato a causa dei bug in sshd o delle chiavi private deboli.
  • La maggior parte degli hacker verrà respinta se vede che non stai utilizzando la porta predefinita. Sarà un segno che il server è adeguatamente protetto e che probabilmente sono state adottate anche altre misure di sicurezza, rendendo il tuo server un bersaglio indesiderabile.

Inconvenienti

Ci sono alcune precauzioni da tenere a mente prima di decidere di cambiare la porta predefinita per SSH. Gli svantaggi dell'esecuzione di una porta non standard possono significare che:

  • Chiunque dovrebbe essere in grado di connettersi al tuo server dovrà essere informato della modifica e dovrà iniziare a utilizzare la nuova porta.
  • Se utilizzi il monitoraggio in outsourcing per il tuo server, devi anche informarli della modifica. In caso contrario, potrebbero trattarlo come una potenziale minaccia che potrebbe portare a tempi di inattività del server.
  • Le regole del firewall relative al servizio SSH devono essere ispezionate e modificate in base alle modifiche apportate.

Alcuni di questi svantaggi probabilmente non si applicheranno al tuo caso d'uso, ma dovrebbero essere presi in considerazione. I vantaggi della modifica della porta superano gli svantaggi e si dimostrano un buon livello di sicurezza aggiuntivo per il tuo server.

2. Migliora la sicurezza SSH di Linux utilizzando coppie di chiavi

Uno dei metodi più sicuri per autenticare i client sui server consiste nell'utilizzare coppie di chiavi SSH . Password complesse possono essere sufficienti per mantenere il tuo server al sicuro, ma attacchi di forza bruta persistenti possono comunque violarle. Questo è il motivo per cui hai bisogno di un'ulteriore protezione SSH con coppie di chiavi.

Le chiavi SSH sono resistenti a tali attacchi e sono praticamente impossibili da decifrare. Una coppia di chiavi SSH è composta da due lunghe serie di caratteri, una chiave privata che è tenuto segreto e una chiave pubblica che può essere tranquillamente condiviso. Il loro scopo è simile alle password e ti consentono di stabilire automaticamente una sessione SSH senza la necessità di digitare una password.

Come generare una coppia di chiavi

Per impostare le chiavi SSH, dovrai generare una coppia di chiavi sul computer client che verrà utilizzata per la connessione al server. Per farlo:

  1. Avvia il terminale ed esegui l'utility keygen SSH , disponibile con lo strumento OpenSSH standard.
ssh-keygen –t rsa
  1. Otterrai il messaggio "Generazione coppia di chiavi RSA pubblica/privata". Se desideri salvare la chiave nella posizione predefinita, premi Enter quando richiesto. La chiave verrà salvata nella directory dell'utente principale, nel ~/.ssh directory. Per cambiare la posizione, digita il nuovo percorso. La raccomandazione è di attenersi alla posizione predefinita, quindi non è necessario apportare modifiche al client SSH. La chiave privata, o di identificazione, verrà salvata come id_rsa e la chiave pubblica corrispondente come id_rsa.pub .
  2. Facoltativamente, puoi inserire una passphrase . Se non desideri utilizzarne uno, premi Enter continuare. La passphrase fornisce un ulteriore livello di sicurezza crittografando la chiave privata sul computer locale. Per decifrare la passphrase, un hacker dovrà prima avere accesso al sistema, poiché la chiave privata non è esposta sulla rete. Anche in questo caso, ci vorrà del tempo per avere successo, consentendoti di cambiare la chiave utilizzata prima che l'hacker ottenga l'accesso ad altri server. Lo svantaggio è che dovrai inserirlo ogni volta che proverai a connetterti utilizzando quella chiave.

Il processo di generazione di una coppia di chiavi è completo.

La schermata finale sarà simile a questa:

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

8b:cd:0b:f7:38:4a:3f:ed:24:18:8d:54:34:2c:63:56 [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

| ..o. |

| . E.o |

| + . o |

| . = = . |

| ..S |

| = + = + |

| . o + o . |

| . + + o |

| .. |

| |

+-----------------+

Nota: Puoi rendere l'autenticazione/autorizzazione ancora più sicura creando chiavi a 4096 bit più grandi invece dei 2048 bit predefiniti. Per farlo, aggiungi –b 4096 al ssh-keygen comando. Sarà simile a questo:

ssh-keygen -t rsa -b 4096

Copiare una chiave pubblica

Per utilizzare la coppia di chiavi che hai creato sulla tua macchina per l'autenticazione SSH, devi posizionare la chiave pubblica sul server desiderato. Il modo più semplice per farlo è utilizzare lo strumento disponibile con OpenSSH:

ssh-copy-id

La procedura è semplice:

  1. Digita ssh-copy-id [email protected]_host_address .
  2. Se ti connetti per la prima volta a questo host, riceverai un messaggio di autenticità. Digita Yes per continuare.
  3. Inserisci la tua password quando richiesto e lo strumento copierà il contenuto di ~/.ssh/ id_rsa.pub chiave per il authorized_keys file sotto il ~/.ssh home directory sul server.

Nota: Nessun carattere sarà visibile durante la digitazione della password per motivi di sicurezza.

  1. Riceverai un messaggio:

La tua chiave pubblica è stata collocata sul server remoto e ora puoi accedervi senza inserire la password dell'account.

  1. Per verificare se l'autenticazione con le chiavi funziona, connettiti al tuo server con ssh [email protected]_host_address . In caso di successo, l'accesso verrà eseguito automaticamente. Nel caso in cui avessi precedentemente impostato una passphrase, dovrai inserirla prima di poter accedere al server.

Come funzionano le chiavi

In sostanza, una chiave pubblica non è una chiave Si comporta come un lucchetto che puoi mettere su un account SSH su un'altra macchina. Quando esegui l'utilità 'ssh-keygen', generi sia il lucchetto che la chiave che lo apre, id_rsa.pub e id_rsa rispettivamente.

Puoi fare tante copie del lucchetto se necessario, distribuiscili su qualsiasi server che ti piace e solo tu avrai la chiave giusta per sbloccarli tutti. Per questo è importante tenere al sicuro la chiave privata perché sblocca tutte le copie dei lucchetti hai distribuito.

Non importa dove metti la tua chiave pubblica fintanto che la chiave principale non viene compromessa. Poiché nessun altro possiede la chiave privata, questo metodo per l'autorizzazione e l'autenticazione è probabilmente il più sicuro e altamente raccomandato.

3. Disabilita l'accesso root SSH al server

Le distribuzioni di server Linux hanno l'accesso root esterno abilitato per impostazione predefinita. Questa può essere una grave minaccia alla sicurezza poiché gli hacker possono tentare di decifrare la password con attacchi di forza bruta. Si consiglia di disabilitare l'accesso come root e utilizzare un account normale e un su – comando per passare all'utente root.

Prima di disabilitare l'accesso come root, assicurati di aver aggiunto un account che possa ottenere l'accesso come root. Per farlo, segui i passaggi seguenti:

  1. Utilizza SSH per accedere al server come root.

2. Utilizzare un editor di testo per aprire il file di configurazione principale. Questa volta useremo vi editore.

vi /etc/ssh/sshd_config

3. Trova la riga che dice "PermitRootLogin_yes e cambia in PermitRootLogin_no . Potrebbe essere necessario scorrere alcune righe verso il basso per trovarlo.

4. È importante aggiungere l'account utente utilizzerai per accedere. Aggiungi un'altra riga con il nome utente in questione:AllowUsers your_username_here

5. Salva le modifiche apportate e poi esci l'editor di testo.

6. Riavvia il servizio SSH ma non chiudere ancora la sessione di root. Per Ubuntu e Debian usa sudo service ssh restart e per Fedora/CentOS usa il service ssh restart comando.

Apri una nuova finestra di terminale e verifica che ora puoi accedere come utente che hai aggiunto. Dopo aver confermato che funziona, esci la sessione di root attiva.

4. Disabilita gli accessi basati su password sul tuo server

Se si utilizzano chiavi SSH per l'autenticazione SSH, è possibile disabilitare del tutto l'autenticazione della password del server. Questo è un altro modo per proteggere il tuo server dagli attacchi di forza bruta e dai tentativi di decifrare la tua password. Prima di procedere, ricontrolla se l'autenticazione basata su chiave SSH funziona per l'account root sul server o per un account con sudo accesso.

Quando sei pronto, completa questi passaggi:

  1. Utilizza le chiavi SSH per accedere al server come root o con privilegi sudo.

2. Usa un editor di testo per aprire sshd_config file. Useremo vi:

vi /etc/ssh/sshd_config

3. Cerca la riga che dice PasswordAuthentication e cambia in PasswordAuthentication_no . Assicurati di decommentare la riga se il # è presente.

4. Salva le modifiche che hai apportato e quindi esci l'editor di testo.

5. Riavvia il servizio SSH per applicare le modifiche. Per Ubuntu/Debian usa sudo service ssh restart e per Fedora/CentOS usa il service ssh restart comando.

Congratulazioni, hai disabilitato con successo l'opzione per accedere tramite SSH utilizzando le password dell'account. SSH Daemon ignorerà semplicemente qualsiasi richiesta di autenticazione che non includa coppie di chiavi private/pubbliche.

5. Limita l'accesso SSH utilizzando iptables

Iptables è un'utilità Linux utilizzata per la configurazione delle regole del firewall e per il monitoraggio/filtro traffico in entrata e in uscita verso il tuo server. È incluso per impostazione predefinita nella maggior parte delle distribuzioni Linux.

Con iptables puoi definire regole che limitano o consentono il traffico per diversi tipi di servizi in base all'indirizzo IP, alla porta o al protocollo di rete e quindi migliorano sostanzialmente la sicurezza del tuo server. Nel nostro caso, imposteremo le regole del firewall per limitare il traffico SSH in entrata per tutti tranne un indirizzo IP o una sottorete.

In questo modo, il blocco della porta 22 non solo interromperà l'accesso non autorizzato ai tuoi server, ma potrà anche fermare o prevenire gli attacchi DDoS.

Durante questo passaggio, dovresti assicurarti di non bloccarti bloccando completamente il traffico SSH. Dovrai utilizzare solo pochi comandi per consentire a un indirizzo IP o una sottorete specifici per le connessioni SSH in entrata.

Nota: I comandi fanno distinzione tra maiuscole e minuscole.

Questa regola inserirà nella whitelist l'indirizzo IP che hai digitato. Sostituisci l'IP di esempio nel comando con il tuo IP. Puoi anche utilizzare una sottorete, ad esempio 10.10.10.0/24.

sudo iptables -A INPUT -p tcp -s 123.456.78.90 -dport 22 -j ACCEPT

Devi salvare le regole, in modo da non perderle dopo il riavvio:

sudo iptables-save

Se desideri visualizzare l'elenco di tutte le regole di iptables, puoi utilizzare il iptables –L comando. Per includere ulteriori dettagli come informazioni su pacchetti, byte e destinazioni, aggiungi –v al comando sopra. Aggiungi -n a tutto e l'output verrà visualizzato in formato numerico.

Nel caso in cui desideri ripristinare tutte le regole e iniziare da zero, utilizza il comando flush iptables –F . Questo cancellerà la configurazione di iptables che è utile se non sei sicuro che tutto sia impostato come desideri.

Parametri Iptables e Definizioni Opzioni

Ecco alcune spiegazioni per i parametri, le opzioni e i valori di iptables utilizzati negli esempi precedenti, oltre ad alcuni non menzionati prima.

Valore Descrizione
ACCETTO Consente il passaggio dei pacchetti
DROP Blocca i pacchetti
RITORNO Dice di saltare la catena corrente e riprendere alla regola successiva nella catena (chiamante) precedente
>Parametro Descrizione
-c contatori permette di impostare i contatori di pacchetti e byte di una specifica regola
-d destinazione – può essere un indirizzo, il nome di un host o un indirizzo, ecc.
-f frammento – applica la regola al secondo e ai frammenti che lo seguono
-g Vai a catena – afferma che l'azione continuerà in una catena specificata dall'utente
-i nell'interfaccia – indica il nome dell'interfaccia da cui provengono i pacchetti
-j salta – specifica l'azione se un pacchetto corrisponde alla regola
-o interfaccia esterna – il nome dell'interfaccia di un pacchetto in uscita
-p protocollo – qualsiasi protocollo disponibile come SSH, TCP, UDP e FTP
-s fonte – può essere un indirizzo, il nome di un host o un indirizzo, ecc.
Catena Descrizione
INGRESSO Controlla i pacchetti in arrivo
AVANTI Inoltra i pacchetti in arrivo al tuo server ma destinati a un altro posto
USCITA Filtra i pacchetti in uscita dal tuo server
Opzione Descrizione
-A aggiungi aggiunge una (o più) regole della catena selezionata
-C controlla – verifica la presenza di una regola che corrisponda ai criteri nella catena selezionata
-D elimina – elimina solo una regola dalla catena selezionata
-F colore – elimina tutto regole di iptables definite
-io inserisci – inserisci una regola nella catena selezionata
-L elenco – visualizza le regole della catena selezionata
-n numerico – mostra l'indirizzo IP/nome host e il valore restituito in un formato numerico
-N nuova catena crea una nuova catena definita dall'utente
-v prolisso – utilizzato in combinazione con -L per fornire informazioni aggiuntive
-X cancella catena elimina la catena definita dall'utente

Conclusione, sicurezza SSH e best practice di rafforzamento

Che tu stia creando un nuovo server o una macchina virtuale, è buona norma implementare più livelli di sicurezza all'interno del tuo ambiente. Le aziende di solito desiderano configurare la propria infrastruttura il prima possibile, ma le misure di sicurezza necessarie devono essere applicate fin dall'inizio.

Se utilizzi i metodi di sicurezza SSH Linux sopra elencati, dovresti essere in grado di evitare le comuni minacce alla sicurezza nel cloud.

Rendi difficile la penetrazione degli hacker nei tuoi server e limita eventuali danni. Assicurati di implementare quante più best practice possibili prima di rendere disponibile il tuo server sulla rete.

Non dimenticare di controllare il nostro elenco regolarmente aggiornato dei migliori blog sulla sicurezza informatica che dovresti seguire per tenerti aggiornato su tutte le ultime tendenze.


Linux
  1. Scansiona la tua sicurezza Linux con Lynis

  2. Best practice per la sicurezza di OpenSSH

  3. Come modificare la porta SSH in Linux

  4. Sicurezza Linux:proteggi i tuoi sistemi con fail2ban

  5. 13 tutorial sulla sicurezza di Linux

11 modi migliori per proteggere il tuo server SSH

Proteggi la tua rete Linux con firewall-cmd

Come utilizzare Port Knocking per proteggere il servizio SSH in Linux

Utilizzo di SSH Port Forwarding come strumento di sicurezza in Linux

10 suggerimenti utili per il rafforzamento SSH per proteggere il tuo server Linux

Gli 8 migliori telefoni sicuri Linux per la privacy e la sicurezza