Hai intenzione di consentire il servizio SSH al mondo? O solo per i membri del team in determinati luoghi? La mia risposta dipende un po 'dalla gravità della tua sfida.
In entrambi i casi, una cosa che dovresti fare è assicurarti che il server SSH non permetta il login della password per l'utente root.
- In / etc / ssh / sshd_config assicurati di non consentire mai un login di root tranne con una chiave SSH.
Nei miei sistemi, ho questa impostazione
PermitRootLogin without-password
ma ho notato che nella nuova versione di Ubuntu hanno
PermitRootLogin prohibit-password
Se leggi "man sshd_config" penso che significhi che questa nuova "password proibita" significa la stessa cosa ed è certamente più ovvia nel significato. Questo NON è predefinito su alcuni sistemi Linux, ma probabilmente dovrebbe essere.
Ora, riguardo al tuo problema. Il tuo sistema server solo alcuni utenti in determinati luoghi? Fai questo!
-
modifica /etc/hosts.deny e inserisci
ALL: ALL
Quindi modifica /etc/hosts.allow ed elenca i numeri IP o un intervallo che vuoi consentire di usare SSH. La notazione è un po 'confusa perché se si desidera consentire tutti i sistemi con numeri IP come 111.222.65.101 a 111.222.65.255, si inserisce una voce come questa in hosts.allow
ALL: 127.0.0.1
sshd: 111.222.65.
sshdfwd-X11: 111.222.65.
Questa è una forza bruta, una soluzione potente. Se i tuoi utenti possono essere enumerati in base all'intervallo IP, fallo!
Questa soluzione esisteva prima della creazione delle tabelle IP, è (penso) molto più facile da amministrare, ma non è buona come una soluzione di tabelle IP perché le routine delle tabelle IP individueranno i nemici prima dei programmi guidati dagli host. allow e hosts.deny. Ma questo è un fuoco sicuro, un modo semplice per risolvere molti problemi, non solo da SSH.
Nota il problema che crei per te stesso. Se vuoi aprire un server FTP, un web server, o qualcosa del genere, dovrai fare in modo che le voci siano consentite dagli host.
È possibile raggiungere lo stesso scopo di base giocando con iptables e il firewall. In un certo senso, questa è una soluzione preferita perché stai bloccando i nemici sul confine esterno. Ubuntu ha "ufw" (firewall non complicato) e "man ufw" ha un sacco di esempi.
Preferirei avere una bella interfaccia grafica per guadare questo, non devo farlo tutto il tempo. Forse altri possono dirci se ce n'è uno ora.
- Altri post qui suggeriti di utilizzare la chiave pubblica SSH solo per i tuoi utenti. Questo sicuramente ti aiuterà, al prezzo della complessità e della frustrazione per i tuoi utenti. Nel nostro laboratorio ci sono 15 computer. Gli utenti vanno tra i computer. Richiedere l'autenticazione della chiave SSH potrebbe causare grossi problemi perché le persone passano da un computer all'altro.
Un'altra fonte di frustrazione si verificherà quando alcuni utenti accumulano chiavi ssh diverse per vari server. Poiché ho le chiavi SSH per circa 12 diversi progetti, ora ssh non funziona perché ho troppe chiavi pubbliche (richiede "ssh -o PubkeyAuthentication = false" o la creazione di una voce nel file .ssh / config. È una PITA)
- Se devi lasciare il server aperto a SSH dal vasto mondo, allora dovresti usare una procedura di rifiuto per bloccare le posizioni che spesso tentano di accedere. Ci sono 2 programmi carini per questo, quelli che abbiamo usato sono denyhosts e fail2ban. Questi programmi hanno impostazioni che ti consentono di escludere i trasgressori, per una durata che ti piace.
Nei nostri sistemi Centos Linux, ho notato che hanno abbandonato il pacchetto denyhosts e offrono solo fail2ban. Mi sono piaciuti i denyhosts perché ha creato un elenco di intervalli fastidiosi di utenti / ip e quindi in hosts.deny, quell'elenco è stato notato. Abbiamo installato fail2ban invece ed è OK. La mia comprensione è che preferiresti bloccare questi cattivi utenti sul bordo esterno del server, quindi i blocker basati su tabelle IP, come fail2ban, sono in realtà migliori. Denyhosts funziona a livello secondario, dopo che i nemici hanno superato iptables, vengono quindi respinti dal demone sshd.
In entrambi questi programmi, è un po 'noioso portare gli utenti fuori dalla prigione se dimenticano la loro password e provare qualche volta ad accedere. È un po' difficile far rientrare la gente quando commette errori di accesso. Avresti intuito che ci sarebbe stata una GUI point-and-click in cui potresti semplicemente indicare e far rientrare la gente, ma non è così. Devo farlo solo ogni pochi mesi e dimenticare come, tra una volta e l'altra, ho scritto le mie istruzioni sulla mia pagina web link