Quanto è grave l'impostazione dell'indirizzo bind di MySQL su 0.0.0.0?


35

Sto cercando di consentire a un server remoto di accedere a un'istanza MySQL che attualmente condivide un server Linux con un'app Web. Secondo la documentazione, l'unico modo in cui ciò sarebbe possibile (a meno che non capisca correttamente) è se la direttiva bind-address è impostata su 0.0.0.0 , il che si traduce in MySQL che consente l'accesso da qualsiasi IP in grado di produrre un utente valido.

Quindi, due domande:

  1. quanto sarebbe dannoso per la sicurezza?
  2. esiste un approccio migliore per consentire l'interazione sia locale che remota con MySQL?

Risposte:


36

Penso che tu stia fraintendendo un po 'l'impostazione dell'indirizzo del bind . Questi sono gli indirizzi locali che MySQL ascolterà per le connessioni. Il valore predefinito è 0.0.0.0 che è tutte le interfacce. Questa impostazione non limita quali IP possono accedere al server, a meno che non sia stato specificato 127.0.0.1 solo per localhost.

Se è necessario limitare determinati utenti da indirizzi IP specifici, utilizzare create / grant user in questo modoCREATE USER 'bobdole'@'192.168.10.221';


+1 ma solo una nota che l'indirizzo di ascolto predefinito varia a seconda di come è installato MySQL.
John Gardeniers,

Grazie Doug, penso che il valore predefinito in questo caso fosse il mio host locale, ma è bene sapere che gli utenti di un determinato database sono ancora limitati dall'IP.
jonathanatx,

@jonathanatx MySQL è l'indirizzo di bind predefinito (in 5.6 e per quanto ne so) 0.0.0.0. Tuttavia, penso che per molte installazioni l'associazione locale sia l'opzione migliore. Non aprire la porta se non vuoi che qualcuno ci passi.
ebyrob

1

un. È cattivo. Anche se potresti limitare l'accesso degli utenti tramite ip su ciascun database, penso che sia più sicuro avere tutte le connessioni in ingresso a livello locale. Sui miei server consento a MySQL di accettare solo connessioni locali, 127.0.0.1 come è la configurazione predefinita. Per accedere al database in remoto, è sufficiente creare un tunnel ssh prima di connettersi al database e quindi connettersi localmente. Se stai programmando con php è abbastanza facile farlo. Se stai usando un'applicazione desktop è facile farlo su Linux (cerca tunnel ssh), Su Windows normalmente uso un programma come Putty per farmi il tunnel.


7
È abbastanza folle. Il modo standard per farlo è creare utenti a cui è possibile accedere solo da determinati nomi host o IP. Forzare ogni server Web a creare un tunnel SSH in un database è molto più lavoro di quanto non sia necessario.
TheLQ

3
Il tuo server web e il database non sono sempre lo stesso dispositivo. Non lasciare che le connessioni arrivino da Internet, certamente .. ma ci sono modi sicuri per progettare soluzioni con accesso alla rete MySQL.
Shane Madden

1
Per un piccolo setup (un db, uno www) potresti fare tunneling ssh. Per una vera configurazione i tuoi VPN e firewall ti proteggeranno, quindi ti apriresti via 0.0.0.0 per consentire l'accesso remoto.
Sonia Hamilton,

2
Per tutti coloro che pensano che l'idea del tunnel SSH sia pazza, considera che la maggior parte del traffico MySQL è in chiaro. Se per qualche motivo devi connetterti attraverso una rete non attendibile (ad esempio Internet), considera SSH o eseguilo su una VPN. Accendi Wireshark o qualche altro sniffer di pacchetti se vuoi vedere di cosa sto parlando.
Brad

2
@Brad MySQL supporta la crittografia, quindi non è corretto.
Marti Markov,
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.