🔑 Como proteger tu sitio WordPress: SEGURIDAD

- julio 28, 2017

Al ser WordPress el rey de los CMS en la web es también el mas atacado, por esto debemos ser muy cuidadosos a la hora de lanzar nuestra instalación a la web sin ningún tipo de seguridad.

Según las ultimas estadísticas de seguridad 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 en el cual ampliamos mas esta información.

porcentaje-hacked

Existen muchas formas de proteger nuestra instalación de WordPress contra ataques, ahora recomendaremos alguna de las mas importantes las cuales “DEBES” siempre tener en cuenta en toda instalación.

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

La regla numero 1 es tener siempre nuestro WordPress actualizado ya que los desarrolladores de WordPress 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 mas seguros contra hackeos.

Para esto una buena practica es tener activadas por lo menos las actualizaciones automatizadas de menores, con lo que nuestro WordPress se actualizara de manera automática.

Para activar nuestras actualizaciones automáticas basta con agregar estas líneas de código a nuestro archivo wp-config.php.

# Habilitar todas las actualizaciones básicas, incluyendo menores y mayores:
 define( 'WP_AUTO_UPDATE_CORE', true );
 
# Habilitar actualizaciones fundamentales para versiones menores (por defecto):
 define( 'WP_AUTO_UPDATE_CORE', 'minor' );

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, esta es importante ocultarla ya que en la red cada botnet está 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 mas 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 en la bases de datos

Por defecto en cada instalación, WordPress nos coloca un prefijo a las tablas de nuestra base de datos “wp_”, esto es importante cambiarlo ya que es el mas conocido por los atacantes y será el primero que intentaran utilizar 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 asignas a diferentes Cookies y son utilizadas en diversos lugares de la instalación para incrementar la seguridad.

define('AUTH_KEY',         '+z!&v79UL%0%vaL-{70e$w73Qonf-ftffH$+-VFI,w +n}-E#E,O-Pou-:68H8G{');
define('SECURE_AUTH_KEY',  ')OlW6a1b6s<0Dpfe7,Ax:4QhLC!6-G_@Aca*bPj*3Kw.og/.g84tUvQzy*a_#Mth');
define('LOGGED_IN_KEY',    'n(0Q`g2c+fa!1Em$1INPKLo)@_@RDchViqPC:F5++)9N&ipaii+3-|?Oa6T,YqR0');
define('NONCE_KEY',        'IHo3:VNltSktCNU#R-P<Y/HG5m-4![fDlkS| QNq5-17p4snv9{>NP?^CuPd*K--');
define('AUTH_SALT',        '*5hpD~L<a0fs>CT,ifB.gzXNknu+dZNAsZ*1cmYktIYBT8`:.IS^!%=yJLM2~EB+');
define('SECURE_AUTH_SALT', '(x6r)*UvE(`|^R)VZBGQ!bIT!ExH^]hla+jq/ b4(QI=eArO!5fl_.RxyS.,8j:Z');
define('LOGGED_IN_SALT',   'X5:~uQ^OCm!O,x$91KN<vNhf,f0%(M0EY7g.szawX*h;TwJ<a hfRokcNZ]c4_.l');
define('NONCE_SALT',       'bhbeMZreSTP,b0f+-9I]ja4C>R=/QT8Bn|P@Q=@}p~IKL(pd-eA/qT`SZ~b;cP_F');

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 es posible realizar esto, 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 el cual 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 mas 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 de sesión 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 el admin 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

permisos-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 varia mucho dependiendo del servidor en el cual este 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 mas de permisos para los ficheros de Wordpress te remito al Codex para que entiendas un poco mas.

Copias de seguridad

Nadie en la web esta exento de que pueda llegar a perder información, por esto siempre es necesario tener backup de nuestras bases de datos y nuestros archivos, por lo menos realizarla cada mes o cada cuanto 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 causando 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]
</ifModule>

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

Lo que hará esto será ocultarnos los mensajes de error en el momento que nos equivoquemos al acceder a nuestra administración, permitiendo no dejar 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;"));

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.

itheme-security

Este plugin es uno de los mejores con mas de 4 millones de descargas en el repositorio de WordPress, realizado por la empresa ithemes la cual 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 la cual funciona muy bien y de la cual no me quejo, 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 mas te recomiendo la versión Pro.

Si conoces mas recomendaciones para proteger sitios web en WordPress deja tus comentarios al final.


Recibirás cada semana todas nuestras actualizaciones
Puedes estar tranquilo que nunca te enviaremos SPAM
SOBRE EL AUTOR

Desarrollador web (Wordpress Expert) PHP, HTML5, CSS3, LINUX y muchos más...

¿Tienes un proyecto en mente? Hagámoslo real

CONTACTAR
Ebook-eBook – Funciones más Útiles para WordPress

Descarga el eBook GRATIS!

eBook – Funciones más Útiles para WordPress