Hosting WordPress Webempresa

Optimiza y da seguridad a tu WordPress

por | Oct 8, 2022 | Aprender WordPress, Programación WordPress, Seguridad WordPress, WordPress

Optimiza y da seguridad a tu WordPress

 

Optimizar y dar seguridad a un sitio construido en WordPress al 100% es casi imposible pero sí que podemos aplicar algunas practicas que nos ayudaran a proteger nuestra instalación y a mejorar su rendimiento.

WordPress es un cajon vacío en el que los temas y plugins se desarrollan por diferentes desarrolladores y cada uno tiene una forma de codificación distinta. Los plugins que instalamos contiene archivos CSS y JS independientes por lo que algunas veces es imposible agruparlos en un único archivo como seria lo deseable y si a eso le sumamos que no todos los desarrolladores actualizan sus plugins al mismo tiempo , incluso se quedan en proyectos muertos y no se actualizan más provocando fallos en WordPress, tenemos el caldo perfecto para que nuestro WordPress sea vulnerable o de un día para el otro se caiga sin que nosotros hayamos realizado nada, por eso la mejor protección siempre es tener una copia de seguridad de nuestra web para protegernos de cualquier problema ( rotura de base de datos, virus , hack, operaciones maliciosas….. )

En esta entrada vamos a ver algunas opciones que podemos poner en practica para mejorar el rendimiento y la seguridad de nuestro WordPress.

Optimizar WordPress

Existen algunos trucos y buenas practicas que permiten optimizar WordPress, vamos a ver algunas operaciones de optimización:

Optimiza los archivos CSS y JS fusionándolos en un solo archivo

Existen plugins que nos ayudaran en esto, uno de los plugin mas populares es Autoptimize el cual simplifica mucho la optimización de la WordPress. Puedes agregar, minimizar y almacenar en caché archivos JS y CSS, inyectar CSS en el encabezado de la página de forma predeterminada y minimizar HTML.

Tienes una guía en este blog donde puedes ver todas las opciones que ofrece el plugin:

Optimiza las imagenes

Uno de los puntos que más pueden sobrecargar la web son las imagenes, tener las imagenes bien optimizadas antes de subirlas a nuestro WordPress nos ayudara a mejorar la carga, podemos utilizar alguna aplicación de retoque como puede ser GIMP o Photoshop, solo tenemos que cargar la la imagen y guardarlas en formato WebP o exportarlas para web, pero eso no es todo, podemos optimizar mas las imagenes con el plugin optimizador.io 

Vaciar la papelera automaticamente.

La papelera va almacenando datos y esto sobrecarga nuestra base de datos con entradas que no queremos, podemos vaciarla fácilmente añadiendo lo siguiente en el archivo wp-config que podemos encontrar en la raíz de nuestra instalación:

  • Accedemos a la carpeta donde tenemos la instalación
  • Con el boton de la derecha editamos el archivo wp-config

 

  • Añadimos los siguiente al archivo wp-config:
/* vaciamos la papelera cada 5 días */
define ( 'EMPTY_TRASH_DAYS', 5 ) ;

En este ejemplo lo que hacemos es vaciar la papelera cada 5 días automaticamente, se puede variar si queremos que el intervalo sea mayor o menor.

Limitar y eliminar las revisiones.

Cada vez que se crear uan entrada/pagina WordP realiza copias de seguridad automáticas, lo que solemos llamar revisiones, y la verdad que no esta mal ya que dispones de una revision por si quieres volver a tras o si tuvimos algún problema ( se quedo bloqueado, nos quedamos sin luz a mitad de trabajo, etc… ) pero estas revisiones o copias de seguridad se van almacenado y sobre cargando la base de datos.

Para evitar que se creen revisiones, podemos añadir lo siguiente en el archivo wp-config, por ejemplo debajo del que añadimos anteriormente:

/* Desactivamos las revisiones */
define('WP_POST_REVISIONS', false);

Si no queremos eliminar las revisiones podemos limitarlas

/* Limitamos las revisiones a 5 */
define('WP_POST_REVISIONS', 5);

Tambien podemos limitar el tiempo entre las copias de seguridad automáticas:

/* Limitamos el tiempo de las copias a 1 hora */
define('AUTOSAVE_INTERVAL', 3600);

Pero esto no eliminara lo que tenemos ahora en nuestra base de datos y tendremos que eliminarlo directamente.

Eliminar revisiones de la base de datos

Para eliminar todas las revisiones de la base de datos podemos utilizar una consulta SQL

  • Accedemos a nuestra cuenta de wePanel
  • Seleccionamos phpMyAdmin

  • Seleccionamos la base de datos que utiliza nuestra instalación y pulsamos en la pestaña ” SQL “

  • Añadimos la siguiente consulta y pulsamos en continuar
DELETE FROM wp_posts WHERE post_type = "revision";

Aquí tenemos que tener en cuenta que hay que modificar el prefijo por el que utiliza nuestras tablas ” prefijo_posts

Una vez termine nos mostrara los resultados

 

Eliminar copias de seguridad automáticas de la base de datos

Ya que estamos aquí vamos a eliminar tambien todas las copias de seguridad automáticas que se crean en la base de datos, para ello seguiremos los mismos pasos que en la anterior pero utilizaremos la siguiente consulta:

 DELETE FROM wp_posts WHERE post_status = 'auto-draft';

A tener en cuenta lo mismo que en la anterior consulta, hay que modificar el prefijo y eso es para todas las consultas que realicemos en la base de datos.

Si no queremos eliminar todas las copias de seguridad o no queremos tocar la base de datos podemos utilizar una función que nos elimine las copias cada cierto tiempo

function wp_delete_auto_drafts() {
global $wpdb;

// Limpiar borradores automáticos antiguos con más de 7 días de antigüedad.
$old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
foreach ( (array) $old_posts as $delete ) {
// Force delete.
wp_delete_post( $delete, true );
}
}

Esta función eliminara las copias que tengan mas de siete días.
Puedes añadir la función en el archivo functions.php que encontraras en wp-content -> tu_plantilla o utilizar un plugin que nos permita añadir código.
En esta entrada del blog se explica que son los snippets y como añadirlos:

Limpiar la tabla wp_commentmeta

Si utilizas el plugin Akismet igual te abras dado cuenta que la tabla wp_commentmeta contiene muchos datos ya que el plugin la sobrecarga de una manera importante.

Podemos hacer una limpieza de la tabla utilizando la siguiente consulta, como en las anteriores consultas recuerda que tienes que modificar el prefijo por el de tu base de datos

DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments);

Una vez termine la consulta anterior lanzamos la siguiente:

 DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';

Eliminar comentarios SPAM

Como todos los datos, los comentarios SPAM tambien se almacenan en nuestra base de datos y por supuesto sobrecargando nuestra web.
Para eliminarlos utilizaremos la siguiente consulta:

 DELETE FROM wp_comments WHERE comment_approved = 'spam';

Podemos eliminar comentarios aprobados o en espera de aprobación modificando los valores de la columna comment_approved

0 = comentario pendiente de aprobación
1 = comentario aprobado
spam = comentario clasificado como SPAM

Eliminar datos temporales de la tabla optins

La tabla wp_options acumula una gran cantidad de datos que muchos de ellos son inútiles y no nos sirven, sobretodo sí hemos estado probando o utilizando plugins.
Por desgracia cuando instalamos un plugin y lo eliminamos, los desarrolladores muchas veces olvidan de que sus plugins dejan rastros y todo esto acaba sobrecargando la tabla Options.
Para hacer una limpieza de la tabla wp_options utilizaremos la siguiente consulta:

DELETE FROM wp_options WHERE option_name LIKE '%transients%'

Optimiza las tablas

Esta vez lo tenemos mas facil, para optimizar las tablas solo tenemos que seleccionar las tablas y en el desplegable inferior seleccionamos ” Optimizar la tabla ”

Bueno con esto ya tenemos mas o menos optimizada nuestra web seguro que notaremos una mejora en la carga, ahora nos toca hacer que nuestra web sea un poco más segura.

Dar Seguridad a nuestro WordPress

Son necesarias algunas buenas prácticas para dar seguridad a nuestro WordPress, por supuesto lo primero es disponer siempre de una copia de seguridad lo que nos permitirá que en caso de hackeo podamos restaurarla en cuestión de minutos y como en Webempresa nos tomamos la seguridad muy enserio tienes que saber que dispones de copias de seguridad de los últimos 30 días que puedes restaura fácilmente desde tu cuenta de wePanel con la herramienta SuperBackup, te dejo un articulo donde se explica las bondades de esta herramienta:
-> Copias de Seguridad desde el Panel de tu Hosting en WePanel

  • Mantén siempre actualizado WordPress, ya se que algunas veces es difícil actualizar WordPress ya que tenemos plugins que pueden dejar de ser compatibles o tenemos que espera a que el desarrollador lo actualice pero es importante hacer las actualizaciones, es mas, la actualización de WordPress, la plantilla o de los plugins suele corregir problemas relacionados con la seguridad.
  • Utiliza contraseñas fuertes o complejas, intenta utilizar mayusculas, minúsculas, cifras y caracteres especiales para las conexiones FTP, acceso al administrador, a tu cuenta de panel y paar los correos, cuanto mas difícil lo pongamos mas seguro estaremos y dormiremos mucho mejor
  • No utilices nombres de usuario sencillos como puedes ser admin, estos son los primeros que van a probar si intentan acceder a nuestras instalaciones.
  • Utiliza un plugin de Captcha para los formularios, de esta manera evitarás  los Spams, si utilizas los comentarios, formulario de contacto o registro en al web no te olvides de añadirlo tambien.
  • No llames a la base de datos ” WordPress “, por defecto si instalas WordPress manualmente este sera el nombre de la base de datos si no lo modificas en las opciones que nos ofrece el instalador  y es un nombre muy común, sera la primera opción que un hacker utilizaría, si utilizas el instalador que tienes en tu cuenta de wePanel el nombre de la base de datos se modifica para no tener uno tan genérico.

Oculta los errores de conexión

Cuando accedemos a la administración si por error no ponemos bien nuestros datos WordPress indica si la contraseña o el usuario no son correctos y esa información no debemos ofrecerla en caso de un ataque, recordad que cuantos menos datos dispongan mas difícil se lo pondremos.

Para ocultarlo lo que haremos sera añadir la siguiente función al archivo functions.php o en el plugin que utilices para añadir código.

add_filter ('login_errors' ,create_function ('$error', "return 'error de conexión';"));

Con esto evitaremos ofrecerle que dato es el que esta añadiendo mal y no sabrán si es el usuario o la contraseña:

Modifica los prefijos de las tablas de la base de datos

Por defecto durante la instalación de WordPress ( siempre que sea manual ) el prefijo de las tablas es wp_ con lo que es muy facil para un hacker conocer la estructura de la base de datos, si la instalación la realizas con los instaladores que encuentras en wePanel este problema no lo tendras ya que las tablas tendrán unos prefijos distintos.
Lo primero tenemos que modificar el prefijo en el archivo wp-config.

  • Accedemos a la carpeta de la instalación y editamos el archivo wp-config
  • Para este ejemplo vamos a utilizar el prefijo wp8591_ así que modificaremos la variable $table_prefix por la siguiente:
 $table_prefix = 'wp8591_';

Una vez lo tengas tenemos que ejecutar las siguientes consultas:

RENAME table `wp_commentmeta` TO `wp8591_commentmeta`;
RENAME table `wp_comments` TO `wp8591_comments`;
RENAME table `wp_links` TO `wp8591_links`;
RENAME table `wp_options` TO `wp8591_options`;
RENAME table `wp_postmeta` TO `wp8591_postmeta`;
RENAME table `wp_posts` TO `wp8591_posts`;
RENAME table `wp_terms` TO `wp8591_terms`;
RENAME table `wp_term_relationships` TO `wp8591_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp8591_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp8591_usermeta`;
RENAME table `wp_users` TO `wp8591_users`;

Ten en cuanta que si tienes plugins que crear tablas tendras que renombrarlas tambien de la misma manera.

Después de esto necesitaremos tambien modificar el prefijo en la tabla options y la tabla usermeta con las siguientes consultas:

UPDATE 'wp8591_option' SET 'option_name' = REPLACE( option_name, 'wp_', 'wp8591_' ) WHERE 'option_name' LIKE 'wp_%';
 UPDATE 'wp8591_usermeta' SET 'meta_key' = REPLACE( meta_key, 'wp_', 'wp8591_' ) WHERE 'meta_key' LIKE 'wp_%';

Sera tambien necesario buscar dentro de las tablas que crean los plugins el antiguo prefijo y renombrarlos de la misma manera.

Utiliza claves de seguridad

Estas claves de seguridad sirven para cifrar las Cookies y se pueden encontra en el archivo wp-config:

Si no se encuentran las claves en el archivo wp-config se pueden generar en esta URL:
Obtener claves de seguridad

  • Utiliza un archivo index.php vació en los directorios. Si un Hacker entra en los directorios o se produce un problema en el sitio web, esto evitara que puedan ver la jerarquía del directorio y solo mostrara una pantalla en blanco

Oculta la version de PHP

Los Hackers suelen utilizar las vulnerabilidades de las versiones de WordPress para explotar los errores e intentan inyectar código malicioso, si a esto le sumamos que las listas de vulnerabilidades de las version de WordPress estan disponibles en linea, se lo estamos poniendo muy facil, por lo tanto lo mejor siempre es ocultar la version de WordPress y a si se lo pondremos un poco mas difícil.

  • Edita el archivo header.php que encontrarás en wp-content -> themes -> tu_plantilla 
  • Si en el archivo header.php se encuentra al siguiente linea, la eliminas:
<meta name="generator" content="wordpress <?php bloginfo ('version') ; ?>" />
  • Añade lo siguiente al archivo functions.php
remove_action ('wp_head', 'wp_generator');
  • Elimina el archivo readme.txt de la raíz del sitio ya que tambien contiene la version de PHP
  • Añade lo siguiente en el archivo functions.php para eliminar la version de WordPress en los RSS :
add_filter ('get_the_generator_rss2', '_return_false');
add_filter ('get_the_generator_atom', '_return_false');

Impide al acceso de algunos directorios y archivos

Proteger el acceso a algunos directorios y archivos es otra acción más que podemos llevar a cabo para hacer nuestro WordPress más seguro.

  • Añade lo siguiente en el archivo htaccess paar proteger el acceso al archivo wp-config

    Order Deny,Allow
    Deny from all

  • Protege el archivo htaccess añadiendo el siguiente código al archivo .htaccess
order allow,deny
deny from all
  • Protege el acceso a los directorios añadiendo al archivo .htaccess el siguiente código
 Options all -indexes

Bueno ya tenemos esto pero ¿ que tenemos que hacer en caso de un ataque y nuestra web se encuentre infectada ?

  • Limpiar el sitio web eliminado los archivos corruptos o restablecer el sitio web con una copia de seguridad ( Archivos y base de datos )
  • Cambiar la contraseña de la base de datos, hay que tener en cuenta que aparte de modificar la contraseña wePanel tambien tenemos que modificarla en el archivo wp-config
  • Cambiar la contraseña de la cuenta FTP
  • Cambiar la contraseña de acceso a la cuenta de hosting
  • Cambiar la contraseña de acceso al administrador de WordPress
  • Si tienes varios sitios web en la misma cuenta de hosting tendremos que comprobar todos los sitios ya que un virus se puede propagar e infectar a los demas sitios

Para repara los archivos infectados podemos descargar los archivos a nuestro ordenados comprobando que el antivirus este activo y actualizado. Durante la descarga de los archivos, en antivirus detectará los archivos infectados e indicara su ruta, con eso podemos eliminarlos en nuestro hosting y sustituirlos por uno limpio

 

Conclusión

No se trata de instalar WordPress y tener nuestra pagina bonita como a nosotros nos gusta. WordPress es como nuestra casa, podemos tener una casa muy bonita con unos muebles increíbles pero tenemos que protegerla, hay que cerrar la puerta, poner una alarma….. No queremos que nuestra familia e invitados puedan tener un susto o incluso entrar a nuestra casa y ver que nos la vaciaron, tenemos que tomar las medias que estén en nuestras manos para sentirnos seguros. Poner todas las medias que estén en nuestras manos nos ayudara a vivir más tranquilos y no llevarnos sustos innecesarios.

¿Te ha resultado útil este artículo?

Hosting Divi - Wp Fácil - Webempresa