Limitar el acceso a base de datos de WordPress

Última revisión: 2 de octubre de 2021

Con respecto a la base de datos (MySQL, MariaDB…) hay pocas cosas a hacer propiamente dichas desde el punto de vista de WordPress, pero sí que se pueden poner algunas complicaciones para aquellos que intenten acceder a ella.

Acceso

La primera es la del acceso a la misma. Por norma general WordPress se instala en máquinas que pueden tener acceso externo, por lo que hemos de bloquearlo.

Para ello, cuando creemos el usuario, hemos de limitarlo para que, por ejemplo, sólo se pueda acceder desde la misma máquina si tienes todo en un mismo servidor:

GRANT ALL ON tu_database.* TO 'tu_usuario'@'localhost' IDENTIFIED BY 'tu_contraseña';

Recuerda sustituir los elementos ‘tu_database’, ‘tu_usuario’, ‘localhost’ y ‘tu_contraseña’ por los que proporcione tu proveedor.

Con esto, tu usuario sólo tendrá acceso a una base de datos y sólo desde la misma máquina. Así, si tienes WordPress y te roban los accesos de una web, no podrían acceder a los de otra máquina.

Además, si tienes tu servidor web en una máquina y tu base de datos en otra, puedes aplicar una configuración similar (ejemplo con IP privadas):

GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON tu_database.* TO 'tu_usuario'@'10.0.0.2' IDENTIFIED BY 'tu_contraseña';

Recuerda sustituir los elementos ‘tu_database’, ‘tu_usuario’, ‘10.0.0.2’ y ‘tu_contraseña’ por los que proporcione tu proveedor.

O con IP públicas:

GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON tu_database.* TO 'tu_usuario'@'8.8.8.8' IDENTIFIED BY 'tu_contraseña';

Recuerda sustituir los elementos ‘tu_database’, ‘tu_usuario’, ‘8.8.8.8’ y ‘tu_contraseña’ por los que proporcione tu proveedor.

De esta forma sólo las máquinas con esas IP podrían acceder a tu base de datos. Ten presente que todo esto se puede complicar mucho y que estos son ejemplos sencillos pero útiles. Úsalos como base para tu configuración personalizada.

Hay algunos detalles más que se pueden deshabilitar en determinados casos. Por ejemplo, si tu base de datos está en la misma máquina que el sitio web (o sea, el servidor es «localhost») podrías desactivar (o al menos comprobar) que no funcionaría ningún acceso externo. Para ello puedes buscar el fichero de configuración de MySQL en [/etc/my.cnf] o [/etc/msqyl/my.ini], y verificar que en la zona de configuración [[mysqld]] tienes incluidas estas dos líneas:

skip-networking
bind-address=127.0.0.1

Además, algo que seguramente nunca harás con tu WordPress y su base de datos es cargar ficheros en la misma, por lo que desactivaremos los comandos de LOCAL INFILE, en la misma zona que el punto anterior:

set-variable=local-infile=0

Prefijo de tablas

Otro de los elementos clásicos de seguridad en WordPress es el «prefijo» de las tablas de la base de datos. Este sistema permite que cohabiten varios WordPress en una única base de datos. Por defecto el prefijo histórico de WordPress es el [wp_], que deberíamos cambiar.

Lo más habitual es poner un nombre sencillo. Si mi web es example.com, lo más probable es que ponga como prefijo [example_]; esto es mejor que el caso anterior, pero algo bastante fácil de encontrar. Es por esto que te recomiendo utilizar nombres más aleatorios del estilo a [a1b2c3_] en el que cruces letras y números. Recuerda sólo utilizar letras en minúsculas de la [a] a la [z], y números del [0] al [9]. Por poner algunos ejemplos más: [c2712m_], [jgriyz_], [ah8zhl_]…

Cambiaremos el nombre de los prefijos en el fichero de configuración [wp-config.php]:

$table_prefix = 'wp_';

Recuerda sustituir ‘wp_’ por tu nuevo prefijo, solo en instalaciones nuevas.

¿Qué ocurre si mi instalación de WordPress es antigua y tengo ya muchas tablas y configuraciones? Puedes utilizar un plugin como Brozzme DB Prefix.


Seguir con Seguridad para WordPress


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.