Come configurare la sicurezza SSH Linux

Uno dei protocolli più utilizzati a livello di sicurezza per stabilire connessioni in ambienti UNIX è il protocollo SSH (Secure Shell) che ci offre una serie di funzionalità e caratteristiche speciali per proteggere i dati e le connessioni effettuate.

SSH è un protocollo che è stato sviluppato concentrandosi sulla sicurezza delle comunicazioni tra due sistemi attraverso il modello client/server e grazie al quale gli utenti possono connettersi a un host in remoto.
Una delle caratteristiche principali di SSH è che crittografa la sessione di connessione, il che impedisce a qualsiasi utente di ottenere password non crittografate.

Tipi di protezioneQuando si utilizza il protocollo SSH avremo i seguenti tipi di protezione:

  • Una volta stabilita la connessione iniziale, il client può verificare che si sta connettendo allo stesso server a cui si è precedentemente connesso
  • Il client invia le informazioni di autenticazione al server tramite crittografia a 128 bit
  • Tutti i dati inviati e ricevuti durante la sessione vengono trasferiti utilizzando la crittografia a 128 bit, che rende difficile la decrittografia e la lettura
  • Il client ha l'opportunità di inoltrare applicazioni X11 dal server, questa è una tecnica chiamata inoltro X11 che fornisce un mezzo sicuro per utilizzare applicazioni grafiche su una rete locale o esterna.

Ora, nei sistemi operativi Linux troviamo il file di configurazione SSH nel percorso /etc/ssh/ssh_config e grazie a questo file sarà possibile effettuare tutte le misure di sicurezza per le connessioni SSH.

INGRANDIRE

Per i sistemi macOS, questo file si trova nel percorso /private/etc/ssh/ssh_config e ha un collegamento simbolico a /etc/ssh/ssh_config per motivi di compatibilità.

Quando si modifica questo file, è necessario tenere presente quanto segue.

  • Le righe vuote e le righe che iniziano con '#' sono commenti
  • Ogni riga inizia con una parola chiave, seguita da argomento (s)
  • Le opzioni di configurazione possono essere separate da spazi o spazi facoltativi e un segno =
  • Gli argomenti possono essere racchiusi tra virgolette (") per specificare argomenti che contengono spazi

1. Come modificare il file ssh_config di Linux


Per modificare questo file al fine di stabilire i valori corretti, dobbiamo eseguire quanto segue con un editor:
 sudo nano / etc / ssh / ssh_config
Vedremo quanto segue:

INGRANDIRE

Il file ssh_config è organizzato per host e lì ogni host contiene impostazioni specifiche per quel particolare host, lì possiamo usare caratteri jolly come * per abbinare più nomi di host con una singola istruzione.
Alcuni dei parametri che possiamo usare in questo file sono:

OspiteLimita le istruzioni che sono solo per gli host che corrispondono a uno dei modelli forniti dopo la parola chiave.
IncontroLimita le dichiarazioni da applicare solo agli host che soddisfano i criteri specificati
IndirizzoFamigliaSpecifica quale famiglia di indirizzi utilizzare durante la connessione, gli argomenti validi sono: any, inet, inet6.
Modalità batchCon questo valore la richiesta della password sarà disabilitata, evitando così il blocco accidentale in una richiesta di password
BindAddressSpecifica di utilizzare l'indirizzo specificato sulla macchina locale come indirizzo di origine della connessione.
SfidaRispostaAutenticazioneIndica se utilizzare l'autenticazione challenge-response. Questo è principalmente un metodo legacy ed è stato sostituito da KbdInteractiveAuthentication
CheckHostIPDire a ssh di controllare ulteriormente l'indirizzo IP dell'host nel file unknown_hosts.
CifraSi riferisce alla crittografia che verrà utilizzata per crittografare la sessione nella versione 1 del protocollo.
cifrariSpecifica le cifre consentite per la versione 2 del protocollo in ordine di preferenza.

Successivamente, vedremo alcuni suggerimenti pratici per migliorare la sicurezza delle connessioni SSH a Linux e ottenere così le migliori prestazioni di accesso.

2. Come bloccare i file SSH di Linux


Il primo passo prima di modificare il file è assicurarsi che sia il file ssh_config che il file sshd_config abbiano il proprietario e l'utente configurati come root, questo perché è il super utente di Linux e nessuno meglio di questo è il proprietario.

Per questo eseguiamo quanto segue:

 sudo chown root: root / etc / ssh / sshd_config sudo chmod og-rwx / etc / ssh / sshd_config

3. Come confermare il protocollo SSH versione 2 Linux


La versione 2 di SSH ha un algoritmo di scambio di chiavi migliorato che non è vulnerabile alla falla di sicurezza nella versione 1, migliorando così la sicurezza generale delle connessioni, quindi è l'ideale per confermare che il nuovo protocollo 2 viene utilizzato al posto del protocollo 1 e per questo dobbiamo confermare la seguente riga nel file ssh_config:
 Protocollo 2

INGRANDIRE

Lì possiamo anche configurare il protocollo implicitamente tramite Ciphers, che imposterà automaticamente Protocollo su 2 per utilizzare Cifrari moderni, per questo convalidiamo la seguente riga appena sotto la riga Protocollo:

 Cifrari aes128-ctr, aes192-ctr, aes256-ctr

4. Come disabilitare le password vuote SSH Linux


È importante convalidare che ogni account SSH deve utilizzare una password durante l'accesso, bloccando le password vuote che consentirebbero un accesso semplice causando rischi per la sicurezza nel sistema, per convalidare ciò utilizzeremo la riga seguente o, se non esiste, lo aggiungerà inserendo il simbolo #:
 PermessoPassword vuote no

INGRANDIRE

5. Come disabilitare l'accesso root SSH Linux


Impedendo l'accesso all'utente root sarà possibile bloccare account specifici e non consentirne l'uso in tutto il sistema, le opzioni per PermitRootLogin includono "sì", "senza password", "solo comandi forzati" o "non". L'impostazione predefinita è "sì". Per interrompere completamente il login di root utilizzeremo la seguente riga:
 PermitRootLogin no

INGRANDIRE

6. Come impostare una nuova porta SSH Linux


Per impostazione predefinita, la porta assegnata per SSH è la 22, in modo che gli aggressori sappiano con certezza attraverso quale porta accederanno per eseguire i loro attacchi, quindi un buon metodo di sicurezza è cambiare questa porta predefinita e indicare solo agli utenti autorizzati la nuova porta.

Per questo, dobbiamo individuare la riga Port e aggiungere la seguente sintassi:

 Porta XXXXX

INGRANDIRE

7. Come limitare l'accesso a SSH Linux


Nel caso in cui l'accesso al server SSH sia composto da più utenti, è possibile applicare alcune restrizioni creando gruppi in cui questi utenti sono inclusi, questo è possibile aggiungendo parole chiave come:
 AllowUsers (Consenti accesso utente) AllowGroups (Consenti accesso gruppo) DenyUsers (Limita accesso utente) DenyGroups (Limita accesso gruppo)
Ad esempio, possiamo eseguire quanto segue nel file di configurazione:
 AllowUsers Solvetic test DenyGroups test

8. Come aggiornare il tempo di grazia di SSH Linux


Per impostazione predefinita, il tempo in cui un utente può rimanere inattivo senza accedere è di due minuti, al fine di prevenire connessioni non autorizzate al sistema, questa volta può essere modificata nella riga LoginGraceTime aumentando o diminuendo questo tempo:
 AccediGraceTime 1m

INGRANDIRE

9. Come creare un alias Linux SSH


All'interno delle configurazioni SSH è possibile specificare un alias, questi permettono di connettersi ad un server specifico attraverso una porta e utenti definiti, ad esempio, possiamo aggiungere quanto segue:
 Host dev HostName dev.solvetic.com Porta 3333 Utente Solvetic
In questo caso specifico dobbiamo accedere come segue:
 ssh [email protected] -p 3333

10. Autenticazione con chiavi sicure SSH Linux


ssh sarà molto più sicuro e utile se utilizzato con coppie di chiavi pubbliche/private per scopi di autenticazione, piuttosto che utilizzare password. Il file ssh_config può dichiarare una chiave specifica per un host specifico utilizzando la chiave IdentityFile, in questo caso inseriremo quanto segue:
 Host dev HostName dev.solvetic.com Porta 3333 User Solvetic IdentityFile ~ / .ssh / dev.solvetic.key
In questo caso la connessione sarebbe la seguente:
 ssh -i ~ / .ssh / dev.solvetic.key [email protected] -p 3333
Alcuni parametri aggiuntivi sono:

CompressioneLì possiamo usare valori come sì o no per abilitare la disabilitazione della compressione per un host.
LogLevelPermette di definire il livello di dettaglio nei log per il client ssh, le opzioni sono QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 e DEBUG3.
StrictHostKeyCheckingImposta una preferenza per l'aggiunta di host al file unknown_hosts.

Pertanto, abbiamo diverse opzioni per migliorare la sicurezza e la connettività SSH in Linux.

wave wave wave wave wave