GNU/Linux >> Linux Esercitazione >  >> Linux

Tutto ciò che devi sapere su Linux OpenSSH Server

La suite OpenSSH è una raccolta di strumenti robusti destinati a facilitare il controllo remoto e il trasferimento di dati tra sistemi in rete. È costituito da una serie di strumenti, inclusi SSH, SCP, SFTP, SSHD e molti altri. Ogni volta che usi ssh per accedere a una macchina remota, è molto probabile che sfrutti il ​​server OpenSSH. In questa guida, forniremo una discussione approfondita su come funziona OpenSSH e su come utilizzarlo correttamente per soddisfare le crescenti esigenze di sicurezza. Quindi, se vuoi saperne di più sulle complessità di OpenSSH, resta con noi in questa guida.

Immergiti nel server e nei servizi OpenSSH

Il server OpenSSH è al centro della comunicazione remota tra macchine Linux e/o BSD. Alcune delle sue caratteristiche degne di nota includono la crittografia del traffico, diversi potenti metodi di autenticazione, tunneling sicuro e sofisticate capacità di configurazione. Le sezioni seguenti forniscono una comprensione significativa dei servizi fondamentali e dei suggerimenti per la sicurezza.

I fondamenti di un server OpenSSH

Come suggerisce il nome, OpenSSH utilizza il protocollo SSH (Secure Shell) per fornire connessioni remote e servizi di trasferimento dati. Rimuove le vulnerabilità di sicurezza associate ai metodi legacy come il comando FTP di Linux e telnet. OpenSSH semplifica l'autenticazione degli utenti legittimi e la crittografia delle connessioni remote.

L'utilità principale della suite OpenSSH responsabile della gestione delle connessioni remote è OpenSSH Server o sshd. Ascolta costantemente le richieste in arrivo e imposta il tipo di connessione appropriato quando arriva una nuova richiesta.

Ad esempio, se un utente utilizza il programma client ssh per comunicare con il server, sshd imposterà una sessione di controllo remoto non appena l'autenticazione avrà esito positivo. Se l'utente utilizza invece SCP, sshd avvierà una sessione di copia sicura.

L'utente finale deve scegliere il meccanismo di comunicazione appropriato per la propria connessione. Ciò è facilitato da strumenti come ssh-add e ssh-keygen. Quando un utente si connette con successo alla macchina remota usando il comando ssh, viene accolto da una console basata su testo. Tutti i comandi immessi su questa console vengono inviati su un tunnel SSH crittografato per l'esecuzione sulla macchina remota.

Installazione e configurazione del server OpenSSH

La sezione seguente discuterà come installare il demone del server OpenSSH e configurarlo. Mostreremo le migliori opzioni di configurazione sia per uso personale che per scopi aziendali. Illustreremo anche le migliori pratiche per la configurazione e il rafforzamento di OpenSSH alla fine di questa sezione.

Come installare il server OpenSSH

- -

La maggior parte delle moderne distribuzioni Linux viene fornita con OpenSSH già installato. Tuttavia, se hai bisogno di installarlo manualmente, puoi farlo usando il seguente semplice comando.

$ sudo apt install openssh-server

Questo comando installerà il demone del server. Usa il comando seguente per installare il client OpenSSH nel tuo sistema.

$ sudo apt install openssh-client

Come configurare il server OpenSSH

OpenSSH supporta un gran numero di opzioni di configurazione per il controllo di cose come le impostazioni di comunicazione e le modalità di autenticazione. Il file sshd_config specifica i parametri di configurazione e contiene l'indirizzo di altri file di configurazione, inclusa una o più chiave host file e chiavi_autorizzate File. Si trova in /etc/ssh/ directory del tuo filesystem.

Prima di passare a modificare alcuni dei suoi parametri, ti suggeriamo di eseguire il backup della copia corrente di sshd_config file. Puoi farlo aprendo il tuo emulatore di terminale Linux preferito ed emettendo il seguente comando.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

In questo modo, se incasini il tuo sshd_config file, puoi sempre ripristinare la configurazione originale. Ora puoi procedere con la configurazione del tuo server ssh. Prima di ciò, suggeriamo ai lettori di testare la loro configurazione sshd efficace usando il semplice comando seguente.

$ sudo sshd -T

Ora che hai eseguito il backup di sshd_conf g e visualizzate le impostazioni predefinite, è ora di modificare il file di configurazione. Useremo l'editor di testo vim per aprire e modificare il nostro file di configurazione. Tuttavia, puoi utilizzare qualsiasi editor di testo Linux che desideri.

$ sudo vim /etc/ssh/sshd_config

Come dovresti notare, ci sono già una serie di opzioni preconfigurate. Tuttavia, la maggior parte di essi è commentata. Puoi attivarli decommentando la riga particolare che specifica il parametro delle opzioni. Rimuovi la sterlina "#" simbolo dall'inizio di una riga per decommentarla. Discutiamo alcune delle opzioni importanti di seguito.

  • Accetta Env

Questa opzione specifica quali variabili di ambiente inviate dal client possono essere copiate nell'ambiente remoto.

  • Famiglia di indirizzi

Definisce la famiglia di indirizzi IP per l'utilizzo da parte di sshd. Le tre opzioni disponibili sono:any, inet e inet6.

  • Consenti inoltro agente

Questa opzione definisce se l'inoltro di ssh-agent è consentito o meno.

  • AllowStreamLocalForwarding

Definisce se l'inoltro di socket di dominio Unix è consentito o meno.

  • AllowTcpForwarding

Definisce se l'inoltro TCP è consentito o meno.

  • Consenti utenti

Questa opzione può definire un elenco di nomi utente a cui è consentito l'accesso in base a uno schema. Tutti i nomi utente sono consentiti per impostazione predefinita.

  • Metodi di autenticazione

Questa opzione indica i metodi di autenticazione che un utente deve completare prima di ricevere l'accesso.

  • File AuthorizedKeys

Questa opzione specifica il file che contiene le chiavi pubbliche per l'autenticazione dell'utente.

  • Autenticazione ChallengeResponse

Se abilitata, questa opzione consente l'autenticazione challenge-response.

  • CrootDirectory

Specifica la directory principale, che verrà presentata agli utenti che si sono autenticati correttamente.

  • Cifre

Questa opzione definisce le crittografie consentite dal server OpenSSH. Ci sono una vasta gamma di opzioni disponibili.

  • Compressione

Specifica se la compressione è consentita e, in caso affermativo, in quale fase.

  • Nega utenti

Questa opzione può essere utilizzata per definire un elenco di nomi utente a cui è stato negato l'accesso in base a uno schema.

  • Comando Forza

Può essere utilizzato per forzare l'esecuzione di un determinato comando. Fa in modo che il server ignori qualsiasi comando fornito dal client ssh e qualsiasi cosa presente in ~/.ssh/rc .

  • Porte gateway

Questa opzione definisce se gli host remoti possono connettersi alle porte che sono state inoltrate per il lato client.

  • Autenticazione GSMAPI

Viene utilizzato per indicare se l'autenticazione utente basata su GSSAPI è consentita o meno.

  • Autenticazione basata su host

Questa opzione specifica se una chiave pubblica presente nella macchina client può autenticare un host sul server remoto.

  • HostbasedUsesNameFromPacketOnly

Questa opzione specifica se il server deve eseguire una ricerca inversa dei nomi per i nomi presenti in /.shosts , ~/.rhosts e /etc/hosts.equiv file.

  • Chiave host

Può essere utilizzato per definire un file che contiene una chiave host privata. Gli amministratori possono specificare più file chiave. quelli predefiniti sono /etc/ssh/ssh_host_dsa_key , /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key e /etc/ssh/ssh_host_rsa_key .

  • Algoritmi HostKey

Questa opzione definisce gli algoritmi della chiave host resi disponibili dal server ssh. OpenSSH supporta un gran numero di algoritmi per questo scopo.

  • Ignora Host

Dice al server di ignorare i .rhosts e .shosts file per RhostsRSAAuthentication e Autenticazione basata su host .

  • KbdInteractiveAuthentication

Questa opzione definisce se il server consente o meno l'autenticazione interattiva tramite tastiera.

  • Algoritmi Kex

Viene utilizzato per indicare gli algoritmi disponibili per lo scambio di chiavi ssh. OpenSSH supporta tutti i principali algoritmi di scambio di chiavi, inclusi Diffie Hellman e Elliptic Curves.

  • AscoltaIndirizzo

Definisce quali indirizzi locali deve ascoltare il demone sshd.

  • AccediGraceTime

Questa opzione definisce il tempo dopo il quale sshd disconnette l'utente se non riesce ad accedere correttamente.

  • Livello registro

Definisce il livello di dettaglio dei messaggi di log per sshd.

  • MAC

Questa opzione viene utilizzata per definire gli algoritmi MAC (Message Authentication Code) disponibili. Questi sono usati per proteggere l'integrità dei dati.

  • MaxAuthTries

Questa opzione definisce il numero massimo di volte in cui un utente può tentare di autenticarsi sul server.

  • Autenticazione tramite password

Definisce se un utente remoto può accedere utilizzando l'autenticazione basata su password.

  • PermitEmptyPasswords

Questa opzione specifica se gli utenti possono utilizzare una password vuota per gli accessi remoti.

  • PermitRootLogin

Questa opzione definisce se l'accesso come root è consentito o meno.

  • PermessoTTY

Questa opzione definisce se lo pseudo TTY è consentito o meno.

Decommentare la riga che contiene una delle opzioni precedenti e impostare il valore dell'opzione desiderato. La sezione seguente illustra alcune pratiche comuni di rafforzamento della sicurezza per OpenSSH.

Come rafforzare la sicurezza del server OpenSSH

Poiché OpenSSH funge da porta d'ingresso al tuo server, è estremamente importante rafforzarne la sicurezza. Prova a mantenere i seguenti suggerimenti per rendere l'accesso remoto ancora più sicuro.

1. Disabilita l'accesso come root

Non dovresti mai consentire l'accesso come root sul tuo server ssh poiché un'escalation dell'account root può compromettere l'intero server. Inoltre, l'account utente root è costantemente preso di mira da utenti malintenzionati. Quindi, è meglio creare un utente normale e consentirgli le autorizzazioni sudo. Puoi disabilitare l'accesso come root impostando il valore di PermitRootLogin al n.

PermitRootLogin no

2. Limita i tentativi di autenticazione

Gli amministratori devono limitare il numero di tentativi di accesso da host remoti per evitare tentativi di accesso forzati. L'ascesa di vasti eserciti di bot ha reso questo più importante che mai. Utilizzare l'opzione MaxAuthTries per impostare il numero di tentativi di autenticazione consentiti sul server. Molti amministratori considerano tre un valore accettabile per questa opzione. Tuttavia, puoi impostarlo in base ai tuoi standard di sicurezza.

MaxAuthTries 3

3. Riduci il tempo di grazia per l'accesso

Un altro modo per prevenire i bot automatizzati è ridurre il tempo di grazia per l'accesso. Questa è la quantità di tempo entro la quale un utente deve autenticarsi correttamente dopo la connessione al server. sshd_config file definisce questo valore in secondi.

LoginGraceTime 20

4. Disattiva l'autenticazione con password

Dovresti consentire agli utenti di accedere al server solo utilizzando l'autenticazione basata su chiave. Quindi, assicurati di disabilitare lo schema di autenticazione basato su password. Puoi farlo impostando il valore di PasswordAuthentication al n.

PasswordAuthentication no

È anche una buona idea disabilitare le password vuote. Imposta il valore del campo PermitEmptyPasswords su no.

PermitEmptyPasswords no

5. Disattiva altri metodi di autenticazione

OpenSSH supporta alcuni metodi di autenticazione aggiuntivi diversi dall'autenticazione basata su chiave e password. Dovresti disabilitarli del tutto dopo aver impostato l'autenticazione basata su chiave e aver disabilitato l'autenticazione tramite password.

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

6. Disabilita l'inoltro X11

L'inoltro X11 viene utilizzato per visualizzare le applicazioni grafiche sul server sulla macchina host remota. Tuttavia, non è necessario per la maggior parte dei server aziendali. Quindi, disabilitalo se non hai bisogno di questa funzione.

X11Forwarding no

Dopo aver disabilitato l'inoltro X11, è necessario commentare tutti i riferimenti a AcceptEnv . Aggiungi semplicemente un hash(#) prima delle righe per commentarle.

7. Disattiva Opzioni Varie

Disattiva le seguenti opzioni utilizzate per il tunneling e l'inoltro se non ne hai bisogno per il tuo server.

AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

8. Disattiva banner SSH

Il banner dettagliato ssh è abilitato per impostazione predefinita e mostra le informazioni essenziali sul server. Gli hacker possono sfruttare queste informazioni per pianificare un attacco al tuo server. Quindi, è una buona idea disabilitare il banner ssh dettagliato.

DebianBanner no

Se questa opzione non è presente nel tuo sshd_config file, aggiungilo per disabilitare il banner.

9. Implementare l'elenco di indirizzi IP consentiti

Nella maggior parte dei casi, accederai al server remoto da una manciata di indirizzi IP noti. Puoi creare un indirizzo IP che consenta all'elenco di impedire ad altre persone di accedere al tuo server. Ciò riduce il rischio di una violazione del server, anche se le tue chiavi private sono state compromesse.

Tuttavia, dovresti prestare attenzione quando implementi l'elenco di indirizzi IP consentiti e astenersi dall'utilizzare indirizzi dinamici poiché cambiano molto frequentemente.

Per definire l'elenco di autorizzazioni, scopri prima l'indirizzo IP che stai attualmente utilizzando per connetterti al server OpenSSH. Puoi farlo eseguendo il seguente comando nel tuo terminale.

$ w

Prendere nota dell'indirizzo IP sotto l'etichetta "DA '. Assumiamo un indirizzo IP di esempio di 203.0.113.1 per il resto di questa guida. Ora apri il tuo file di configurazione ssh e usa AllowUsers direttiva di configurazione, come mostrato di seguito.

AllowUsers *@203.0.113.1

La riga precedente limiterà tutti gli utenti remoti a un indirizzo IP selezionato. Puoi cambiarlo in un intervallo di indirizzi IP usando la notazione Classless Inter-Domain Routing (CIDR), come illustrato di seguito.

AllowUsers *@203.0.113.0/24

10. Limita la shell degli utenti remoti

È sempre buona norma limitare le operazioni eseguite dall'utente remoto. Puoi farlo limitando la shell dell'utente remoto. OpenSSH consente più opzioni di configurazione per aiutare in questa attività. Ti mostreremo come limitare l'accesso della shell di un utente al solo SFTP utilizzando queste opzioni.

Per prima cosa, creeremo un nuovo utente chiamato mary usando /usr/sbin/nologin guscio. Ciò disabiliterà gli accessi interattivi per quell'utente ma fornirà comunque sessioni non interattive per eseguire operazioni come i trasferimenti di file.

$ sudo adduser --shell /usr/sbin/nologin mary

Questo comando crea l'utente mary con la shell nologin. Puoi anche disabilitare la shell interattiva per un utente esistente usando il comando seguente.

$ sudo usermod --shell /usr/sbin/nologin alex

Se provi ad accedere come uno degli utenti sopra indicati, la tua richiesta verrà rifiutata.

$ sudo su alex
This account is currently not available.

Tuttavia, puoi comunque eseguire azioni che non richiedono una shell interattiva utilizzando questi account.

Quindi, apri ancora una volta la tua configurazione sshd e usa ForceCommand internal-sftp e CrootDirectory direttiva per la creazione di un utente solo SFTP altamente restrittivo. Limiteremo l'utente alex per questo esempio. Inoltre, si consiglia vivamente di aggiungere eventuali blocchi di corrispondenza nella parte inferiore di sshd_config .

Match User alex
ForceCommand internal-sftp
ChrootDirectory /home/alex/

Chiudere il file di configurazione e verificare se il file di configurazione causa errori o meno. Puoi farlo eseguendo il seguente comando nel tuo emulatore di terminale Linux.

$ sudo sshd -t

Se tutto va bene, dovresti aver creato una configurazione robusta per l'utente alex. La sessione di accesso interattivo è disabilitata per questo utente e ha accesso solo alla home directory del suo account.

Pensieri finali

Poiché OpenSSH è parte integrante della sicurezza del tuo server remoto, è essenziale imparare come funziona. Ecco perché i nostri editori hanno presentato varie informazioni utili riguardanti il ​​server OpenSSH in questa guida. Gli argomenti includono come funziona OpenSSH, come leggere e modificare il file di configurazione e come implementare le migliori pratiche di sicurezza.

Speriamo di essere stati in grado di fornire le informazioni che stavi cercando. Aggiungi questa guida ai preferiti per riferimenti futuri. E non dimenticare di lasciare un commento se hai altre domande o suggerimenti su come rendere questa guida più utilizzabile.


Linux
  1. Tutto quello che devi sapere su Ubuntu 13.04

  2. Directory Linux tmp:tutto ciò che devi sapere

  3. Compressione file Linux:tutto ciò che devi sapere

  4. Permessi dei file Linux:tutto ciò che devi sapere

  5. Swappiness in Linux:tutto ciò che devi sapere

Tutto quello che devi sapere su Black Lab Linux

Tutto ciò che devi sapere su Linux Mint Distro

Tutto ciò che devi sapere sugli inode in Linux

Tutto ciò che è importante sapere su Hard Link in Linux

Tutto ciò che è importante sapere sull'UID in Linux

Tutto quello che c'è da sapere sulla directory /tmp di Linux