¿Por qué es malo tener una contraseña de usuario mysql débil?

23

Se me presentó un argumento con la melodía de "no necesita una contraseña de usuario mysql fuerte porque para usarla, ya tendrían acceso a su servidor". Estamos hablando de una contraseña de 4 dígitos que es una palabra estándar del diccionario de inglés en un sitio web de negocios en vivo.

Sin influir en las respuestas con mi propio conocimiento y experiencia, me gustaría mostrarles algunas respuestas de una fuente desinteresada de terceros. ¿A alguien le importa hablar sobre esto? Programación / respuestas prácticas serían apreciadas.

Ciudadano
fuente
77
Suena como uno de estos root:rootinicios de sesión.
3
Contraseña de cuatro dígitos? Al igual que 1337?
Gumbo

Respuestas:

39

Quienquiera que haya hecho este argumento parece estar diciendo "Una vez que alguien ponga su pie en la puerta, también podrías darle acceso completo". Según esa lógica, un firewall niega la necesidad de todas las contraseñas en su red interna.

Las contraseñas seguras son un paso para limitar el daño causado por la intrusión en la red. No hay razón para lanzar las manos en la derrota solo porque una pequeña parte de su red se vio comprometida.

meagar
fuente
13
'Defensa en profundidad' es el lema del día.
Scott Pack
3
Solo tenga en cuenta que una vez que tengan acceso a su sistema de archivos, tendrían acceso a su archivo PHP o archivo de configuración donde se almacena su contraseña de todos modos, a menos que haya configurado alguna seguridad adicional para esto, que generalmente es difícil o imposible en hosts compartidos .
Lotus Notes
2
@Lotus Suponiendo que los servidores PHP y MySQL son la misma máquina.
meagar
2
@Lotus Notes, de todos modos no debe usar el usuario root en una aplicación. Una aplicación bien diseñada solo permite el acceso que es necesario. La mayoría de las veces, esto incluye el acceso a los datos, pero no siempre todos los datos, y en algunos casos, incluso puede ser de solo lectura.
bradlis7
1
Notas de @Lotus: Muchos hosts compartidos emplean suPHP, que proporciona el chmod-ing 660 de archivos PHP sensibles.
webbiedave
14

Realmente se remonta a la idea de ' Defensa en profundidad ', por lo que al menos una contraseña segura podría ralentizarlos para que pueda descubrirlos y bloquearlos. Me gusta la analogía de tener una sola llave para una comunidad cerrada versus una llave en la puerta de cada casa.

Codificador de potencia
fuente
Estaba esperando que alguien viniera con una analogía de llave / puerta: |
meagar
Pero una llave diferente para cada puerta de su casa probablemente esté por la borda. ¿Dónde se traza la línea?
Dan
44
@Dan: pero en una instalación segura, esperarías una llave diferente para cada puerta, ¿verdad? En una casa unifamiliar, no. Es de esperar que todas las cerraduras usen la misma llave. Pero en una casa compartida (como con los compañeros de cuarto), dependería de la filosofía del hogar: puertas desbloqueadas (tal vez puertas que usan la misma llave) o diferentes llaves por compañero de cuarto.
wallyk
55
Las cerraduras y otros dispositivos de seguridad se utilizan principalmente para el ladrón aficionado o solo para disuadir al profesional. Otro elemento disuasorio es la iluminación adecuada alrededor de la casa y evitar las rutinas regulares que hacen obvio dónde y qué hacer durante el día. Nunca hable con un extraño sobre planes de vacaciones y avise a la policía local si se va por un período prolongado de tiempo. Siempre trate de hacer que parezca que alguien está en casa. Además, para ... espera, ¿cuál era la pregunta otra vez?
Stephen Watkins, el
6

Depende mucho de cómo esté configurado su servidor MySQL. Si solo acepta solicitudes fuera de la ip de inicio (127.0.0.1), eso lo hace moderadamente más seguro.

Dado un escenario en el que permite IP remotas, se convierte en un negocio mucho más grande.

Además de eso, siempre es bueno tener una seguridad fuerte en caso de intrusión, mejor que se vayan con la menor cantidad posible.

DivinusVox
fuente
6

¿Hay un candado en la caja de caja chica en contabilidad? Si es así, ¿por qué? ¿El edificio no tiene seguridad física?

JohnFx
fuente
5

no necesita una contraseña segura de usuario mysql porque para usarla, ya tendrían acceso a su servidor

Esto no es cierto, porque mysql también se puede usar en un entorno cliente-servidor entre redes, y de manera predeterminada, lo único que necesita es usuario / pase para obtener acceso a la base de datos (por supuesto, con el puerto 3306 abierto y el servidor visible públicamente )

Denis Biondic
fuente
5

De hecho, puede ser al revés: si tienen acceso a mysql, podrían acceder al sistema operativo del servidor.

  1. MySQL LOAD_FILE y las consultas SELECT ... INTO OUTFILE permiten a los usuarios de mysql leer y escribir archivos en el sistema de archivos subyacente. Cualquier archivo al que el usuario mysql también tenga acceso (¿está ejecutando MySQL como root?). Si está bajo Linux / UNIX, simplemente consulte SELECT LOAD_FILE ('/ etc / passwd') y vea cómo sonríen. Si mysqld se está ejecutando como root, puede probar SELECT LOAD_FILE ('/ etc / shadow') y ver llorar a su administrador de sistemas.
  2. Muchas veces en Linux, el usuario "root" de mysql tiene la misma contraseña que el usuario "mysql" del servidor (el que ejecuta mysqld). Entonces, si esta contraseña es trivial (o puede ser encontrada por herramientas automatizadas como medusa / hydra), puede simplemente SSH / telnet directamente al servidor de la base de datos y perder el tiempo.
Renik
fuente
4

Si alguien obtiene acceso de root a su servidor, entonces no necesitará ninguna contraseña de MySQL. Pero si solo pueden ejecutar aplicaciones en su servidor como usuario no root y no web, entonces una contraseña segura de MySQL aún puede guardar sus datos. Pero sí, la mayoría de los hacks provienen de la web, lo que significa que el hacker tendrá acceso a su cuenta web y, por lo tanto, puede extraer la contraseña de la base de datos de los archivos PHP.

Todo esto suponiendo que su servidor MySQL no acepte conexiones desde ningún lugar que no sea localhost. Si es así, entonces necesitas un PW fuerte.

rustyx
fuente
4

Algo que parece haberse pasado por alto aquí es: ¿confía en sus usuarios en la red de confianza?

Francamente, no lo sé, porque sé cómo era cuando empecé en TI. Golpearía y pincharía en áreas a las que no tenía derecho, y, francamente, una contraseña MySQL débil habría sido una delicia para mí, ya que habría tenido la oportunidad de entrar en suerte y podría haber causado estragos (por accidente, por supuesto).

¿Qué sucede si alguien usa la ingeniería social para ingresar a su red de confianza? ¿Qué harás despues? Si están en una máquina detrás del cortafuegos, blammo, la seguridad de su cortafuegos sólida como una roca se arruina y están directamente en la máquina.

Las contraseñas seguras son muy simples de hacer y hay muchas herramientas de administración de contraseñas para facilitar el mantenimiento de las contraseñas, por lo que realmente no hay excusa para no hacerlo.

Mark Henderson
fuente
La cuestión es que no debe permitir conexiones remotas en MySQL, o si lo necesita, especifique localhost/ 127.0.0.1como el host. De esta manera, nadie puede acceder a las bases de datos externas (incluso las que están en la misma red).
Chazy Chaz
2

Eh Si su servidor está bloqueado por IP y su usuario está restringido a SELECCIONAR en un conjunto de tablas donde no le importa la información, no es un gran problema.

Por otro lado, configuré mis contraseñas de MySQL golpeando el teclado por un minuto y copio pegando el galimatías resultante en un archivo protegido, al que hago referencia en mi código cada vez que necesito iniciar sesión. Así es como debería funcionar.

¿Por qué hacerlo fácil? Si la contraseña se adjunta a una cuenta local limitada (como deberían estar todas), ¿por qué la está escribiendo? Si no es así, debe tener una contraseña cuya fortaleza sea relativa al valor de los datos que está protegiendo.

Satanicpuppy
fuente
2

La información de acceso / cuenta de mySQL se almacena en un archivo separado de las bases de datos reales. Por lo tanto, simplemente puede arrastrar y soltar un archivo diferente en su lugar. Con mySQL si tienen acceso de escritura a la parte relevante de su sistema de archivos, el juego ha terminado.

John Robertson
fuente
2

Porque los requisitos cambian ...

Por lo tanto, el servidor de hoy que se limita a aceptar conexiones MySQL solo a la máquina local, puede abrirse mañana para que se pueda usar una herramienta externa para administrar la base de datos. La persona que realiza esta configuración puede no saber que hay contraseñas extremadamente débiles en uso.

Si a su usuario le incomoda tener que recordar una contraseña buena y segura (por ejemplo: larga, aleatoria), considere hacerla muy segura y luego guardarla en el .my.cnf- incluso más conveniente que tener una contraseña débil que tenga que escribir. Por supuesto, esto también tiene implicaciones de seguridad, pero tendrá que almacenar su contraseña en algún lugar, por ejemplo, las aplicaciones que acceden a ella, por lo que ya está asegurando copias de la contraseña.

Pero también lea lo que dijo @meagar.

Sean Reifschneider
fuente
1

La premisa de que ya tendrían acceso no es cierta. Sin embargo, si tienen acceso y tienen una cuenta no privilegiada, aún podrían hackear fácilmente la contraseña de mysql.

Además, si el servidor es un servidor de producción en vivo, entonces usted se anuncia a sí mismo en Internet. Eso significa que en algún momento, alguien SE intentar un ataque de fuerza bruta en ese servidor, incluyendo MySQL, tanto el puerto y la cuenta de usuario.

Si le interesan los datos, los pasos básicos son tener una contraseña raíz diferente para la base de datos que para el usuario raíz. otros han declarado que también debe tener los permisos más bajos posibles para usuarios y programas.

Una contraseña de 4 caracteres se puede piratear en minutos, en una computadora bastante barata.

Puede que solo esté repitiendo lo que otros han dicho, pero cuanta más munición tenga para su gerente, mejor.

weismanm
fuente
1

Muchas de las razones del escenario de la vida real estaban cubiertas por publicaciones anteriores, así que agregaré la "filosofía". Usar contraseñas seguras y tomar precauciones para reforzar su seguridad es una filosofía de trabajo. Una forma de pensar.

El uso de una contraseña débil ahora porque su mysql se ejecuta solo en 127.0.0.1 y solo el usuario root tiene acceso a ella, muestra que no piensa en el futuro. ¿Qué sucede si algún día necesita otorgar acceso a través de la red a su mysql? ¿Recordarás cubrir todos los agujeros de seguridad que dejaste?

Un buen administrador antepone el peor escenario al punto de paranoia.

Cristian Vrabie
fuente
1

Depende de qué derechos tenga el usuario, siempre debe bloquear las cosas en múltiples niveles. También depende de los datos que esté almacenando en su base de datos. También digamos hipotéticamente que hay una vulnerabilidad en MySQL que les permite tomar el control de toda la base de datos, pero solo necesitan iniciar sesión en cualquier cuenta de usuario. Si su contraseña es segura, esta vulnerabilidad se silenciará. Pero esto realmente solo depende de su caso específico.

ddcruver
fuente
Si el servidor MySQL se ve comprometido, el usuario y la contraseña son inútiles. Los archivos de la base de datos no están encriptados. Los usuarios de MySQL para aplicaciones deben tener localhost / 127.0.0.1 como host para que no puedan usarse de forma remota o deshabilitar conexiones remotas.
Chazy Chaz
1

Es muy fácil hacerse pasar por otra persona en mysql. Dada una identificación de usuario sin contraseña (la seguridad más débil) simplemente use mysql -u userid. Si tiene una contraseña, es un poco más difícil, pero una contraseña débil lo hace fácil. Si root no tiene contraseña, puedo acceder a root como mysql -u root. Entonces puedo hacer cualquier cosa dentro de la base de datos que la raíz pueda.

El uso de especificaciones de host en la seguridad también es una buena idea, especialmente si el acceso remoto está o puede estar disponible.

Las contraseñas en los archivos pueden y deben estar algo protegidos por permisos. El acceso por root, o el propietario del archivo de contraseña es trivial. Si es posible, se debe utilizar el cifrado de la contraseña en el disco. Esto hace que sea un poco más difícil de acceder, pero aún vulnerable.

BillThor
fuente
0

Bueno, si no está alojando el db MySQL usted mismo, pero está en un servicio de alojamiento y alguien obtiene acceso a la dirección IP de su servidor, el nombre de usuario y la contraseña son su última línea de defensa. Siempre es bueno tener un nombre de usuario / contraseña seguro.

John
fuente
Meh Si alguien obtiene acceso al servidor, puede leer el usuario / contraseña de los archivos PHP ... Actualice o elimine esta respuesta.
Chazy Chaz