Indurimento server MySQL

27

Seguendo il tema dell'invecchiamento ....

Quali sono alcune best practice, raccomandazioni, letture obbligatorie per la sicurezza di MySQL.

    
posta Scott Pack 14.12.2010 - 14:57
fonte

2 risposte

25
  • Esegui solo MySQL sul server - Se possibile, esegui solo MySQL sul server e rimuovi tutti i servizi non utilizzati.
  • Firewall - Limita l'accesso tramite l'indirizzo IP solo ai server / client che richiedono l'accesso.
  • Privilegi utente : quando crei utenti, assegni sempre la quantità minima di privilegi ed espandi come necessario. Prova anche a evitare di usare il carattere jolly '%' per gli host e invece limita l'host che richiede l'accesso.
  • Indirizzo di binding in modo appropriato : se si richiede solo l'accesso remoto al server all'interno della stessa rete e la macchina dispone sia di un IP esterno che di un indirizzo di rete interno. Imposta MySQL per ascoltare solo sull'indirizzo interno.
  • Abilita registrazione : attiva la registrazione se il database non gestisce molte query.
  • mysql_secure_installation - Usa l'utility mysql_secure_installation che fa una serie di cose, compresa la rimozione di account utente anonimo, rimuove il database di test, ecc.
  • Account root accessibile solo locale - È meglio limitare l'account root per essere accessibile solo direttamente dalla macchina. Mysql_secure_installation consente di rimuovere facilmente qualsiasi accesso remoto per gli account root. Di solito, quindi, eseguo ssh sulla macchina e uso il prompt dei comandi mysql o MySQL Workbench ha funzionalità per il tunnel su SSH.

Risorse aggiuntive

risposta data 14.12.2010 - 16:13
fonte
7

Suppongo che i soliti metodi del SO (compreso fail2ban se è richiesto l'admin ssh remoto), quindi blocchino tutti gli accessi esterni alla porta MySQL, o permettano a una whitelist di connettersi se assolutamente necessario. Imposta una password per l'utente mysqladmin.

Dopo questo, l'utente mysqladmin dovrebbe essere autorizzato a connettersi da localhost e dovrebbe essere l'unico utente a concedere qualsiasi privilegio tramite la tabella 'user' - tutti gli altri utenti hanno negato l'accesso per impostazione predefinita (cioè nella tabella utente) ma dato specifico concede ai singoli database.

Nota che non devi esporre MySQL direttamente su Internet. Se è necessario disporre dell'accesso remoto ai dati, utilizzare una VPN (ad es. Stunnel con verifica client).

    
risposta data 14.12.2010 - 15:36
fonte

Leggi altre domande sui tag