Come posso aumentare la sicurezza ssh? Posso richiedere sia una chiave che una password?


16

Ho una piccola rete di server e vorrei aumentare la sicurezza generale. Non ho abbastanza tempo / denaro / paranoia per configurare una VPN: qual è il modo di base per aumentare la sicurezza del mio sistema?

Una cosa potrebbe essere quella di richiedere agli utenti di inviare la propria chiave e immettere una password. Questo è un po 'difficile per google perché tutto ciò che riguarda "password chiave ssh" riguarda lo sshing senza password. :-)

Uno schema con cui ho sempre desiderato giocare è richiedere che le connessioni in entrata provengano solo da una whitelist di indirizzi IP dyndns. So che alcuni responsabili della sicurezza vomiterebbero al pensiero dell'idea, ma il fatto è che aggiungerebbe una complessità molto significativa per sfruttare una scatola.

Cosa pensi? Cos'altro c'è là fuori?


È inoltre possibile limitare l'elenco degli utenti a cui è consentito connettersi utilizzando le direttive AllowUsers o DenyUsers. Maggiori dettagli su questo post .
Fred,

Risposte:


8

L'accesso con password e chiave è uguale a "solo con chiave". Durante la creazione della chiave, viene richiesto di inserire la passphrase. Se lo lasci vuoto, non ti verrà chiesta una password. Se compili una passphrase, ti verrà chiesto ogni volta che vuoi accedere.

Se sei preoccupato per la sicurezza, prendi in considerazione alcuni di questi consigli menzionati trilioni di volte in questo forum:

  • Disabilita login ssh per root
  • Consentire l'accesso ssh solo da indirizzi IP definiti (iptables, hosts.allow, ...)
  • Sposta la porta ssh su un'altra porta (più oscurità che sicurezza, ma funziona)
  • Monitorare i tentativi di accesso stranieri e reagire di conseguenza
  • Mantieni il tuo sistema aggiornato

Ecc. Ecc.

Aggiornamento: fare riferimento alla risposta qui per sapere come richiedere sia una chiave pubblica che una password di sistema locale con un server OpenSSH.


Grazie per tutti i tuoi consigli, esamineremo quelli. se sono richiesti sia la chiave che la password, quindi se uno sfruttatore scopre una password (come se l'utente la utilizza altrove non sicuro), non può entrare senza la chiave e se lo sfruttatore ruba la chiave dalla macchina dell'utente , non possono entrare senza conoscere la password ... giusto?
John Bachir,

12
Non è lo stesso. Se è richiesta solo la chiave, il server non può applicare alcun criterio di sicurezza della password sulla chiave. Un utente negligente potrebbe avere una chiave privata non crittografata in giro sul client che rende vulnerabile il server in caso di furto della chiave.
200_successo

mkudlacek - non sapevo di hosts.allow prima - googling in giro, sembra che la mia idea di whitelist dyndns non sia poi così sciocca, penso che ci proverò.
John Bachir,

1
200_success - quindi è possibile richiedere sia una chiave che una password?
John Bachir,

Uso anche l'applicazione DenyHosts per aiutare a bloccare le persone che continuano a provare a entrare e a fallire. Un piccolo modo automatizzato proattivo per inserire nella lista nera le persone ..
James T Snell,

6

Un'idea che ho trovato interessante è il port knocking : fondamentalmente, per stabilire la connessione ssh, devi prima sondare una sequenza di altre porte, prima che il server ssh riconoscerà una richiesta di connessione. Se non viene utilizzata la sequenza corretta di porte, non vi è alcuna risposta, quindi sembra che non vi sia alcun server SSH in esecuzione. La sequenza di porte è personalizzabile e può essere condivisa con gli utenti previsti; tutti gli altri non sarebbero effettivamente in grado di connettersi.

Non ho provato questo da solo, ma da quello che ho sentito (che non è molto, in realtà) l'overhead è trascurabile e riduce notevolmente il tuo profilo di visibilità.


Andrei con questo se vuoi solo "aumentare la sicurezza generale" ma probabilmente dovresti provare a risolvere particolari problemi di sicurezza.
Stefan Thyberg,

Lo uso in tutti i siti in cui mi trovo ed è un imho molto efficace.
Sirex,

Non è la stessa cosa che avere una password più lunga di 4 caratteri?
John Bachir,

non proprio. Ci sono 65536 porte e 26 lettere. Inoltre hai una sequenza di colpi di qualsiasi lunghezza e puoi limitare i tentativi usando tecniche di firewall standard. Non è di per sé sicurezza, ma è bello avere.
Sirex,

bene quindi 8 o 12 caratteri più lunghi :-D
John Bachir,

3

Patch relative all'abilitazione diretta in SSH e molte discussioni rilevanti:

Questo può essere fatto anche senza modifiche avendo uno script di verifica della password combinato con l'uso ForceCommanddell'opzione di configurazione.

Infine, sebbene non esista alcun modulo, se si sposta l'autenticazione della chiave pubblica su PAM, sarà possibile richiedere entrambi i passaggi prima che PAM consideri l'autenticazione riuscita.


2

Basta usare

RequiredAuthentications publickey, password

in sshd_configse si utilizza sshd da ssh.com. Questa funzione non è disponibile in OpenSSH.


RequiredAuthenticationsè sicuramente un'estensione non standard di OpenSSH
Hubert Kario

Sai quali implementazioni sshd supportano questo?
John Bachir,

Il server Tectia SSH lo supporta. A proposito: usa @nameOfUser quando rispondono ai loro commenti, in questo modo verranno avvisati della risposta
Hubert Kario

Funzionalità simili sono supportate in OpenSSH dalla versione 6.2: serverfault.com/a/562899
Søren Løvborg

1

È inoltre possibile utilizzare password monouso per aumentare la sicurezza. Ciò consentirebbe agli utenti di accedere da un terminale non sicuro, che potrebbe avere un keylogger, se in precedenza avevano generato la password successiva. Inoltre, ci sono generatori di password che possono essere installati anche su vecchi telefoni Java MIDP, che porti sempre con te.


Sì, sul mio server personale utilizzo un token Yubikey oltre alla mia password. Il token genera una password singola. Entrambi sono tenuti ad autenticarsi. In alternativa, consento il bypass della coppia password / otp se esegui l'autenticazione con una chiave SSH. Yubikey è economico e ci sono molti software per integrarlo con Pam, il sistema di autenticazione estensibile di Linux.
Martijn Heemels, il

1

Consiglierei di non eseguire mai un servizio sshd, rdp o tali servizi di gestione senza alcuna restrizione IP. In effetti, suggerirei di limitare l'accesso a tali servizi agli amministratori che si connettono tramite VPN.


1

Per quanto riguarda la tua domanda originale su come richiedere sia una chiave che una password, se stai eseguendo RHEL o CentOS 6.3 questo è ora possibile. Le note sulla versione di RHEL 6.3 lo descrivono, si tratta di aggiungere questo al tuo sshd_config

RequiredAuthentications2 publickey,password

0

Sono pienamente d'accordo con 3molo. OpenSSH è il server SSH predefinito di Linux e Unix. Non abbiamo motivo di cambiarlo, soprattutto per motivi di sicurezza. La VPN dovrebbe essere la soluzione migliore, che può crittografare il nostro traffico e fornire l'autorizzazione della password in due passaggi.


0

Non so perché nessuno lo abbia menzionato, ma dovresti assicurarti di generare le chiavi più a lungo dei 1024 bit predefiniti che non sono più considerati sicuri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.