La preoccupazione maggiore sarebbe che le persone accedano come amministratore del computer su SSH. Questo può essere fatto con la forza bruta se si dispone di una password facile da indovinare.
Ci sono diverse misure di sicurezza che puoi prendere, di seguito alcune di quelle che prendo sempre quando installo un server SSH e altre.
Utilizzare una password complessa, composta da almeno (diciamo) 10 lettere maiuscole e minuscole, numeri e altri caratteri.
Porta gli utenti nella loro home directory. Gli utenti imprigionati non saranno in grado di accedere / modificare i file che si trovano al di fuori della loro home directory. Pertanto, l'utente non sarà in grado di accedere / modificare i file di sistema chiave. Molti tutorial sono disponibili online su come imprigionare un utente. Molti di loro usano JailKit . Un esempio di tale tutorial può essere trovato qui . In alternativa, puoi anche usare la ChrootDirectory
direttiva nativa del server OpenSSH . Un esempio di tutorial su questo può essere trovato qui .
Installa Fail2Ban . Fail2Ban è un programma che verifica la presenza di voci errate nei registri di autenticazione. Quando viene raggiunto un certo limite, viene aggiunto un blocco firewall per quel determinato IP per un periodo di tempo prestabilito. Ci sono anche diversi tutorial online trovati su come impostare Fail2Ban con SSH, un esempio potrebbe essere questo . La homepage di Fail2Ban contiene anche alcuni HOWTO completi e gradevoli.
Disabilita l'accesso root tramite SSH. Questo è l'utente che ha accesso a quasi tutti i file sul tuo sistema, pertanto si consiglia di disabilitare il suo accesso alla shell. Nelle ultime versioni di Ubuntu, l'utente root viene automaticamente disabilitato ma non fa male a disabilitare comunque l'accesso SSH. Questo viene fatto modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e assicurati che non ci siano # davanti.
#PermitRootLogin no
Utilizzare una porta non standard (ad es. Non 22) Questo avviene tramite il port forwarding nel router (ad es. 16121 -> 22 anziché 22 -> 22) o facendo ascoltare il daemon SSH su una porta diversa. Ciò renderà il servizio SSH meno facilmente rilevabile per gli utenti malintenzionati. Questo viene fatto modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e cambia 22 in qualunque porta desideri. Non dimenticare di inoltrare la porta corretta nel router in seguito.
Port 22
Non utilizzare le password per accedere. Oltre alle password, SSH consente anche l'accesso mediante l'uso di chiavi private. Ciò significa che sul computer è memorizzata una chiave su cui si accede a SSH della macchina SSH. Quando viene tentata una connessione, il client SSH utilizza la chiave per accedere al server anziché tramite l'autenticazione con password. Le chiavi di autenticazione sono molto più crittograficamente crittografiche delle password e quindi non sono così facili da decifrare. Ci sono anche diversi tutorial online trovati su come impostare l'autenticazione basata su chiave con SSH, un esempio potrebbe essere questo . (Se si SSH da Windows con PuTTY, controllare questo collegamento per un howto PuTTY.) Dopo aver impostato l'autenticazione basata su chiave, è possibile disabilitare l'autenticazione della password modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e assicurati che non ci siano # davanti.
#PasswordAuthentication no
Facoltativamente, come menzionato da @ Linker3000 nel suo commento, è possibile impostare un tunnel VPN sul PC a cui si desidera accedere tramite SSH e quindi impedire l'accesso alla rete non locale sul server SSH. In questo modo, nessun dispositivo esterno senza una connessione VPN sarà in grado di accedere al tuo server SSH. Questo può essere fatto negando TUTTI gli host e quindi consentendo l'accesso solo agli IP della rete locale. Questo viene fatto modificando /etc/hosts.deny
e aggiungendo quanto segue:
sshd: ALL
e /etc/hosts.allow
aggiungere quanto segue:
sshd: 192.168.1.*
dove l'IP corrisponde a quello della rete locale. *
è un carattere jolly, quindi 192.168.1.
verranno accettati tutti gli indirizzi IP che iniziano con . Se questo non funziona, la tua distribuzione potrebbe usare al ssh
posto di sshd
. In tal caso, dovresti provare ssh: 192.168.1.*
e ssh: ALL
invece.
È possibile consentire solo host specifici, fare lo stesso con /etc/hosts.allow
e /etc/hosts.deny
come descritto in 6, ma /etc/hosts.allow
aggiungere la seguente riga e ogni host per consentire separati da spazi:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
Consenti solo a utenti specifici di accedere al tuo server SSH. Questo viene fatto modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e assicurati che non ci siano # davanti. Se non esiste, crealo. Ad esempio, se si desidera consentire solo john, tom e mary, aggiungere / modificare questa riga:
AllowUsers john tom mary
Ad esempio, potresti anche negare utenti specifici, se desideri negare l'accesso a john, tom e mary, aggiungi / modifica questa riga:
DenyUsers john tom mary
Consenti solo il protocollo SSH2 per le connessioni in entrata. Esistono due versioni del protocollo SSH. SSH1 è soggetto a problemi di sicurezza, quindi si consiglia l'utilizzo di SSH 2. Questo può essere forzato modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e assicurati che non ci siano # davanti. Se non esiste, crealo.
Protocol 2,1
rimuovere il, 1 in modo che la linea sarà
Protocol 2
Non consentire agli utenti di accedere senza password impostata. Questo può essere forzato modificando il file /etc/ssh/sshd_config
. ✝ Cerca la seguente riga e assicurati che non ci siano # davanti. Se non esiste, crealo.
PermitEmptyPasswords no
E sebbene sia semplice e forse inutile dirlo ma dimostrato cruciale in più casi, mantieni aggiornato il tuo software. Aggiorna regolarmente i pacchetti / software installati.
a seconda della distribuzione di Linux che stai utilizzando.