Cómo proteger datos importantes en MySQL
El activo más valioso de una empresa suele ser la información del cliente o del producto en su base de datos. Por lo tanto, una parte importante de la gestión de bases de datos en estas empresas es proteger estos datos de ataques externos y reparar fallas de software/hardware.
En la mayoría de los casos, los fallos de software y hardware se gestionan mediante mecanismos de copia de seguridad de datos. La mayoría de las bases de datos tienen herramientas integradas para automatizar todo el proceso, por lo que el trabajo es relativamente fácil y está libre de errores. Pero el problema viene del otro lado: evitar que intrusos externos roben o destruyan la información de la base de datos. Desafortunadamente, generalmente no existen herramientas automatizadas para resolver este problema y requiere que los administradores coloquen obstáculos manualmente para mantener seguros los datos de la empresa;
Una razón común dada para no proteger una base de datos es que la tarea es "engorrosa" y "compleja". Esto es cierto, pero si usa MySQL, puede utilizar algunas funciones convenientes para reducir significativamente el riesgo que enfrenta. Se enumeran las siguientes funciones:
◆Eliminar comodines en las tablas de autorización.
El sistema de control de acceso MySQL opera a través de una serie de las llamadas tablas de autorización para definir los derechos de acceso de un usuario a nivel de base de datos, tabla o columna. Sin embargo, estos formularios permiten a los administradores configurar licencias generales para los usuarios o configurar un conjunto de formularios que aplican comodines. Hacerlo es potencialmente peligroso porque la cuenta restringida podría usarse para acceder a otras partes del sistema. Por lo tanto, tenga cuidado al configurar los permisos de los usuarios y asegúrese siempre de que los usuarios sólo tengan acceso a lo que necesitan. Tenga especial cuidado al configurar superprivilegios para usuarios individuales, ya que este nivel permite a los usuarios normales modificar la configuración básica del servidor y acceder a toda la base de datos.
Recomendación: aplique el comando Mostrar privilegios a cada cuenta de usuario para ver la tabla de autorizaciones y ver si es apropiado aplicar permisos comodín.
◆Requiere el uso de una contraseña segura.
La seguridad de las cuentas de usuario está estrechamente relacionada con las contraseñas utilizadas para protegerlas. Entonces, al instalar MySQL, lo primero que debe hacer es establecer la contraseña de la cuenta raíz de MySQL (la contraseña predeterminada está vacía). Después de corregir esta vulnerabilidad, deberíamos exigir que cada cuenta de usuario use una contraseña y no contraseñas heurísticas como cumpleaños, nombres de usuario o palabras del diccionario, que son fácilmente identificables.
Recomendación: Aplique la opción MySQL-security-authorization para evitar el uso del antiguo y menos seguro formato de contraseña de MySQL.
◆Comprueba los permisos del archivo de configuración.
En términos generales, para que las conexiones al servidor sean más rápidas y convenientes, los usuarios individuales y los administradores del servidor deben almacenar las contraseñas de sus cuentas de usuario en un archivo de opciones MySQL de un solo usuario. Sin embargo, la contraseña se almacena en un archivo en texto plano y se puede revisar fácilmente. Por lo tanto, debe asegurarse de que otros usuarios del sistema no consulten dichos archivos de configuración de usuario único y que no se almacenen en una ubicación no pública. Lo ideal es que desee almacenar un único perfil de usuario en el directorio raíz del usuario con la licencia 0600.
◆Cifrar la transmisión de datos entre el cliente y el servidor:
Un problema importante con MySQL (y otras) arquitecturas cliente-servidor es la seguridad de los datos transmitidos a través de la red. Si la interacción entre cliente y servidor se produce en texto plano, es posible "olfatear" los paquetes transmitidos y obtener información confidencial. Puede solucionar esta vulnerabilidad activando SSL en su configuración de MySQL o aplicando una aplicación de seguridad como OpenSSH para establecer un "canal" cifrado seguro para los datos transferidos. Cifrar la conexión entre el cliente y el servidor de esta manera hace que sea extremadamente difícil para usuarios no autorizados acceder a los datos.
◆Está prohibido el acceso remoto.
Si los usuarios no necesitan acceder al servidor de forma remota, se puede forzar que todas las conexiones MySQL se completen a través de archivos de ranura UNIX, lo que reduce en gran medida el riesgo de ataques a la red. Este proceso se puede completar omitiendo las opciones de red e iniciando el servidor. Esto evita las conexiones de red TCP/IP a MySQL y garantiza que ningún usuario pueda conectarse al sistema de forma remota.
Sugerencia: puede agregar la instrucción de dirección vinculante 127.0.0.1 en la configuración del servidor MySQL para mejorar esta función, lo que obliga a MySQL a vincular la dirección IP de la máquina local para garantizar que solo los usuarios del mismo sistema puedan conectarse a MySQL.
◆Monitorear activamente los registros de acceso a MySQL.
Hay muchos archivos de registro diferentes en MySQL que registran conexiones de clientes, consultas y errores del servidor. El más importante de ellos es el registro de consultas universal, que registra los tiempos de conexión y desconexión de cada cliente con marcas de tiempo y registra cada consulta realizada por el cliente. Si sospecha un comportamiento inusual, como una intrusión en la red, monitorear este registro es una buena manera de comprender el origen del comportamiento.
Asegurar su base de datos MySQL es un trabajo diario. Por lo tanto, incluso si completa los pasos anteriores, aún necesitará dedicar más tiempo a aprender más recomendaciones de seguridad, monitorear y actualizar proactivamente la seguridad de su sistema.