GNU/Linux >> Linux Esercitazione >  >> Linux

7 Opzioni di sicurezza OpenSSH predefinite da modificare in /etc/ssh/sshd_config

Le opzioni OpenSSH sono controllate tramite il file /etc/ssh/sshd_config. Questo articolo spiega le 7 opzioni predefinite nel file sshd_config che dovresti modificare.

In sshd_config, le righe che iniziano con # sono commenti. Per quelle opzioni che utilizzano i valori predefiniti, il file sshd_config contiene una riga commentata con l'opzione e il suo valore predefinito.

Questo ci semplifica le cose, poiché possiamo vedere il nome dell'opzione OpenSSH e il valore predefinito senza dover cercare da qualche altra parte.

Ad esempio, il file sshd_config contiene la seguente riga commentata. Ciò indica che l'opzione PubkeyAuthentication contiene "yes" come valore predefinito.

$ grep -i pubkey /etc/ssh/sshd_config
#PubkeyAuthentication yes

Se desideri modificare questa impostazione, dovresti rimuovere il commento e modificare il valore (da sì a no) come mostrato di seguito.

$ vi /etc/ssh/sshd_config
PubkeyAuthentication no

Ho mostrato quanto sopra solo come esempio. Non è necessario modificare il valore predefinito dell'opzione PubkeyAuthentication, poiché è utile consentire l'autenticazione con chiave pubblica.

Non è necessario modificare nessuno dei valori predefiniti nel file sshd_config ad eccezione delle 7 opzioni menzionate in questo articolo.

1. Disabilita l'accesso root (PermitRootLogin)

Per impostazione predefinita puoi inviare ssh al server come root. È meglio non consentire a root di accedere direttamente al server. Invece, dovresti accedere al sistema come tuo account e quindi fare "su -" per accedere come root.

Se nella tua organizzazione sono presenti più amministratori di sistema e se tutti accedono al server direttamente come root, potresti non sapere quale amministratore di sistema ha effettuato l'accesso come root. Invece, se disabiliti l'accesso come root, gli amministratori di sistema sono obbligati ad accedere prima come loro account, prima che possano fare "su -", questo semplifica il controllo.

Aggiungi la seguente voce a sshd_config per disabilitare root per accedere direttamente al server.

$ vi /etc/ssh/sshd_config
PermitRootLogin no

2. Consenti solo utenti o gruppi specifici (AllowUsers AllowGroups)

Per impostazione predefinita, chiunque sia autenticato correttamente può accedere. Invece puoi limitare a quali utenti (o gruppi) consenti di accedere al sistema.

Ciò è utile quando hai creato diversi account utente sul sistema, ma desideri che solo pochi di essi eseguano l'accesso.

Ciò è utile anche quando si utilizza NIS, openLDAP (o qualche altro sistema esterno) per l'autenticazione. Ogni utente della tua azienda potrebbe avere un account su NIS, OpenLDAP ecc. Ma su un server specifico vuoi che solo pochi di loro accedano. Ad esempio, sul sistema di produzione si desidera che solo gli amministratori di sistema accedano.

Aggiungi la voce seguente al file sshd_config per consentire solo a utenti specifici di accedere al sistema. Nell'esempio seguente solo ramesh, john e jason possono accedere a questo sistema. I nomi utente devono essere separati da uno spazio.

$ vi /etc/ssh/sshd_config
AllowUsers ramesh john jason

Aggiungi la voce seguente al file sshd_config per consentire l'accesso solo agli utenti che appartengono a un gruppo specifico. Nell'esempio seguente solo gli utenti che appartengono al gruppo sysadmin e dba possono accedere al sistema.

$ vi /etc/ssh/sshd_config
AllowGroups sysadmin dba

3. Nega utenti o gruppi specifici (DenyUsers DenyGroups)

Invece di consentire utenti (o gruppi) specifici, puoi anche negare utenti o gruppi specifici.

Aggiungi la voce seguente al file sshd_config per negare a utenti specifici di accedere al sistema. Nell'esempio seguente cvs, apache, jane non può accedere a questo sistema. I nomi utente devono essere separati da uno spazio.

$ vi /etc/ssh/sshd_config
DenyUsers cvs apache jane

Aggiungi la voce seguente al file sshd_config per negare l'accesso agli utenti che appartengono a un gruppo specifico. Nell'esempio seguente gli utenti che appartengono agli sviluppatori e al gruppo qa non possono accedere al sistema.

$ vi /etc/ssh/sshd_config
DenyGroups developers qa

Nota:è possibile utilizzare la combinazione di tutte le directory Consenti e Nega. Viene elaborato in questo ordine:DenyUsers, AllowUsers, DenyGroups e infine AllowGroups

4. Modifica il numero di porta SSHD (porta)

Per impostazione predefinita, ssh viene eseguito sulla porta 22. La maggior parte degli aggressori verificherà se un server è aperto sulla porta 22 e utilizzerà casualmente la forza bruta per accedere al server utilizzando diverse combinazioni di nome utente e password.

Se modifichi la porta # in qualcosa di diverso, gli altri devono sapere esattamente quale porta usare per accedere al server usando ssh. L'esempio seguente utilizza la porta 222 per ssh.

$ vi /etc/ssh/sshd_config
Port 222

Dai tuoi log (/var/log/secure), se vedi molti accessi non validi usando ssh per account che non esistono sul tuo sistema, dall'
indirizzo IP che non riconosci, potrebbe essere un attacco di forza bruta. Se modifichi il numero di porta, questo tipo di accesso non valido ssh verrà interrotto.

Tieni presente che ciò causa pochi inconvenienti al tuo team che accede al sistema, poiché devono conoscere sia l'indirizzo IP che il numero di porta.

5. Modifica l'ora di accesso (LoginGraceTime)

Quando ssh su un server, hai 2 minuti per accedere. Se non accedi correttamente entro 2 minuti, ssh si disconnetterà.
2 minuti di tempo per accedere correttamente sono troppi. Dovresti considerare di cambiarlo in 30 secondi, o potrebbe essere 1 minuto.

Aggiungi la voce seguente al file sshd_config per modificare il tempo di grazia per l'accesso da 2 minuti a 1 minuto.

$ vi /etc/ssh/sshd_config
LoginGraceTime 1m

6. Limita l'interfaccia (indirizzo IP) all'accesso (ListenAddress)

Se sul server sono presenti più interfacce configurate con indirizzi IP diversi, potresti non volere che tutti accedano al server utilizzando tutti quegli indirizzi IP.

Supponiamo che tu abbia le seguenti 4 interfacce sul server:

  • eth0 – 192.168.10.200
  • eth1 – 192.168.10.201
  • eth2 – 192.168.10.202
  • eth3 – 192.168.10.203

Per impostazione predefinita, ssh ascolterà tutti gli indirizzi IP di cui sopra. Se desideri che gli utenti accedano solo utilizzando gli indirizzi IP 200 e 202, procedi come segue nel tuo sshd_config

$ vi /etc/ssh/sshd_config
ListenAddress 192.168.10.200
ListenAddress 192.168.10.202

7. Disconnetti SSH in assenza di attività (ClientAliveInterval)

Dopo aver effettuato correttamente l'accesso al sistema, potresti voler essere disconnesso quando non ci sono attività dopo x numero di minuti. Questo è fondamentalmente un timeout di inattività.

In Bash, puoi ottenerlo usando la variabile TMOUT.

In OpenSSH, questo può essere ottenuto combinando le opzioni ClientAliveCountMax e ClientAliveInterval nel file sshd_config.

  • ClientAliveCountMax – Indica il numero totale di messaggi di controllo inviati dal server ssh senza ricevere alcuna risposta dal client ssh. Il valore predefinito è 3.
  • ClientAliveInterval – Indica il timeout in secondi. Dopo x numero di secondi, il server ssh invierà un messaggio al client chiedendo una risposta. Il valore predefinito è 0 (il server non invierà un messaggio al client per la verifica).

Se vuoi che ssh client esca (timeout) automaticamente dopo 10 minuti (600 secondi), modifica il file sshd_config e imposta i due parametri seguenti come mostrato di seguito.

$ vi /etc/ssh/sshd_config
ClientAliveInterval 600
ClientAliveCountMax 0

Linux
  1. Comandi Linux:du e le opzioni che dovresti usare

  2. Come viene aggiornato /etc/motd?

  3. Come modificare l'ID macchina di un sistema in Oracle Enterprise Linux 7

  4. CentOS / RHEL:come recuperare dal file /etc/passwd cancellato

  5. Come verificare la sintassi del file /etc/ssh/sshd_config

PuTTY:modifica la directory di accesso SSH predefinita

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

/etc/passwd mostra l'utente in un gruppo, ma /etc/group no

Come modificare /tmp predefinito in /home/user/tmp

Differenza tra /etc/hosts e /etc/resolv.conf

Cambia la directory predefinita quando eseguo SSH sul server