Estas sencillas instrucciones muestran cómo proceder después de una instalación por defecto, asegurando la base de datos MySQL de accesos no deseados.
Instalar una base de datos MySQL es lo más sencillo del mundo. Hasta un neófito puede hacerlo. En plataformas Windows utilizando un sencillo asistente de "siguiente/ siguiente/ siguiente" ésta se instala en pocos minutos. Sin embargo, esta operación por defecto deja un buen número de agujeros de seguridad que, muchas veces, por desidia o desconocimiento no se corrigen. Una instalación por defecto de MySQL es una puerta de entrada a todo tipo de intrusos.
Una vez instalada la base de datos MySQL, para establecer la contraseña del usuario root hay que teclear desde la shell o línea de comandos de su directorio:
mysqladmin -u root password 'contraseña'
De forma predeterminada MySQL tiene dos usuarios definidos y una base de datos 'test'. Los usuarios no tiene predefinida ninguna contraseña y las tablas de la base de datos, que comienzan por 'test', tienen permisos de escritura para todo el mundo. Para deshabilitar estos usuarios y eliminar las tablas mencionadas hay que escribir:
DELETE FROM user WHERE User = '';
DELETE FROM db WHERE Host = '%';
Si la base de datos solo necesita estar accesible desde la máquina local se debería deshabilitar el TCP Networking. De esta forma eliminaremos la posibilidad de conectarse al demonio sin una cuenta en la máquina en la que esté alojado. Para llevar ésto a cabo se deberá editar el script de arranque 'safe_mysqld' y modificar las siguientes lineas (se incluyen los números de línea siendo la primera aparición el formato actual y la segunda el formato definitivo):
119: --skip-locking >> $err_log 2>&1
119: --skip-networking --skip-locking >> $err_log 2>&1
122: --skip-locking "$@" >> $err_log 2>&1
122: --skip-networking --skip-locking "$@" >> $err_log 2>&1
Se debería iniciar MySQL con el parámetro --skip-symlink. Con esto se estáría preveyendo la posibilidad de una 'escalada de privilegios' mediante la sobrescritura de archivos en el sistema.
Para prevenir la posibilidad de sufrir un ataque por 'denegación de servicio' se debería restringir las conexiones a un único usuario, estableciendo la variable max_user_connections. Pueden comprobarse los valores actuales de las variables con el comando SHOW VARIABLES, y pueden establecerse mediante el comando SET.
También se debería deshabilitar la posibilidad de utilizar el comando LOAD DATA LOCAL INFILE, lo que eliminará la posibilidad de accesos no autorizados en modo lectura a los ficheros locales. Para ello se deberá agregar el siguiente parámetro al fichero de configuración de MySQL: my.cnf:
set-variable-local-infile=0
Usuarios que han visto este tema también han visto...
- Manual Rewrite de Apache
- Página de inicio de una Web
- La importancia de la página de productos y algunas recomendaciones
- Top 10 de las técnicas SEO
- Seguro que ya no quedan cosas gratis en Internet?
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.