10 Nov

Proteger tu WordPress de vulnerabilidades y ataques

Compartir

15 reglas de Oro para asegurar tu WordPress de cualquier tipo de ataque o vulnerabilidad

protege-tu-wordpress-contra-pirateos
WordPress
es uno de los CMS más utilizados a día de hoy, y por tanto, uno de los más atacados. Por esta razón, al crear una web con WordPress debemos ser muy cuidadosos y prestar especial atención a la seguridad de sus contenidos, plantillas de diseño (Themes) y funcionalidades (Plugin).

Según las últimas estadísticas de WordPress, un gran porcentaje de ataques están relacionados con los Themes (Temas) y los Plugins. Muy raras veces guarda relación con el núcleo de nuestro WordPress u otros motivos o fuentes.

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

Antes de empezar….

Puedes escanear tu web, para saber el estado actual de tu WordPress. Checkea tu página de forma gratuita en esta web.

Consejos básicos

1.- Instalar un Certificado SSL en su web (Opcional)

WHMCS_-_Admin_Summary

Antes de comenzar con las medidas de seguridad propias de WordPress, debemos comentar que existe software externo al CMS que protege y blinda las páginas web frente ataques. Eso son los Certificados de Seguridad SSL. Esta sería la primera recomendación para proteger tu web frente ataques. Estos certificados aparte de protegerte, te mejora  el SEO y el posicionamiento de tu página. Por tan sólo 2€\mes.

Puedes ver toda la información y tipos de Certificados SSL  aquí. Recuerde puede consultarnos cualquier duda o pregunta sin compromiso.

2.-Mantén tu WordPress actualizado

Editar_entrada_‹_Base_de_conocimientos_—_WordPress

La regla de seguridad más importante 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.

Desde el escritorio de WP (WordPress) podemos gestionar las actualizaciones que debemos realizar en nuestro CMS. Estaremos al día de las actualizaciones si tenemos el indicador de actualizaciones a cero, esto lo podemos consultar en la barra de menú superior.

Es recomendable tener copias de seguridad recientes antes de acometer las actualizaciones. Ya que alguna de las actualizaciones puede provocar algún problema, lo cual podremos resolver rápidamente al restaurar la versión más actual antes de las actualizaciones.

Si queréis configurar en WordPress las actualizaciones de forma automática,  basta solo con agregar estas líneas de código a nuestro archivo wp-config.php. Para acceder a este archivo, lo podéis acceder desde el Panel Plesk. Os dejamos aquí como acceder a dicho archivo

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)

Pero cuidado!, es una recomendación, si eres consciente de que alguna actualización importante puede ser incompatible con otra de tu misma instalación (Por ejemplo: Woocommerce), deberás prestar atención a estas actualizaciones y hacerlas de forma controlada. Por ello, activar las actualizaciones menores sería una buena práctica para estos casos.

 3.- Modificaciones de Seguridad mediante Plugin

Para los que no suelen acceder a WordPress a través de línea de código, pueden usar esta otra alternativa llamada  iThemes Security (formerly Better WP Security), anteriormente se llamaba Better Security es un plugin.

ithemes-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 se indicaron 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 recomendamos la versión Pro.

Recuerda que siempre puedes optar por consultar con Comalis para ver las soluciones profesionales de protección por firewall, antiSpam, antiMalware para proteger en tiempo real cualquier aplicación alojada en nuestros servidores.

4.- Copias de seguridad

BackUpWordPress_—_WordPress_Plugins

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: BackWPup – WordPress Backup Plugin.

El plugin tiene integraciones con Google Drive y Dropbox entre otros, te recomendamos que almacenes las copias de forma remota en una de estas soluciones para maximizar la seguridad de tu web. Si lo deseas, puedes tambien contratar un servicio de FTP con nosotros y almacenar ahi tus copias, recomendamos esta opción para webs de mucho peso donde el tiempo de restauración se reduciria considerablemente al tener la copia almacenada en el mismo centro de datos que tu web.

5.- Nunca tener un usuario de nombre admin

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

6.- 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, esto es debido a que existen robots que están continuamente rastreando las páginas web. Podemos hacerle más difícil la labor al hackeo si no le mostramos cual es la versión de nuestro WordPress.

Se puede ocultar la versión de nuestro WordPress agregando la siguiente línea a nuestro archivo functions.php. Podemos acceder a este archivo desde nuestro Panel Plesk, y nuestra carpeta raíz (antes dejamos otro ayuda para acceder a esta carpeta) siguiendo fácilmente la ruta:  wp-content/themes/miplantilla/functions.php Y registrando esta línea de código.

 Remove_action('wp_head', 'wp_generator');

7.- Cambiar el prefijo de las tablas de las bases de datos

Por defecto en todos los WordPress los prefijos de las tablas de nuestra base de datos comienza de la misma forma: “wp_”, es importante cambiarla ya que es el más conocido por los hackers y será lo primero que intentarán usar en cada ataque. Durante la instalación de WordPress a la hora de crear los datos de conexión con la base de datos, podrás establecer el prefijo a la base de datos.

/** 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!

Si deseas cambiar este prefijo después de hacer una instalación, te recomiendo el siguiente plugin iThemes Security (formerly Better WP Security).

8.- 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 asignan 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)c@*+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_|G41C~KuH6@2*b*V%_;nd5@|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{S0@nW)p+_N');
define('NONCE_SALT',       '-{z.1o@</9HsYaMbio=o_3-Kj5T/p&r>bmyQc,=Law6CMX&oxj4nPmWU*p.4Bx%9');

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

Reubicar el archivo wp-config.php que se encuentra en la carpeta raíz de nuestra WordPress es muy importante, ya que contiene toda nuestra información de conexión a nuestra base de datos y en caso de que PHP (lenguaje de base de datos) deje de funcionar en nuestro servidor 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>

10.- 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.

Pues se puede proteger a sí mismo, así de potente es. Solo tienes que usar una de estas dos posibilidades:

1. Evitar el acceso externo al mismo archivo .htaccess:

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

2. Evitar el acceso externo a cualquier archivo .htaccess

# protección extrema de htaccess
<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
 satisfy all
</Files>
Mas información sobre el archivo .htaccess en WordPress.

11.- 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 entre directorios
Options All –Indexes

12.- Reubicar el directorio de nuestro contenido (Opcional y Sensible)

El directorio /wp-content contiene todo lo que le añadimos 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' );

Recuerda que si no conoces lo que estas haciendo, acudir a un profesional web para realizar este tipo de tareas es una buena opción.

13.- Permisos de Apache

permisosdeapache
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 puedas profundizar un poco más.

14.- 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 copiados de nuestro sitio web haciendo uso de nuestro ancho de banda, también podemos controlar 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]

En la red podemos encontrar mas información de cómo hacer nuestros propios códigos de protección.

15.- 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 (wp-admin o wp-login), así no dejaremos rastro de si hubo error en el usuario o password.

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

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

Recuerda que siempre puedes consultarnos para ver valorar otras opciones de protección profesionales de protección por firewall, antiSpam, antiMalware. Y poder protegerte en tiempo real cualquier aplicación alojada en nuestros servidores.

Temas para WordPress