OpenSSH: differenze tra le versioni

10 104 byte aggiunti ,  20 set 2015
Nessun oggetto della modifica
Riga 197: Riga 197:


{{Box|Nota|Se si trasferisce manualmente la chiave pubblica facendo copia ed incolla tra due editor di testo si presti ATTENZIONE a non spezzare la chiave su più righe. È infatti obbligatoria l'indicazione di '''una sola chiave per riga'''.}}
{{Box|Nota|Se si trasferisce manualmente la chiave pubblica facendo copia ed incolla tra due editor di testo si presti ATTENZIONE a non spezzare la chiave su più righe. È infatti obbligatoria l'indicazione di '''una sola chiave per riga'''.}}
== Analisi di /etc/ssh/sshd_config ==
La sua struttura è molto intuitiva, però potrebbe valer la pena osservare alcune opzioni:
{|
|style="width:20em;vertical-align:top;"|''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 [http://www.iana.org/assignments/port-numbers servizi locali o di Internet], poiché le porte fino alla 1024 sono riservate per servizi noti.
|-
|style="width:20em;vertical-align:top;"|''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.
|-
|style="width:20em;vertical-align:top;"|''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'''.
|-
|style="width:20em;vertical-align:top;"|''PasswordAuthentication yes''
|Il valore di questa keyword permette l'autenticazione mediante un semplice Login (Username e Password) da remoto.
|-
|style="width:20em;vertical-align:top;"|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).
|-
|style="width:20em;vertical-align:top;"|''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''.
|-
|style="width:20em;vertical-align:top;"|''ChallengeResponseAuthentication no''
|Il valore di questa keyword non permette l'autenticazione mediante richieste-risposte ben precise fra il server ed il client SSH.
|-
|style="width:20em;vertical-align:top;"|''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.
|-
|style="width:20em;vertical-align:top;"|''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 è <code>.ssh/authorized_keys</code>). 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.
|-
|style="width:20em;vertical-align:top;"|''GSSAPIAuthentication no''
|Il valore di questa keyword non permette l'autenticazione utilizzando l'API GSSAPI.
|-
|style="width:20em;vertical-align:top;"|''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).
|-
|style="width:20em;vertical-align:top;"|''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''.
|-
|style="width:20em;vertical-align:top;"|''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&middot;3) secondi.
|-
|style="width:20em;vertical-align:top;"|''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.
|-
|style="width:20em;vertical-align:top;"|''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 <code>Subsystem sftp /usr/lib/openssh/sftp-server</code>.
|-
|style="width:20em;vertical-align:top;"|''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
|-
|style="width:20em;vertical-align:top;"|''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
|-
|style="width:20em;vertical-align:top;"|''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
|-
|style="width:20em;vertical-align:top;"|''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.
|-
|style="width:20em;vertical-align:top;"|''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.
|-
|style="width:20em;vertical-align:top;"|''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
|-
|style="width:20em;vertical-align:top;"|''IgnoreRhosts yes''
|Dichiara di ignorare i file <code>rhosts</code> e <code>shosts</code> per l’autenticazione.
|-
|style="width:20em;vertical-align:top;"|''IgnoreUserKnownHosts yes''
|Dice al daemon di ignorare la lista degli hosts conosciuti presente in <code>$HOME/.ssh/known_hosts</code> durante la RhostsRSAAuthentication.
|-
|style="width:20em;vertical-align:top;"|''StrictModes yes''
|Serve per proteggere i file nelle home degli user che di solito vengono lasciati “world-writable”.
|-
|style="width:20em;vertical-align:top;"|''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''.
|-
|style="width:20em;vertical-align:top;"|''PrintMotd yes''
|Abilita la visualizzazione di <code>/etc/motd</code> a login avvenuto.
|-
|style="width:20em;vertical-align:top;"|''IgnoreUserKnownHost yes''
|Ignora l’utilizzo di <code>~/.ssh/known_host</code> e per il login si basa unicamente su user e password
|-
|style="width:20em;vertical-align:top;"|''SyslogFacility AUTH''<br/>''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
|-
|style="width:20em;vertical-align:top;"|''RSAAuthentication yes''
|Indica se sono concessi i login con solo RSA
|-
|style="width:20em;vertical-align:top;"|''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
|-
|style="width:20em;vertical-align:top;"|''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
|}


== Strumenti complementari opzionali ==
== Strumenti complementari opzionali ==
2 853

contributi