OpenSSH: file di configurazione: differenze tra le versioni

nessun oggetto della modifica
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 11: Riga 11:


La sua struttura è molto intuitiva, però potrebbe valer la pena osservare alcune opzioni:
La sua struttura è molto intuitiva, però potrebbe valer la pena osservare alcune opzioni:
* <code>'''Port 22'''</code>
Di default viene aperta la porta 22. Però per questioni di sicurezza e per evitare che il nostro server SSH possa essere trovato da un portscan occasionale è consigliato cambiarla, possibilmente scegliendone una superiore alla 1024, poiché le porte fino alla 1024 sono riservate per servizi noti.
* <code>'''ListenAddress 0.0.0.0'''</code>
* <code>'''ListenAddress 0.0.0.0'''</code>
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
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
* <code>'''HostKey /etc/ssh/ssh_host_key'''</code>
* <code>'''HostKey /etc/ssh/ssh_host_key'''</code>
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
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
* <code>'''Protocol 2'''</code>
Indica il protocollo da utilizzare. Possono essere indicati 1 o 2 o entrambi, separandoli con la virgola (1,2), tuttavia non è consigliato permettere connessioni con il protocollo 1
* <code>'''UsePrivilegeSeparation yes'''</code>
* <code>'''UsePrivilegeSeparation yes'''</code>
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
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
Riga 27: Riga 23:
* <code>'''KeyRegenerationInterval 3600'''</code>
* <code>'''KeyRegenerationInterval 3600'''</code>
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
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
* <code>'''PermitRootLogin no'''</code>
In genere di default è impostato su yes, ma è altamente sconsigliato permettere ad un utente di effettuare il login remoto come root; è molto più sicuro fare in modo che si effettui un login come normal user per poi guadagnare i permessi di root.
* <code>'''IgnoreRhosts yes'''</code>
* <code>'''IgnoreRhosts yes'''</code>
Dichiara di ignorare i file <code>rhosts</code> e <code>shosts</code> per l’autenticazione.
Dichiara di ignorare i file <code>rhosts</code> e <code>shosts</code> per l’autenticazione.
Riga 46: Riga 40:
* <code>'''RSAAuthentication yes'''</code>
* <code>'''RSAAuthentication yes'''</code>
Indica se sono concessi i login con solo RSA
Indica se sono concessi i login con solo RSA
* <code>'''PasswordAuthentication yes'''</code>
Indica se utilizzare come metodo di accesso le password o meno
* <code>'''PermitEmptyPasswords no'''</code>
Non permette i login senza user o senza password
* <code>'''AllowUsers user1 user2'''</code>
* <code>'''AllowUsers user1 user2'''</code>
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
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
* <code>'''AllowGroups group1 group2'''</code>
* <code>'''AllowGroups group1 group2'''</code>
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
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
{|
|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>.
|}


==Configurazione di sshd per l'autenticazione mediante password==
==Configurazione di sshd per l'autenticazione mediante password==
3 155

contributi