1

Seguridad para WordPress: medidas imprescindibles

15760Puntos

hace 5 años

WordPress es uno de los CMS más populares y uno de los más susceptibles a ataques. Por esta razón debemos ser muy cuidadosos a la hora de lanzar una instalación a la web sin ningún tipo de seguridad.

Según las últimas estadísticas de WordPress, el 41% de los problemas de seguridad son causados por el proveedor de alojamiento que tenemos contratado, seguido de los Temas y los Plugins, muy raras veces tiene que ver con el núcleo de nuestro WordPress. A continuación mostraremos un gráfico que amplía esta información.

Existen muchas formas de proteger nuestra instalación de WordPress contra ataques, ahora recomendaremos alguna de las más útiles y las que deberías tener en cuenta en toda instalación.

Mantén tu instalación de WordPress al día

La regla número 1 es tener siempre nuestro WordPress actualizado ya que los desarrolladores trabajan día a día en la búsqueda de nuevos bugs y en la corrección de estos, cada nueva actualización nos hace más seguros contra hackeos.

Para esto una buena práctica es tener activadas por lo menos las actualizaciones automatizadas. Para hacerlo basta con agregar estas líneas de código a nuestro archivo wp-config.php.

define( 'WP_AUTO_UPDATE_CORE', true ); # Habilitar todas las actualizaciones básicas, incluyendo menores y mayores

define( 'WP_AUTO_UPDATE_CORE', 'minor' ); # Habilitar actualizaciones fundamentales para versiones menores (por defecto)

Ocultar la versión de nuestro WordPress

La versión de nuestro WordPress se muestra en el código fuente de nuestra página como una etiqueta meta, es importante ocultarla ya que en la red cada botnet están rastreando las páginas web y podemos hacerle mas fácil la labor de hackearnos si le mostramos cual es la versión de nuestra instalación, y mucho más si la tenemos desactualizada.

Podemos ocultar la versión de nuestro WordPress agregando la siguiente línea a nuestro archivo functions.php.

 Remove_action('wp_head', 'wp_generator');

Cambiar el prefijo de las tablas de las bases de datos

Por defecto en cada instalación WordPress pone un prefijo a las tablas de nuestra base de datos “wp_”, es importante cambiarlo ya que es el más conocido por los atacantes y será lo primero que intentarán usar en cada ataque.

/** Prefijo de las tablas de la base de datos, cambiarlas siempre en lo posible por seguridad */
$table_prefix  = 'ax2343_'; //Sólo números, letras y guiones bajos por favor!

Si deseas cambiar este prefijo luego ha hacer tu instalación, te recomiendo el siguiente plugin iThemes Security (formerly Better WP Security).

Las ocho claves de seguridad

Dentro de nuestro archivo wp-config.php también es necesario cambiar las llaves de seguridad que nos brindan por defecto, estas las podemos generar desde aquí, estas llaves se las asignas a diferentes cookies y son utilizadas en diversos lugares de la instalación para aumentar la seguridad.

define('AUTH_KEY',         '2Z,5toH&|;4iKy!-7vY0W-Ipjy}u4Z;2(fF.,3~2$_d7d$a2X)[email protected]*+Po K @+RAj');
define('SECURE_AUTH_KEY',  '$4*0]]7X+N.B|d&bc+R>64%DaXMn| YS[`,@-M#xa*6T ,^cqSNixNZ96oyg5,.G');
define('LOGGED_IN_KEY',    'RlRCB7 ?<.tp3bSwQL:~fY|Zbn;?Zc605tVWB->]54qgC:E_zXH{IXP}|JxtPH4:');
define('NONCE_KEY',        'ucek~[&Md}FBi_|[email protected]*b*V%_;[email protected]|5rc`H<#+x(^^iR?&x}4r$#08+A');
define('AUTH_SALT',        '4x|`w!eO-.CE?7%X7YO5i9G?VI&`-^552K|UiC~{+~Cgqof2(F*Cg ]zS-k w~j*');
define('SECURE_AUTH_SALT', 'snMpBJ%V]Xz(YK*S5&uByr?_9UkI&,[+flwsI1$!/kaSlu}yl=v[p2PW#r<[|exs');
define('LOGGED_IN_SALT',   'u%nJI7-](=/W)nC1Z?G9!U2$!C-)*fI.LVvJ,#LV5cblo%}x(bY-N{[email protected])p+_N');
define('NONCE_SALT',       '-{[email protected]</9HsYaMbio=o_3-Kj5T/p&r>bmyQc,=Law6CMX&oxj4nPmWU*p.4Bx%9');

Reubicar el archivo de configuración wp-config.php

Reubicar el archivo wp-config.php que se encuentra en la raíz de nuestra instalación WordPress es muy importante, ya que contiene toda la información de conexión a nuestra base de datos y en caso de que PHP deje de funcionar en nuestro servidor web este se puede mostrar como un archivo de texto plano y podría revelar nuestros datos.

En algunos servidores esto no se puede hacer, pero podemos ocultarlo por medio de nuestro .htaccess.

# protege archivo wp-config
<files wp-config.php>
order allow,deny
deny from all
</files>

Proteger el archivo .htaccess

El archivo .htaccess que se encuentra en la raíz de nuestra instalación, permite controlar los enlaces permanentes de nuestro sitio web, pero también puede controlar mucha de la configuración de PHP, importante protegerlo también.

# protege archivo .htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

Mas información sobre el archivo .htaccess en WordPress.

Deshabilitar la navegación entre directorios

No queremos que nadie intente acceder por ejemplo a nuestro directorio http://mipagina.com/wp.content , para evitar navegación entre nuestros directorios y que puedan revisar nuestra información, es importante deshabilitar esto en el archivo .htaccess

# deshabilita navegación por directorios
Options All –Indexes

Reubicar el directorio de nuestro contenido

El directorio /wp-content contiene todo lo que le agregamos a nuestra web, plugins, imágenes, documentos, etc., al cambiarlo de su ubicación por defecto estamos evitando ser encontrados por los atacantes.

Es importante destacar que esta opción de reubicar viene dada desde la versión 2.6 de WordPress. Para realizar esto debe de editar su archivo wp-config.php.

/** Permite mover el directorio wp-content **/
define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/blog/wp-content' );
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content' );

Es posible que algunos plugins no tengan compatibilidad con esta característica con lo que también deberíamos cambiar la ubicación del directorio plugins:

/** Mover el directorio plugin **/
define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/blog/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example/blog/wp-content/plugins' );

Utilizar SSL para el inicio de sesión y la administración

La mayoría de los servidores hoy en día traen soporte para SSL (Secure Socket Layer), lo que permitirá tener una conexión mucho más segura, seguramente al utilizar esto verán que su protocolo cambiara a HTTPS. Antes de hacer esta configuración les recomiendo investigar mucho y no tomar esta decisión a la ligera.

Para activar este modo tanto para el inicio como para la administración, agreguen estas líneas a su wp-config.php.

 define( 'FORCE_SSL_ADMIN', true ); //Forzar inicio de sesión seguro a la administración.
 define( 'FORCE_SSL_LOGIN', true ); //Forzar inicio de sesión seguro.

Nunca tener un usuario de nombre admin

Dejar un nombre de usuario como este siempre da pie para que algún malintencionado intente acceder a nuestra página, puedes hacer este cambio ingresando a la base de datos o también lo puedes hacer por medio de este plugin que te recomiendo iThemes Security (formerly Better WP Security)

Permisos de Apache

Los permisos varían en función de su configuración pero una norma habitual consiste en establecer los archivos en 644 y las carpetas en 755 todo esto varía mucho dependiendo del servidor en el cual esté alojada, estos cambios seguramente afecten alguna función, como las actualizaciones de un clic y la instalación de plugins y temas desde el panel de control, si esto llegase a suceder tendrá que ofrecerle a su WordPress las credenciales FTP de su sitio para recuperar dichas funciones.

WordPress también cuenta con unas funciones que nos permiten dejar por defecto estos permisos a los archivos y carpetas, puedes agregar esto a tu wp-config.php para que tomen los permisos recomendados.

/** Remplaza los permisos de archivos predeterminados en Wordpress **/
define ('FS_CHMOD_DIR', (0755 & ~ umask ()));
define ('FS_CHMOD_FILE', (0644 & ~ umask ()));

Si deseas saber un poco más de permisos para los ficheros de WordPress te remito al Codex para que entiendas un poco más.

Copias de seguridad

Nadie en la web esta exento de perder información, por esto siempre es necesario tener backup de nuestras bases de datos y nuestros archivos, por lo menos hacerla cada mes o cada vez que hagas una actualización importante, te recomiendo estos plugins para hacer backup: BackUpWordPress , iThemes Security (formerly Better WP Security).

Bloquear el uso de nuestra imágenes o contenido de nuestra web (hotlinks)

Es posible que alguien quiera hacer uso de nuestro contenido web, imágenes, iconos, etc., por medio de enlaces de nuestro sitio web haciendo uso de nuestro ancho de banda, también podemos evitar esto por medio de nuestro .htaccess

# Protección frente a hotlinks de archivos .jpg, .jpeg, .jpe, .gif, .png
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?domain\. [NC]
RewriteRule \.(gif|jpe?g?|png)$ - [F,NC,L]

Acá podemos encontrar mas información de cómo hacer nuestros propios códigos de protección: Perishable Press.

Bloquear el mensaje de error en la entrada al administrador

Al hacer esto ocultaremos los mensajes de error si es que nos equivocamos al acceder a nuestra administración, así no dejaremos rastro de si hubo error en el usuario o password.

Agregamos esta línea a nuestro archivo functions.php de nuestro tema.

add_filter('login_errors',create_function('$a', "return null;"));

Guía en vídeo de seguridad de cero hasta avanzada para WordPress:

Para los que no les gusta mucho utilizar código y entrar a modificar estos archivos, les recomiendo un excelente plugin, se llama iThemes Security (formerly Better WP Security), anteriormente se llamaba Better Security.

Este plugin es uno de los mejores, con más de 4 millones de descargas en el repositorio de WordPress, hecho por la empresa ithemes, que se dedica a la creación de temas y plugins de mucha calidad, con este plugin se pueden hacer la mayoría de modificaciones que mostré anteriormente y lo mejor sin tocar una sola línea de código.

Existen 2 versiones, una gratuita que funciona muy bien, pero si quieres características adicionales como autenticación de 2 factores, escaneo de malware, comparación de archivos en línea, y otras características más te recomiendo la versión Pro.

Si conoces más recomendaciones para proteger sitios web en WordPress deja tus comentarios al final.

Andrés
Andrés
@gydoar

15760Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
1

En MIWEB, sabemos la importancia de que tu Wordpress sea siempre seguro, empezando por la actualización de los plugins, en <a href=“https://miweb.online”>diseño web barcelona</a> nos aseguramos siempre de que sea así. Buen articulo.