Quanto è probabile che un client (MySQL) elimini le credenziali quando il tunnel VPN non è stato impostato in precedenza?

0

Contesto

Lavoro su un caso molto comune. Ho configurato due server: un server OpenVPN e un server MySQL (172.16.X.X) nascosto dietro di esso. Supponiamo che tutto sia perfettamente configurato e patchato sul lato server.

Nota:

  • Il server MySQL non ha un'interfaccia di rete pubblica
  • MySQL non ha TLS configurato. Non usa l'autenticazione PAM tramite il plugin PAM. Accetta le autenticazioni da qualsiasi luogo.
  • Utilizza un NAT per accedere a Internet (il NAT viene eseguito dal server OpenVPN).
  • OpenVPN spinge i suoi percorsi (172.16.X.X) permettendo ai client connessi di trovare il server MySQL.

Sul lato client (192.168.X.X), ho diversi utenti che si connetteranno al server MySQL attraverso la VPN, utilizzando il proprio client OpenVPN locale. Con l'ipotesi precedente, a meno che non sia un pazzo (che è una possibilità, dimmelo), nessun attaccante MITM sarebbe in grado di ottenere la password MySQL.

Nota:

  • I client non hanno un percorso preconfigurato per la rete VPN remota (172.16.X.X).

Scenario probabile

Immaginiamo: come utente, cerco di connettere questo server "nascosto" MySQL e fallisce, perché ooops ... il mio software openVPN non è riuscito ad avviare il tunnel senza preavviso.

Ora una macchina malvagia può trovarsi da qualche parte nella rete locale - la gente usa computer portatili ovunque in questi giorni - annusando il mio miserabile tentativo di connettersi a un server MySQL inesistente (172.16.X.X).

Domande

Qualunque software client MySQL invierà credenziali di cleartext alla route predefinita, anche se non viene trovato alcun server MySQL?

È possibile che un utente malintenzionato che conosce il vero server MySQL (172.16.X.X) esiste per impersonarlo impostando un server MySQL falso sulla rete locale (192.168.X.X)?

Se sì, come posso mitigare questo scenario (suggerimento: con poche risorse, lavoro per una società molto piccola)?

Grazie per il tuo aiuto!

    
posta Gui-Don 23.11.2017 - 12:54
fonte

3 risposte

3

Per rispondere a questa domanda devi prima capire l'handshake di mysql-na fino all'autenticazione.

Se utilizzi il nome utente e il nome utente predefiniti autenticazione password in cui la password è memorizzata come hash sha1(sha1(password) in mysql.users, quindi l'autenticazione funziona come segue (ci sono più passaggi ma per mantenere questo breve è approssimativamente il seguente):

  1. Il client si connette al server
  2. Il server invia il saluto, la versione e le funzionalità supportate del server, nonché un SALT da utilizzare per la sessione
  3. Il client richiede l'autenticazione per iniziare, quindi invia SHA1(password) XOR(SALT + sha1(sha1(passsword)))

Quindi le prime credenziali non vengono inviate in chiaro usando questo metodo, sono comunque se usi il plugin mysql_pam dato che sono passati a PAM per il completamento dell'autenticazione.

Comunque usando mysql-na devi essere consapevole che e se un avversario può annusare un handshake di autenticazione client-server, allora possono usare la vulnerabilità mysql-unsha ( link ) per accedere senza conoscere la password effettiva.

Con questo chiarito affrontiamo le domande specificamente

  • Qualunque software client MySQL invierà credenziali di cleartext al percorso predefinito?

Questo dipende interamente dalla configurazione di mysql se si sta utilizzando PAM per l'autenticazione, quindi è probabile che si vedano le credenziali "sul filo", per essere al 100% su questo vale la pena eseguire un'acquisizione di pacchetti sul server e ispezionare il risultato pcap with wireshark / tshark.

  • Se la rete esiste nella mia tabella di routing?

Come sopra, dipende dalla configurazione di MySQL per impostazione predefinita non dovresti vedere le credenziali in chiaro, ma ciò non impedisce agli aggressori di accedere tramite mysql-unsha.

  • Se l'IP che provo a raggiungere esiste localmente?

Si prega di chiarire che stai parlando della LAN del tuo client VPN? questo dipende dai tuoi percorsi e se la VPN consente il tunneling diviso.

  • Se l'IP che provo a raggiungere esiste localmente e gestisce un server MySQL?

Anche in questo caso è necessario chiarire che è troppo vago.

  • Se sì, come posso mitigare questo scenario (suggerimento: con poche risorse, lavoro per una società molto piccola)?

Le tue domande devono essere chiarite, prima di tutto in modo che tu possa comunicarle a terze parti in modo chiaro e coerente, le take away qui per te.

In configurazione predefinita MySQL userà Mysql-NA per l'autenticazione che è username + password, questo non è chiaro in quanto solo gli hash sono scambi TUTTAVIA questo è vulnerabile all'attacco mysql-unsha come delineato oltre il quale potrebbe consentire a un utente malintenzionato di autenticarsi come utente che ha osservato l'autenticazione senza conoscere la password originale solo l'hash sha1(password) .

    
risposta data 23.11.2017 - 14:41
fonte
1

MySQL sta usando un protocollo su TCP per le connessioni tra sistemi remoti. Ciò significa che una connessione TCP deve essere creata correttamente prima di trasferire qualsiasi dato, che include l'invio di informazioni di autenticazione.

Ciò significa che supponendo che il database sia raggiungibile solo tramite VPN e che nessuno possa impersonare il database, le credenziali non verranno divulgate in questo modo.

Ma se è sconosciuto se questa ipotesi è vera nella tua rete. Se non è vero, le credenziali potrebbero essere trapelate. Il rischio di questo non può essere stimato senza sapere di più sulla configurazione della rete e le misure di sicurezza e anche quanto sei attraente come target, cioè quanto un utente malintenzionato investirà. Tuttavia, è possibile ridurre il rischio, ad esempio, di connettersi al database con TLS in aggiunta all'utilizzo di una VPN.

    
risposta data 23.11.2017 - 13:38
fonte
1

È molto improbabile, ma in alcuni casi molto difficili qualcuno può ottenere le tue credenziali. Possibile, ma improbabile.

  1. L'attaccante assume il controllo del tuo gateway

    Controllando il gateway, può intercettare qualsiasi tentativo di connessione e modificarli.

  2. Il tuo tunnel fallisce e tu provi a connetterti

    Ora l'attaccante può sapere che hai un server MySQL da qualche parte, e puoi aggiungere una voce di routing sul gateway che punta a un server che controlla, usando lo stesso IP.

  3. L'attaccante annusa la tua password

    SE provi a connetterti di nuovo, AND la VPN è disattivata, AND l'utente malintenzionato ha annusato l'ultimo tentativo, AND l'attaccante ha una voce di routing sul gateway che si trova su un server che controlla, E sta eseguendo uno sniffer, quindi può ottenere le credenziali.

Molto improbabile, richiede molta preparazione, dipende dalla fortuna (o dalla mancanza di), richiede il controllo del gateway, ma è possibile.

    
risposta data 23.11.2017 - 14:38
fonte

Leggi altre domande sui tag