Quanto è rischioso avere un server personale con ssh aperto su Internet?


25

La continuazione del titolo sarebbe "pur avendo una conoscenza limitata della sicurezza di Internet".

Di recente ho creato un piccolo server con un computer di fascia bassa che esegue debian con l'obiettivo di usarlo come repository git personale. Ho abilitato ssh e sono rimasto piuttosto sorpreso dalla prontezza con cui ha sofferto di attacchi di forza bruta e simili. Poi ho letto che questo è abbastanza comune e ho appreso le misure di sicurezza di base per scongiurare questi attacchi (molte domande e duplicati su serverfault lo affrontano, vedi ad esempio questo o questo ).

Ma ora mi chiedo se tutto ciò valga la pena. Ho deciso di configurare il mio server principalmente per divertimento: potevo semplicemente fare affidamento su soluzioni di terze parti come quelle offerte da gitbucket.org, bettercodes.org, ecc. Mentre parte del divertimento riguarda l'apprendimento della sicurezza di Internet, non ho abbastanza tempo da dedicare ad esso per diventare un esperto ed essere quasi certo di aver preso le giuste misure di prevenzione.

Al fine di decidere se continuerò a giocare con questo progetto giocattolo, vorrei sapere cosa rischio davvero nel farlo. Ad esempio, in che misura sono minacciati anche gli altri computer collegati alla mia rete? Alcuni di questi computer sono utilizzati da persone con una conoscenza ancora minore della mia con Windows.

Qual è la probabilità che mi metta in guai seri se seguo le linee guida di base come password complessa, accesso root disabilitato per ssh, porta non standard per ssh e possibilmente disabilitando l'accesso con password e usando una delle regole fail2ban, denyhosts o iptables?

Detto in altro modo, ci sono alcuni lupi cattivi di cui dovrei temere o si tratta principalmente di scacciare i kiddies?


Penso che tu abbia colpito l'unghia alla testa quando hai detto che non hai il tempo o la tendenza a diventare un esperto in sicurezza $ TECHNOLOGY; questo è il motivo principale per utilizzare una soluzione ospitata. L'unico altro argomento comune nella valutazione interna rispetto all'hosting è il costo. Poiché github e simili sono gratuiti, essenzialmente stai rinunciando al tuo tempo personale solo per acquisire la conoscenza di come eseguire un repository git. Non possiamo dirti cosa dovresti fare con il tuo tempo personale, ma in una situazione professionale questo non avrebbe senso. (avvertimento: le situazioni complicate hanno più variabili).
Chris S,

1
Se decidi di eseguire il tuo server, aggiungi anche al tuo elenco di cose da fare un controllo regolare per aggiornamenti e vulnerabilità di sicurezza per ogni servizio che esegui. Basta configurarlo non è abbastanza.
settimana

Due parole: chiavi pubbliche, come diceva @Stephane. Disabilita l' keyboard-interactiveautenticazione e usa solo l' pubkeyautenticazione.
kostix,

Risposte:


14

IMO SSH è una delle cose più sicure da ascoltare su Internet aperto. Se sei davvero preoccupato, ascoltalo su una porta di fascia alta non standard. Avrei ancora un firewall (a livello di dispositivo) tra la tua casella e Internet reale e utilizzerei solo il port forwarding per SSH, ma questa è una precauzione contro altri servizi. Lo stesso SSH è dannatamente solido.

Io ho avuto la gente ha colpito il mio server casalingo SSH di tanto in tanto (aperto a Time Warner Cable). Non ha mai avuto un impatto reale.

Alcune cose aggiuntive che puoi fare per rendere SSH più sicuro sono prevenire ripetuti tentativi dallo stesso indirizzo IP per una macchina domestica simile

MaxStartups 2:30:10

in / etc / ssh / sshd_config che limiterà il numero di connessioni che possono essere create in una riga prima di accedere correttamente.


Il mio provider di servizi Internet fornisce un firewall i cui parametri sono stati visualizzati quando ho aperto una porta per ssh. È a cosa ti riferisci?
Alfred M.,

2
Potrebbe essere, alcuni ISP ti danno un dispositivo stupido, alcuni un router con un firewall integrato. Sto solo dicendo che non è MAI una buona idea mettere un sistema operativo generico direttamente su Internet, indipendentemente dalle precauzioni che prendi. Vuoi una sorta di dispositivo hardware (o qualcosa come DD-WRT) tra te e i cattivi.
TheFiddler vince il

1
Imposta l'autenticazione con chiave pubblica come indicato in un'altra risposta e SPEGNERE ChallengeResponseAuthentication e PasswordAuthentication in / etc / ssh / sshd_config.
Randy Orrison,

So che questa è una domanda stupida, ma devo acquistare un dominio per accedere al mio server (tramite ssh o browser) da Internet?
TheRookierLearner,

@TheRookierLearner - no, puoi usare l'indirizzo IP che il tuo ISP ti fornisce. Tuttavia, a seconda della configurazione della tua rete domestica, può essere condiviso attraverso tutti i tuoi dispositivi da qualcosa chiamato PNAT (la maggior parte delle persone lo chiama semplicemente NAT). Se sei come la maggior parte delle persone dovrai capire l'IP "NATed" del dispositivo specifico a cui vuoi accedere da Internet (solo se ifconfig / ipconfig sul sistema, sarà un 10.xxx, 172.16. xx o 192.168.xx indirizzo vedi RFC 1918 per più di quanto ti importi di questi numeri) e poi dì al tuo router di "port forward" o "DMZ" porta 22.
TheFiddlerWins

10

La configurazione di un sistema di autenticazione a chiave pubblica con SSH è davvero banale e l'installazione richiede circa 5 minuti .

Se imponi a tutte le connessioni SSH di utilizzarlo, renderà il tuo sistema abbastanza resiliente come puoi sperare senza investire un sacco in infrastruttura di sicurezza. Francamente, è così semplice ed efficace (purché non si disponga di 200 account, quindi diventa disordinato) che non utilizzarlo dovrebbe essere un reato pubblico.


3
Per forzare le connessioni SSH a utilizzare l'autenticazione con chiave pubblica dopo averla impostata, SPEGNERE ChallengeResponseAuthentication e PasswordAuthentication in / etc / ssh / sshd_config. L'ho dimenticato una volta, con mio grande dispiacere (solo una volta e mai più).
Randy Orrison,

8

Gestisco anche un server git personale aperto al mondo su SSH e ho anche gli stessi problemi di forza bruta come te, quindi posso simpatizzare con la tua situazione.

TheFiddlerWins ha già affrontato le principali implicazioni di sicurezza di avere SSH aperto su un IP accessibile al pubblico, ma il miglior strumento IMO in risposta ai tentativi di forza bruta è Fail2Ban - software che monitora i file di registro di autenticazione, rileva i tentativi di intrusione e aggiunge le regole del firewall al iptablesfirewall locale della macchina . Puoi configurare sia quanti tentativi prima di un ban sia anche la durata del ban (il mio default è 10 giorni).


Come affermato dal mio commento sul post precedente, questo è ciò che il NAS utilizza a casa e, dopo un paio di mesi, la quantità di tentativi è stata significativamente ridotta.
mveroone,

2

Un altro modo per gestirlo è configurare una VPN. Invece di collegarti direttamente alle porte SSH sul tuo server di casa, ti connetti prima alla VPN, quindi esegui tutto il tuo traffico sulla connessione crittografata e sicura.

Il modo ideale per gestirlo è con un firewall che incorpora un endpoint VPN, ma è anche possibile configurare un computer Windows che funga da server VPN.

Ecco un esempio:

http://www.howtogeek.com/135996/

Ora tieni presente che una corretta configurazione di sicurezza implicherebbe un computer pubblico (o semi-pubblico) isolato dalla tua rete interna. Un server Web o qualsiasi computer che ospita servizi disponibili al pubblico dovrebbe trovarsi al di fuori della rete protetta della tua casa o dell'ufficio. Utilizzeresti 2 router per creare una zona sicura, o una DMZ, tra te e Internet.

In questo modo, se il tuo server viene violato, non può essere utilizzato come vettore per attaccare gli altri tuoi computer.

Quindi l'installazione sarebbe simile a questa:

Configurazione DMZ


Mi dispiace per l'immagine piccola ... Non riesco a capire come modificare il mio post.
TomXP411,

2

Le risposte sono molto buone, consiglierei solo due cose:

  • Considerare l'accesso solo tramite il sistema di autenticazione con chiave
  • Usa Denyhosts : vieterà gli host che tentano di accedere al tuo server con un'autenticazione non valida
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.