OpenSSH: file di configurazione

SSH

Guide correlate



Warning.png ATTENZIONE
Ogni qualvolta si apportano modifiche ai file di configurazione /etc/ssh/ssh_config e /etc/ssh/sshd_config è necessario riavviare il demone ssh per renderle operative.


ssh

Si ricordi che come indicato nella documentazione la priorità nella dichiarazione dei diversi parametri è la seguente:

  1. riga di comando;
  2. file ~/.ssh/config.
  3. file /etc/ssh/ssh_config.

Premesso questo ecco l'elenco di alcuni parametri:

Port <Numero porta d'ascolto> Il valore di questa direttiva indica la porta che il client SSH userà in assenza di diversa indicazione da parte dell'utente tramite il parametro -p. Il valore predefinito è 22.
PasswordAuthentication yes Abilita o disabilita la possibilita del client di autenticarsi tramite l'uso di password, anche se il server supporta tale modalità. Evidentemente impostare questo parametro su no ha senso solo se dichiarato in /etc/ssh/ssh_config.
PubkeyAuthentication yes Il valore di questa keyword permette l'autenticazione mediante una coppia di chiavi, una pubblica, memorizzata sul server, ed una privata salvata sul client. Parametro valido solo per la versione 2 di SSH.
HostbasedAuthentication no
EnableSSHKeysign no
Questi parametri permettono di abilitare l'autenticazione di tipo hostbased se impostati entrambi a yes. Naturalmente è necessario che anche il server SSH sia configurato per supportare tale modalità.

sshd

  Nota
Dato che nel file /etc/ssh/sshd_config ci potrebbero essere dati sensibili (come la porta d'ascolto del Server SSH), forse, si vorrebbe proteggerlo dagli utenti locali. Quindi, basta che, dopo averlo salvato, scriviate da root chmod 600 /etc/ssh/sshd_config.


La sua struttura è molto intuitiva, però potrebbe valer la pena osservare alcune opzioni:

Port <Numero porta d'ascolto> Il valore di questa keyword indica la porta d'ascolto dell'OpenSSH Server, il cui valore predefinito è 22. Per questioni di sicurezza e per evitare che il nostro server SSH possa essere trovato da un portscan occasionale è consigliato cambiarla, scegliendone una superiore alla 1024 che non sia già usato da altri servizi locali o di Internet, poiché le porte fino alla 1024 sono riservate per servizi noti.
Protocol 2 Indica il protocollo da utilizzare. Possono essere indicati 1 o 2 o entrambi, separandoli con la virgola (1,2), tuttavia per motivi di sicurezza non è consigliato permettere connessioni con il protocollo 1.
PermitRootLogin no Il valore di questa keyword evita l'accesso come root da remoto con una sola autenticazione. Ciò garantisce maggior sicurezza alla vostra Linux-Box poiché, se si volesse accedere come root, sarebbe necessario prima autenticarsi come utente normale per poi autenticarsi come root tramite il comando su. In altre parole, con questa keyword impostata su no, chi volesse accedere come root da remoto, dovrebbe autenticarsi due volte anziché una.
PasswordAuthentication yes Il valore di questa keyword permette l'autenticazione mediante un semplice Login (Username e Password) da remoto. È consigliabile impostare su no per le macchine che devono essere accessibili da internet, ma NON prima di aver verificato che l'autenticazione alternativa, ad esempio tramite chiave pubblica, funzioni correttamente.
KerberosAuthentication no Il valore di questa keyword evita che la password fornita mediante l'autenticazione tramite password sia convalidata dal KDC (Kerberos Key Distribution Center).
PermitEmptyPasswords no Il valore di questa keyword evita che l'autenticazione mediante un semplice Login remoto avvenga senza la richiesta di una password se la keyword PasswordAuthentication è impostata sul yes.
ChallengeResponseAuthentication no Il valore di questa keyword non permette l'autenticazione mediante richieste-risposte ben precise fra il server ed il client SSH.
PubkeyAuthentication yes Il valore di questa keyword permette l'autenticazione mediante una coppia di chiavi, una pubblica, memorizzata sul server, ed una privata salvata sul client. Parametro valido solo per la versione 2 di SSH.
AuthorizedKeysFile <File chiavi pubbliche> Il valore di questa keyword è il nome del file in cui vengono memorizzate le chiavi pubbliche degli utenti remoti che servono per verificare se una di queste derivi dalla chiave privata memorizzata dal client SSH che cerca di effettuare una connessione SSH utilizzando un'autenticazione a chiave pubblica. Logicamente, tale keyword viene considerata soltanto se la keyword PubkeyAuthentication è impostata su yes. Il valore di tale keyword deve contenere il path assoluto o relativo di questo file compreso il nome stesso (il valore di default è .ssh/authorized_keys). Normalmente, il path assoluto si usa quando il gestore del Server vuole tenere sott'occhio un unico file (che può anche essere memorizzato, per motivi di sicurezza, su un'altra macchina); mentre il path relativo alla home directory di ogni utente remoto viene, normalmente, usato per far sì che ogni utente gestisca lui stesso il file mettendo una o più delle sue chiavi pubbliche.
GSSAPIAuthentication no Il valore di questa keyword non permette l'autenticazione utilizzando l'API GSSAPI.
HostbasedAuthentication no Questo parametro permette di abilitare l'autenticazione di tipo hostbased se impostato a yes. Si ricordi che oltre alla modifica di questo parametro sono necessarie altre operazioni al fine di rendere effettivamente operativa questa modalità.
Ciphers aes256-cbc,aes256-ctr,3des-cbc Il valore di questa keyword permette di scegliere quali algoritmi simmetrici verranno usati per cifrare i dati trasferiti. Siccome l'utente del client SSH o il client stesso possono decidere quale sarà l'algoritmo simmetrico da utilizzare per l'intera sessione di lavoro, conviene "obbligare" l'utente o il client SSH a scegliere gli algoritmi che garantiscono la massima sicurezza con un occhio di riguardo alla velocità di trasferimento dei dati fra il server ed il client (e viceversa).
ClientAliveInterval 60 Il valore di questa keyword imposta il numero di secondi dopo i quali, se da un client SSH remoto non viene inviato al server SSH alcun dato, tale server invia un messaggio di verifica, nel canale criptato, dell'ancora esistenza del client (detto alive message) ed aspetta una risposta. Se tale risposta non arriva, interviene la keyword ClientAliveCountMax.
ClientAliveCountMax 3 Il valore di questa keyword indica quante volte mandare un alive message, sempre nel canale criptato, al client SSH che non risponde. Se, dopo l'ultima richiesta "di vita", il client SSH non risponde, il server SSH termina la connessione con quel client. Quindi, impostando correttamente i valori delle keyword ClientAliveInterval e ClientAliveCountMax si evita il sovraccarico del vostro server (con un risparmio delle sue risposte) impostando una disconnessione automatica del client da parte del Server ogni 180 (60·3) secondi.
TCPKeepAlive no Il valore di questa keyword non permette di mandare dei TCP keepalive message per verificare se la rete è caduta o se il client SSH remoto è andato in crash. Poiché i TCP keepalive message non vengono mandati nel canale criptato e possono contenere delle informazioni sensibili, si preferisce disabilitare questa tecnica di analisi sullo stato delle connessioni SSH usufruendo delle keyword ClientAliveInterval e ClientAliveCountMax per eliminare le connessioni SSH non più utilizzate.
Subsystem subname subcommand Il valore di questa keyword permette di configurare un sottosistema esterno, come un server FTP, da avviare insieme al servizio SSH. Di base nessun sistema è indicato, tuttavia se l'utente lo desiderasse potrebbe dichiarare qualcosa di simile a Subsystem sftp /usr/lib/openssh/sftp-server.
ListenAddress 0.0.0.0 Di default è 0.0.0.0 e indica che il demone SSH è in ascolto su tutte le interfacce di rete configurate e tutti gli indirizzi IP associati. Potrebbe essere utile cambiarlo con l’indirizzo IP specifico sul quale ci si aspettiamo connessioni SSH
HostKey /etc/ssh/ssh_host_key Specifica la posizione che contiene le chiavi private di un host e può essere lasciato il valore di default. Possono essere specificati più file ripetendo HostKey e cambiando il file di destinazione
UsePrivilegeSeparation yes yes è il valore di default, e indica che per ogni login viene creato un processo figlio con i privilegi dell’user che ha effettuato il login per evitare tecniche di “privilege escalation” basati sui privilegi dei processi
ServerKeyBits 1024 Dice quanti bit devono essere utilizzati per la creazione della chiave di criptazione della connessione. Si preferisce di solito utilizzare 1024 che è un buon compromesso tra velocità ed efficacia di crittazione.
LoginGraceTime 120 Rappresenta il tempo massimo in secondi che intercorre tra il momento in cui viene stabilita la connessione e quello in cui avviene un login con successo.
KeyRegenerationInterval 3600 Rappresenta il massimo tempo in secondi che il demone aspetta prima di rigenerare una nuova chiave per la connessione corrente. Non deve essere eccessivamente elevato per evitare il cracking della chiave utilizzata nella sessione corrente
IgnoreRhosts yes Dichiara di ignorare i file rhosts e shosts per l’autenticazione.
IgnoreUserKnownHosts yes Dice al daemon di ignorare la lista degli hosts conosciuti presente in $HOME/.ssh/known_hosts durante la RhostsRSAAuthentication.
StrictModes yes Serve per proteggere i file nelle home degli user che di solito vengono lasciati “world-writable”.
X11Forwarding no Permette di disabilitare o abilitare il forwarding su X11. Se non abbiamo una GUI installata nel server (di solito è così) possiamo settarlo su no.
PrintMotd yes Abilita la visualizzazione di /etc/motd a login avvenuto.
IgnoreUserKnownHost yes Ignora l’utilizzo di ~/.ssh/known_host e per il login si basa unicamente su user e password
SyslogFacility AUTH
LogLevel INFO
Indicano il grado di prolissità dei log. I valori possibili sono QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3. Utilizzare un flag di DEBUG viola la privacy degli utenti e pertanto non è consigliato
RSAAuthentication yes Indica se sono concessi i login con solo RSA (valido solo per la versione 1.5 del protocollo).
AllowUsers user1 user2 Permette il login via SSH solo agli user specificati. Da notare che gli user sono separati da spazi vuoti, quindi niente virgole o punti o altro
AllowGroups group1 group2 Permette il login via SSH solo ai gruppi specificati. Da notare che i gruppi sono separati da spazi vuoti, quindi niente virgole o punti o altro




Guida scritta da: Ferdybassi 17:49, 22 dic 2009 (CET)   Debianized 20%
Estesa da:
Nydebianized 12:14, 12 set 2015 (CEST)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized