29.1.08

MySQL: Seguridad básica

Cuando hablamos de asegurar un servicio se suele entender como tal el filtrar el acceso no deseado al mismo mediante reglas de firewall. En general, servidores de uso no corporativo, utilizarán configuraciones de seguridad por defecto que, si van a ser accesibles por un colectivo, pueden no ser las adecuadas.
Veamos un juego de reglas básico para asegurar una instalación por defecto de MySQL Server:

1) Asociar el servicio al dispositivo(s) de red adecuado bind-address=127.0.0.1, denegando el acceso a otras redes, de haberlas. Establecer las reglas de firewall que se consideren adecuadas para la gestión del mismo.

2) Eliminar los comodines de las tablas de acceso (GRANT). Jamás permitir contraseñas en blanco o comodines en la creación de permisos de acceso a usuarios y asegurarse de que cada usuario accede únicamente a las tablas necesarias.

3) Requerir el uso de contraseñas seguras, eliminando la contraseña en blanco por defecto para root. Utilizar la opción --secure-auth para prevenir el uso de passwords crackeables.

4) Revisar los permisos de los ficheros de configuración. Aunque se acelera el acceso, no conviene guardar las configuraciones en ficheros individuales por usuario, ya que al hacerlo así, se almacenan en texto plano. En este supuesto, deben asegurarse los ficheros con permisos 600.

5) Prevenir los sniffers con cifrado en el acceso cliente/servidor, habilitando SSL en la configuración de MySQL o con un tunel SSH.

6) Deshabilitar el acceso remoto, con firewall (punto 1) y arrancando el servicio con la opción --skip-networking

7) Revisar periódicamente los logs

Con este juego de medidas básicas podemos disponer de un servidor fiable y robusto.

No hay comentarios: