2012-06-25 3 views
7

I miei utenti utilizzano MS Access e il connettore ODBC per connettersi al mio database MySQL remoto. Mi chiedo quanto è sicuro, nel senso di una possibile divulgazione di password a terze parti. L'autenticazione del protocollo mysql è sicura per intercettare o anche attacchi man-in-the-middle? Sarei abbastanza contento della sicurezza contro le intercettazioni. Si noti che la mia preoccupazione è solo l'autenticazione, non sono preoccupato per la divulgazione dei dati.Quanto è sicura l'autenticazione nel protocollo mysql?

Si prega di non rispondere che dovrei usare SSL. So che questo sarebbe ideale, tuttavia la configurazione non sembra molto semplice. Ad ogni modo, vorrei sapere qual è il livello di sicurezza del semplice protocollo mysql.

risposta

12

Che cosa si desidera essere "sicuro da intercettare o anche attacchi man-in-the-middle"? La tua password o i tuoi dati?

Il titolo della domanda si riferisce specificamente all'autenticazione . MySQL fa un lavoro ragionevole di proteggere la tua password da intercettazioni (non viene inviato testo in chiaro e l'uso di un nonce sconfigge gli attacchi di replay). Citando MySQL protocol internals:

MySQL 4.1 e successivamente

Ricordate che i negozi mysql.user.Password SHA1 (SHA1 (password))

  • Il server invia una stringa casuale (scramble) al client
  • il cliente calcola:
    • stage1_hash = SHA1 (password), utilizzando la password che l'utente ha inserito .
    • gettone = SHA1 (scramble + SHA1 stage1_hash)() XOR stage1_hash
  • il client invia il token al server
  • il server calcola
    • stage1_hash'= token XOR SHA1 (scramble + mysql.user.Password)
  • il server confronta SHA1 (stage1_hash ') e mysql.user.Password
  • Se ar e lo stesso, la password va bene.

(Nota SHA1 (A + B) è la SHA1 della concatenazione di A con B)

Questo protocollo risolve il difetto di quello vecchio, né snooping sul filo né mysql. user.Password sono sufficienti per una corretta connessione . Ma quando si hanno sia mysql.user.Password sia i dati intercettati sul filo, ha abbastanza informazioni per connettersi.

Tuttavia, le sessioni autenticate continuano in testo in chiaro: un intercettatore sarà in grado di vedere tutte le query e i risultati; e un MITM sarebbe in grado di apportare modifiche allo stesso.Come indicato in the manual:

Per impostazione predefinita, MySQL utilizza connessioni non crittografate tra il client e il server. Ciò significa che chiunque abbia accesso alla rete può guardare tutto il tuo traffico e guardare i dati inviati o ricevuti. Potrebbero persino cambiare i dati mentre è in transito tra client e server.

Mentre si può non piacere la risposta, SSL è lo strumento progettato per sconfiggere sia l'intercettazione dei dati (in quale altro modo possono le comunicazioni essere cifrati?) E gli attacchi MITM (altrimenti come può una delle parti di verificare che il suo pari è chi pensa che sia?). Infatti, se il solo protocollo client-server mysql avesse sconfitto queste minacce, non ci sarebbe stato motivo per usare mysql su SSL (e quindi sarebbe improbabile che fosse una configurazione supportata).

+0

* Cosa intendi per "intercettazioni sicure o anche attacchi man-in-the-middle" *: come hai detto, il protocollo mysql non è sicuro dal MITM, la mia preoccupazione ora è solo se l'autenticazione è sicura da intercettare. Se qualcuno sta intercettando, sarà in grado di ottenere abbastanza informazioni per autenticarsi sul server mysql? Non mi importa se sta solo guardando i dati ... Grazie per la tua risposta! – TMS

+1

@Tomas: No, come la mia risposta dice, vedrà solo una forma crittografata di un hash della password che non può essere riprodotto a causa dell'uso di un nonce. Tuttavia, se è in grado di manipolare i pacchetti, può dirottare la sessione per eseguire qualsiasi comando desideri. – eggyal

+0

Scusami, non ho capito cosa intendevi con "nonce". È una stringa casuale inviata dal server? – TMS

-3

Risposta breve: Sì, il protocollo è protetto dagli attacchi Eavesdropping e MITM.

Solo se l'utente malintenzionato riesce a sniffare un tentativo di autenticazione E se l'utente malintenzionato conosce il contenuto di mysql.user, può successivamente autenticarsi sul server. Ad esempio, se si utilizza la stessa password su due server MySQL diversi e l'utente malintenzionato accede a uno di questi, può anche connettersi al secondo server.

+0

Sei sicuro che questo protocollo sia sicuro dal MITM? E non mi rendo conto di cosa intendevi con il 2 ° paragrafo. Ovviamente quando l'utente malintenzionato annusa la password, può connettersi con esso .. – TMS