Domanda:
Perché lasciare un SSH con password su Internet è così grave?
Ethereal
2016-02-02 20:33:16 UTC
view on stackexchange narkive permalink

Ho sentito più volte di non lasciare mai SSH con una password aperta su Internet. Perché è così brutto?

Capisco che la password possa essere forzata, ma cosa succederebbe se fosse una password molto complessa che impiegherebbe eoni a decifrarla?

Ci sono altre cose da considerare che solo forza bruta o mi manca qualcos'altro?

Per esperienza personale, gli aggressori continueranno a provare fino a quando non entrano o non si chiude la porta (alla fine ho chiuso la porta). Mantenere la porta aperta e utilizzare una password complessa lascia la possibilità di un attacco di forza bruta che indovina la password.
Quindi l'unico vero svantaggio è il fastidio e il pensiero che sia costantemente forzato? Voglio dire, non lo farei in primo luogo .. Ma volevo sapere qual è esattamente il ragionamento. Quindi tecnicamente una persona con una forte PW non ha nulla di cui preoccuparsi ... giusto?
sbagliato. Usa meglio i certificati RSA e anche in questo caso vedrai un enorme volume di log
Dai un'occhiata a http://security.stackexchange.com/questions/110706/am-i-experiencing-a-brute-force-attack/110708
Ok, ma una risposta dice che se usa Fail2Ban .. Non dovrà preoccuparsi di forzature brute di questo tipo.
Stranamente non vengo avvisato dei tuoi messaggi ... La prima risposta è la mia su quell'URL. Fail2ban fornisce un certo grado di protezione, ma non è un proiettile d'argento, e tanto meno al giorno d'oggi con una rete coordinata di macchine zombie che forzano brute il tuo servizio SSH. Penso di aver menzionato qualcosa al riguardo.
Ho installato fail2ban, un falso demone sshd sulla porta 22, e ora eserciti di robot cinesi provano e falliscono, si arrabbiano e UDP DDoS i miei server ogni due settimane ...
@ztk: O fino a quando tu, loro e tutti i loro discendenti non sarete morti di vecchiaia e l'universo si sarà decomposto in una massa informe. Con una password abbastanza complessa, l'ultima è quella che accadrà per prima.
Torio, cosa fanno con l'UDP?
Un altro post rilevante: [Sono stato appena hackerato] (https://superuser.com/questions/1034137/did-i-just-get-hacked). Anche se sei sicuro che * tu * non useresti mai una password non sicura, sei comunque a rischio se il proprietario di un pacchetto fa qualcosa di stupido come creare un utente del servizio con una password debole (o nessuna password).
@RuiFRibeiro Perché pensi sia strano che non ti sia stato notificato il messaggio di Ethereal? Ad eccezione dei commenti che mostrano un segno di chiocciola seguito dal tuo nome, ricevi una notifica se qualcuno pubblica la tua domanda o la tua risposta, ma non qualcun altro su cui commenti. (PER QUANTO NE SO)
Hmm non ne avevo idea, ora ho capito. Grazie @TOOGAM
@RuiFRibeiro: Ciò che ha detto TOOGAM non è corretto al 100% - _also_ verrai avvisato quando un autore del post commenta il post dopo aver lasciato un commento, ** se ** sei l'unico ad averlo fatto (perché allora è probabile il nuovo commento è stato diretto a te). Prendendo questo thread di commenti come esempio, ztk dovrebbe aver ricevuto una notifica sul secondo commento; ma poi tu, come altra persona, hai commentato, e da quel momento solo l'OP ha ricevuto ulteriori notifiche.
Sei risposte:
Purefan
2016-02-02 22:04:27 UTC
view on stackexchange narkive permalink

Perché è così brutto?

Poiché ci sono tonnellate di bot che scansionano il Web alla ricerca di porte aperte e cercano di accedere, una volta che uno scanner trova un SSH aperto porta può essere messa in coda per un altro bot (o botnet) per provare a forzare la password. Uno dei rischi qui è che alla fine potrebbero riuscire a capire la password e prendere il controllo del server.

Capisco che la password possa essere forzata, ma cosa succede se è molto forte password che impiegherebbe eoni a craccare?

Avere una password lunga è una tecnica di mitigazione, tuttavia le risorse (larghezza di banda, spazio su disco utilizzato per i log e CPU per esempio) consumano una forza bruta l'attacco può anche essere dannoso.

Mitigazione

Alcune tecniche per mitigare un attacco di forza bruta su SSH:

Vorrei aggiungere alla tua lista: disabilita il login di root tramite ssh. La maggior parte dei bot sta solo cercando di eseguire il root. Non vedo alcun problema con il lasciare aperto ssh fintanto che ha una password sicura e non accedi da remoto come root.
@paulburkeland: Non c'è motivo di disabilitare root tramite ssh se usi pubkey, e molte buone ragioni per lasciarlo aperto. Su un sistema hardened / bloccato, avere ssh accept root login significa che puoi rimuovere tutti i binari suid (su, ecc.) Dal sistema e quindi eliminare completamente una grande superficie di attacco (il linker dinamico) per gli attacchi locali.
usare knockd per "Port Knocking" per nascondere il tuo server SSH, farà anche molto per nasconderti dagli script.
@R .. Commesso toccato, commosso.
@R .. Stai scambiando una superficie di attacco (sop) con un'altra (accedi come root). Preferirei che se commettessero una violazione iniziale, ci fosse qualche minaccia che potrebbero attaccarmi e diventare root, invece di una situazione peggiore in cui l'aggressore sta dando istantaneamente un prompt di root senza che sia necessario ulteriore lavoro. Invece di utilizzare il nome utente noto di root, devono indovinare quali account utente possono passare a root e questi sforzi potrebbero essere più inclini a essere registrati in modo più dettagliato dalla mia attrezzatura. Inoltre, posso invertire alcuni progressi di chiunque si avvicini (togliendo l'accesso remoto)
@TOOGAM: Qual è il tuo modello di minaccia? RSA forzante? Indipendentemente dal fatto che sshd consenta il login di root, deve * essere eseguito come root * stesso in modo che possa impostare l'utente di destinazione al login, quindi non riesco a vedere l'aumento della superficie di attacco che deriva dall'abilitazione del login di root tramite ssh ( supponendo che non abiliti anche le password).
Ho scoperto che [semplicemente rafforzando un po 'sshd] (https://stribika.github.io/2015/01/04/secure-secure-shell.html) ha ucciso la stragrande maggioranza dei bot là fuori, rendendoli incapaci di comunicare con il server. Non c'è più abbastanza traffico di forza bruta per attivare fail2ban!
Quella conversazione potrebbe essere più adatta in http://chat.stackexchange.com/rooms/151/the-dmz.
@TOOGAM Sembra che tu non sappia che [OpenSSH utilizza già la separazione dei privilegi] (http://www.citi.umich.edu/u/provos/ssh/privsep.html) e lo ha fatto per oltre un decennio.
@MichaelHampton Inapplicabile alla mia posizione, perché le mie affermazioni non erano basate su preoccupazioni per il bug di OpenSSH. Consentendo solo a SSH di accedere a un account non root, eseguire operazioni di root richiede: A) capire quali nomi utente possono aumentare. B) ottieni un prompt per quell'utente. C) Scopri come eseguire l'escalation (che potrebbe comportare ulteriori sfide di autenticazione). Al contrario, se possono accedere come account "root", in pratica hanno già completato i passaggi A e C e devono solo eseguire l'equivalente del passaggio B.
+1 per danneggiare le risorse: cioè il mio tempo. Dopo aver dovuto eliminare i log di milioni di accessi SSH falliti un paio di volte dopo aver riempito il mio minuscolo disco VPS e causato altri strani errori, ho imparato la lezione.
Gli ultimi due elementi della tua lista non sono solo abbastanza banali da implementare, ma anche un enorme balzo in avanti in termini di "vantaggi" per l'amministratore sia nei registri di controllo della tranquillità che della quantità di lavoro ...
SilverlightFox
2016-02-02 22:23:59 UTC
view on stackexchange narkive permalink

Il rischio principale è che la connessione iniziale possa essere intercettata da un Man-In-The-Middle, in modo che un utente malintenzionato possa recuperare la password.

La prima volta che un utente si connette a un server SSH, viene visualizzato qualcosa di simile al seguente:

  $ ssh scanme.nmap.org L'autenticità dell'host 'scanme.nmap.org (45.33.32.156)' non può essere stabilita. L'impronta digitale della chiave ECDSA è SHA256: 8iz5L6iZxKJ6YONmad4oMbC + m / + vI9vx5C5f + qTTGDc. Sei sicuro di voler continuare a connetterti (sì / no)?  

Ora, a meno che ogni utente non abbia intenzione di verificare l'impronta digitale per assicurarsi che è il tuo server, quindi c'è il rischio che la loro connessione sia stata intercettata (es. MITM sulla loro rete intercetta direttamente il traffico, o qualche tipo di dirottamento DNS).

Questo perché SSH è "Trust on First Use ". Se ti sei già connesso a quell'host e la chiave cambia improvvisamente, viene invece visualizzato il seguente messaggio, che avverte l'utente.

  @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@ AVVISO: L'IDENTIFICAZIONE DELL'HOST REMOTO È CAMBIATA! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ È POSSIBILE CHE QUALCUNO STA FACENDO QUALCOSA DI CATTIVO! Qualcuno potrebbe origliare su di te in questo momento (attacco man-in-the-middle)! È anche possibile che la chiave host RSA sia stata appena cambiata. L'impronta digitale per la chiave RSA inviata dall'host remoto è 5c: 9b: 16: 56: a6: cd: 11: 10: 3a: cd: 1b: a2: 91: cd: e5: 1c Contatta l'amministratore di sistema Aggiungi la chiave host corretta in /home/user/.ssh/known_hosts per eliminare questo messaggio. key in /home/user/.ssh/known_hosts:1RSA host key per ras.mydomain.com è cambiata e hai richiesto un controllo rigoroso. Verifica della chiave host non riuscita.  

L'avviso si attenuerà questo attacco per gli utenti che si sono già connessi da quel particolare client.

Un altro rischio meno critico di avere SSH aperto su Internet è che ci sono molti bot là fuori che trovano e tentano di accedere a tali server. Se si dispone di una password complessa su tutti gli account, il rischio di compromissione è molto basso (per forte intendo una che sicuramente non sarà in un elenco di parole che l'attaccante potrebbe utilizzare o creare). Si applicano le regole usuali, ad esempio nessun riutilizzo della password, password memorizzata in modo sicuro, ecc. Lo svantaggio è che i file di registro si accumuleranno rapidamente con tutti i tentativi di autenticazione ricevuti.

Per quanto riguarda SSH stesso in qualsiasi modalità di autenticazione, poiché un altro servizio esiste la possibilità che vengano scoperte vulnerabilità che potrebbero essere sfruttate automaticamente da tali bot. Tuttavia, il rischio di ciò non è maggiore di quello di un server Web o di un'applicazione Web di essere sfruttati. Come ogni server con servizi pubblici, si consiglia una buona strategia di gestione delle vulnerabilità.

Vedi anche questa risposta, la parte relativa ai messaggi di avviso SSH e il rischio di continuare, anche con autenticazione con chiave.

Jeff Ferland
2016-02-03 01:09:43 UTC
view on stackexchange narkive permalink

Ho sentito più volte di non lasciare mai SSH con una password aperta su Internet. Perché è così grave?

Capisco che la password possa essere forzata, ma cosa succederebbe se fosse una password molto complessa che impiegherebbe eoni a decifrarla?

La stessa Il grande vantaggio della disabilitazione degli accessi SSH tramite password consiste nel impedire che gli account predefiniti con password deboli o gli utenti che scelgono password deboli siano forzati. Al momento potresti avere solo pochi account senza password deboli, ma in futuro potrebbe essere installato qualcosa in cui non è così. Più sistemi o più complessità hai nel tempo, più alto diventa il rischio.

Caso aneddotico: un mio conoscente ha perso il suo server e tutto ciò che contiene perché ha dato ad un amico un account con la password di changeme che non è stato modificato. Non sono stati creati nemmeno backup remoti, quindi ha perso tutto.

Le chiavi SSH sono notevolmente più sicure per impostazione predefinita. A meno che la generazione della chiave non venga interrotta, il livello di compromissione più basso richiede l'acquisizione della chiave dell'utente. Considerando che con le password il livello è solo indovinare quando qualcuno espone una password debole. Si tratta di assicurarsi che i futuri fallimenti umani siano protetti.

A meno che P = NP ...
mti2935
2016-02-02 21:31:03 UTC
view on stackexchange narkive permalink

Un'altra cosa da considerare è la possibilità di vulnerabilità (anche se note da tempo o zero-day) nel demone sshd stesso, che potrebbero essere sfruttate da un attaccante. Per mitigare questo problema, è meglio aprire sshd solo agli utenti che lavorano da IP noti di cui ti fidi, o tramite una VPN, se possibile.

Secondo la VPN; inoltre riduce drasticamente le dimensioni del tronco
kasperd
2016-02-03 15:02:42 UTC
view on stackexchange narkive permalink

Ci sono diversi motivi per cui è più sicuro usare l'autenticazione con chiave pubblica anziché l'autenticazione con password:

  • La chiave segreta non lascia mai la macchina client, quindi è più difficile intercettare il segreto chiave rispetto alla password. Questo è importante nel caso in cui un utente malintenzionato esegua un attacco mitm contro la tua prima connessione in cui la chiave host non è precedentemente nota. È anche importante nel caso in cui il server sia stato compromesso da un utente malintenzionato.
  • L'uso dell'autenticazione con chiave pubblica ti protegge dagli attacchi mitm completi. Se un utente malintenzionato dovesse eseguire un attacco mitm contro la tua prima connessione, potresti non verificare la chiave host. Tuttavia, se si utilizza l'autenticazione con chiave pubblica per l'autenticazione, l'autenticazione è legata all'ID di sessione ssh, che impedisce all'autore dell'attacco di utilizzare la stessa autenticazione per passare la connessione al server legittimo. Ciò riduce l'attacco da un attacco mitm completo alla sola intercettazione della connessione, che spesso sarà più facile da notare per l'utente. (Ad esempio, quando l'utente cerca un file noto per essere sul server reale, ma non noto all'attaccante, l'utente noterà che qualcosa non va.)

Dato che io sconsiglio di utilizzare l'autenticazione con password, consiglierò anche di non lasciarla abilitata sul tuo server ssh per i seguenti motivi:

  • Gli aggressori tenteranno attacchi di forza bruta con password. Se hai un utente sul sistema con una password debole, esiste la possibilità che un tale attacco abbia successo.
  • Anche se tutti gli utenti del sistema hanno password complesse, gli aggressori proveranno comunque a forzare le password . Ciò consumerà risorse sul server. Di tanto in tanto ho visto tali attacchi di forza bruta essere così aggressivi che gli accessi legittimi non riuscivano a causa del sovraccarico del server.
  • Se ti abitui al fatto che i server ssh non accettano mai password, è più probabile che te ne accorga nel caso in cui un utente malintenzionato un giorno tenti di sferrarti un attacco mitm e ti presenti una richiesta di password.
Øle Bjarnstroem
2016-02-02 21:47:32 UTC
view on stackexchange narkive permalink

A quanto ho capito, una chiave non è così diversa da una password; è solo molto, molto più lungo e quindi più difficile da decifrare. Inoltre hai bisogno di una password.

Ma vorrei anche dire che ha senso consentire solo a determinati indirizzi IP di connettersi alla tua porta SSH. Diminuisce i file di registro ed è generalmente buona norma consentire l'accesso (non il login) a un servizio solo se necessario. Ad esempio, a un intervallo di indirizzi IP della VPN della tua azienda. Ma non fare mai affidamento su questo.

A volte viene suggerito di spostare la porta SSH, ma ne vedo pochi vantaggi.

Inoltre (fuori tema): non consentire mai l'accesso SSH per root .

La maggior parte degli Unix / Linux moderni ha già la disabilitazione di root in sshd ... devi permetterla espressamente (che è una pessima pratica)
Alcune persone lo fanno ancora per pigrizia. È anche importante mantenere stretto l'elenco degli utenti sudo.
SSH consente la chiave senza autenticazione tramite password
Vero. Ma è meglio usare la chiave con le password.
* "A quanto ho capito, una chiave non è così diversa da una password; è solo molto, molto più lunga e quindi più difficile da decifrare." * ... no, stai confondendo i token di autenticazione con le chiavi pubbliche / private. L'intero punto di una chiave privata è che, a differenza di una password, non viene mai comunicata durante l'autenticazione. C'è una differenza fondamentale qui.
Sì vero. Colpa mia! Era formulato molto male.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...