Pregunta Iniciar sesión en MySQL


De vez en cuando hay intentos fallidos de inicio de sesión en nuestro servidor de producción MySQL (el panel de control de MySQL nos alerta). ¿Hay una manera de registrar cada inicio de sesión exitoso y fallido al servidor MySQL sin habilitarlo? general_log?

Nosotros pensamos general_log No es una opción debido a que es un servidor de producción con alta carga.


23
2017-09-14 17:44


origen


Considere el uso de MariaDB Audit plugin mariadb.com/resources/blog/…  mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin - Mersh


Respuestas:


Solo para informar al curioso: ¡indaga en tu registro de errores y listo!

(1). edit my.cnf (Se encontró documentación de configuración aquí)

[mysqld]

: # Ingrese un nombre para el archivo de registro de errores. De lo contrario, se utilizará un nombre predeterminado.

log_error = / var / log / mysql / error

: #defaults a 1. Si el valor es> 1, las conexiones canceladas y los errores de acceso denegado para los nuevos intentos de conexión se escriben en el registro de errores

log_warnings = 2

...

(2). en comando ejecutar

$ sudo cat /var/log/mysql/error.err | egrep '[aA] cceso denegado'

(3). y lo tienes!

(4). si necesita restringir al usuario (ataque de dos o mysql intento de recuperación de contraseña en una base de datos multiusuario), entonces (http://dev.mysql.com/doc/refman/5.5/en/user-resources.html)

mysql> GRANT USAGE ON *. * TO 'attacker' @ 'localhost' CON MAX_CONNECTIONS_PER_HOUR 100;

para restringir a solo 100 intentos de recuperación de contraseña por hora.


17
2017-12-06 09:34





Creo que el registro general podría registrar todos los intentos de inicio de sesión (éxito y fracaso) entre muchas otras cosas. El problema principal es que el registro general afectará el rendimiento de su base de datos. Puede activar el registro general con la consulta

SET GLOBAL general_log = 'on'

para las nuevas versiones de MySQL.


2
2018-05-06 18:52



¿Esto es temporal o permanente ?, si es temporal significa que necesito modificar /etc/mysql/my.cnf de mysql? - DarckBlezzer
Es temporal. Ese enfoque puede funcionar, o puede agregar --general-log a las banderas al iniciar MySQL. - rmc00


Hola, no creo que sea posible.

A partir de mysql 5.1.29, puede especificar la opción de almacenamiento (tabla o archivo) y la ubicación y el registro que desea: error, general, binario o consulta lenta. Que yo sepa, no puede especificar el formato del registro o lo que se registra. Podría estar equivocado, pero creo que todos los intentos de inicio de sesión se registrarán en el registro general, y no en el error.

Sin embargo, asumiendo que su servidor mysql se está ejecutando en una máquina separada, desde su servidor de aplicaciones, y necesita el puerto 3306 (o lo que sea) abierto y no puede usar el túnel ssh, su servidor mysql no debería ser accesible por nadie. nada Recomiendo no exponerlo al tráfico web, y si debe (como en el caso de residir en algún lugar que no esté detrás de su firewall) vincularlo a la dirección ip o al bloque ip de su servidor de aplicaciones y su ip de acceso de administrador (donde se encuentre). accediendo desde)

Espero que ayude.


1
2018-03-17 16:15





Si el servidor en cuestión no debería tener conexiones externas, según lo configurado, me preocuparía algún tipo de ataque contra su servidor de aplicaciones, a menos que los inicios de sesión fallidos provengan de nuevas aplicaciones que se están implementando antes de que el usuario / paso haya sido configurado.

Si el servidor está expuesto de alguna manera a conexiones externas en 3306, a menos que sea intencional y necesario, establecería la configuración como dijo Nick y también verificaría el uso de iptables para restringir el tráfico a 3306 desde solo los servidores de aplicaciones.


0
2018-05-12 00:57



MySQL niega automáticamente las conexiones de la dirección IP que no tienen al menos una fila coincidente en mysql.user - David M


A http://www.mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging/ , el autor muestra un método para capturar los paquetes usando tcpdump y filtrando la salida según la cadena.

Esto funciona en torno a sus inquietudes con respecto al registro y rendimiento general, aunque tcpdump podría incurrir en una penalización de rendimiento menor. Esta solución también registrará menos datos que el Registro de consultas generales.

Yo no he usado esto, pero suena muy útil.


0
2018-05-14 22:51



Suena bien, pero el enlace no funciona para mí. - CarlosH
El enlace funciona para mí esta mañana, usando Firefox. mysqlperformanceblog.com/2008/11/07/poor-mans-query-logging - Stefan Lasiewski
Y me interesaría escuchar tu experiencia con esto. - Stefan Lasiewski