¿Debo establecer una contraseña para 'root' @ 'localhost' en MySQL?

7

Solo pueden acceder a la cuenta de MySQL 'root'@'localhost' en el servidor que aloja el servidor MySQL.

Suponiendo que solo la persona o personas que están a cargo del servidor MySQL tienen incluso la contraseña para ssh , y dado que el servidor está alojado en una red interna para que no pueda ssh desde afuera, ¿hay alguna razón para poner una contraseña en el servidor MySQL para 'root' @ 'localhost'?

Razones para no tener una contraseña:

  • La administración de contraseñas en un sistema volátil es increíblemente engorroso, ya que cada contraseña adicional aumenta la entropía en el sistema.

  • Si una contraseña se pierde, puede causar muchos dolores de cabeza.

  • Si alguien tiene ssh 'ed en una máquina, y si la contraseña de root para la máquina es la misma que la del usuario con el que iniciaron sesión, pueden iniciar MySQL sin contraseña de todos modos.

  • Si el servidor está en una red local, y su única preocupación es la cantidad de daño que alguien puede hacer a su servidor MySQL, alguien que inicie sesión como root mientras ssh 'ed en el servidor es el menor de sus preocupaciones Podrían simplemente tomar físicamente el (los) disco (s) duro (s) o destruir la máquina de varias formas.

Entonces, a pesar de que estas razones indican que tener una contraseña en esta situación solo dificultaría las cosas sin un beneficio real, ¿hay alguna razón convincente para otorgarle uno a 'root'@'localhost' ?

    
pregunta MirroredFate 07.07.2015 - 00:03
fuente

5 respuestas

9

La primera regla de 10 Leyes inmutables de la Administración de Seguridad escrita por Scott Culp, es una buena ley con respecto a su situación:

  

Ley # 1: Nadie cree que algo malo pueda pasarles, hasta que suceda.

A pesar de que solo se puede acceder a su servidor desde su red local, intente pensar en cuántas computadoras o servidores están conectados a esa red interna. Pasar de una computadora a otra es parte de un trabajo de piratas informáticos, y tener seguridad solo en el perímetro lo salvará de la nada tan pronto como uno de los empleados sea víctima de un ataque de phishing y haga clic en ese enlace en ese correo electrónico. .

Otra posibilidad es, ¿qué sucede cuando alguien puede obtener un shell utilizando una vulnerabilidad en su sitio web? La persona puede intentar acceder y ejecutar los comandos de MySQL desde el shell y, en el peor de los casos, ¿soltar / volcar toda la base de datos?

Sí, administrar las contraseñas en un entorno multiusuario es difícil, es por eso que software como KeePass y LastPass ofrece bases de datos multiusuario, de modo que varios usuarios puedan tener acceso al mismo llavero y las mismas contraseñas.

Mi recomendación es, asegúrala con una contraseña segura, porque probablemente no será tan complicado como crees, y podría evitar que tu base de datos se filtre o se caiga. Cuanta más fricción cree para los posibles hackers, mejor!

¡Sea proactivo!

    
respondido por el Mrtn 07.07.2015 - 09:12
fuente
2

Considera esto -

Alguien abre un shell en su caja a través de una aplicación web vulnerable y desea volcar todas las bases de datos, pero no puede hacerlo porque solo están limitadas al usuario db que figura en su archivo de configuración (o algo relacionado). Creen que están perplejos hasta que intentan iniciar sesión en MySQL como root, y pronto descubren que no hay contraseña. Esto hace que el atacante golpee el premio mayor debido a algo tan tonto como no darle una contraseña al usuario root de MySQL.

Es bueno tener una contraseña para todo lo que se aplica, independientemente de lo que pienses que no puede suceder. Hay más escenarios en los que no tener una contraseña para root es malo, pero se entiende la idea.

    
respondido por el R. Goff 30.09.2015 - 19:33
fuente
0

Planifique siempre por adelantado. Puede parecer una molestia administrar las contraseñas, y como mencionó, podrían ingresar en la máquina en el futuro.

Si alguien puede contribuir con las estadísticas exactas que serían excelentes, pero la mayoría de las amenazas de seguridad provienen de su organización, no de afuera. No dejar una contraseña en su servidor MySQL es como dejar una copia impresa en la sala de descanso. Si estás de acuerdo con eso, entonces realmente no necesitas una contraseña. Si las bases de datos tienen alguna información que tal vez no desee en ese libro de mesa de café, tome los dos pasos adicionales y asegure sus datos. ¡Unos pocos años, o tal vez incluso dentro de unos meses, pueden comprarme un café para agradecerme por hacerlo!

    
respondido por el Bill VanDusen 07.07.2015 - 04:14
fuente
0

Le sugiero que defina dos usuarios: 1. root @ localhost con derechos de administrador completos Y contraseña larga y compleja 2. work @ localhost solo puede acceder a las tablas (concesión), se supone que lo hace con los derechos (concesión) adaptados a las operaciones normales (crear, cambiar de fila). Este usuario debe ser utilizado por todos los scripts que lo rodean.

El administrador es demasiado poderoso para permanecer desprotegido.

    
respondido por el Philippe Bellamit 08.07.2015 - 06:57
fuente
0

Si estuviera usando una única contraseña de root / su , un método sería usar esa misma contraseña para MySQL. Entonces, si alguien comenzó a permitir que otros usuarios en el servidor, no les está dando acceso a MySQL sin darse cuenta.

Eso no es realmente prospectivo, ya que el modelo sudo (varias cuentas de administrador) generalmente se considera preferible. Para eso, deberías comenzar creando múltiples usuarios de administrador en MySQL .

Si se volviera demasiado complejo, podría evitar la administración de contraseñas por separado en MySQL configurando PAM. Tanto MySQL como MariaDB tienen módulos PAM. (Aún tiene que crear los usuarios. Sin embargo, también para los usuarios locales (pam_unix), requieren que otorgue a MySQL acceso a / etc / shadow , porque el módulo pam de MySQL no incluye un ayudante SUID-root :(. Aparentemente, otros métodos PAM también tienen requisitos similares).

    
respondido por el sourcejedi 30.09.2015 - 15:19
fuente

Lea otras preguntas en las etiquetas