seguridad-en-wordpress

1. Tu equipo y tu conexión segura antes que la seguridad en WordPress

  • Parece obvio, pero no lo es tanto. Esto es lo primero antes de meternos con la seguridad en WordPress.
  • Usa sFTP.
  • Accede al panel de administración de tu WordPress, únicamente desde tu conexión y equipo habitual (entendiendo que ambos son completamente seguros).

2. Backups

Realizar copias periódicas de seguridad tanto de los ficheros como de la base de datos de nuestro WordPress.

3. WordPress

  • Descargar WordPress de su web oficial: http://wordpress.org
  • Siempre actualizar WordPress tras la salida de una nueva versión.

4. Plugins

  • Ser conscientes de que los plugins son códigos realizados por terceros programadores.
  • Usar los plugins estrictamente necesarios y de total confianza para nuestro proyecto.
  • Solo descargar del sitio oficial: http://wordpress.org/plugins/.
  • Tener las últimas versiones de los plugins almacenado en nuestro WordPress (esten activos o no).
  • Quitar del servidor todos los plugins que no usemos.
  • Saber que cuanto más plugins, más vulnerabilidad y menor escalabilidad tendremos.

Hay solo un plugin que si consideraría implementar para la seguridad en WordPress:

  • Better WordPress Security: Asegura tu WordPress en pocos minutos. Chequea, recomienda y facilita la configuración más segura.

5. Themes

  • Usar un buen theme, bien programado y de confianza.
  • Tener las últimas versiones de los themes almacenado en nuestro WordPress (esten activos o no).
  • Solo usamos un theme, quitar del servidor el resto.

6. Ficheros y permisos

7. Base de datos

  • Cambiar el prefijo por defecto de WordPress para las tablas «wp_» por uno más complejo.

8. Editar htaccess, wp-config.php y functions.php

.htaccess

A continuación he reunido algunos códigos para evitar posibles puntos flojos de seguridad y protegernos más del spam.
Sustituir *yourdomain.com.* por nuestro dominio en el código del apartado «# For AntiSpam Deny Access to No Referrer Requests».
Estos códigos deben incorporarse al fichero .htaccess del directorio raíz de nuestra instalación de WordPress.

# BEGIN SECURE
# Block Sensitive Files from Browser 
Options All -Indexes
<files .htaccess>
Order allow,deny
Deny from all
</files>
<files wp-config.php>
Order allow,deny
Deny from all
</files>
<files error_log>
Order allow,deny
Deny from all
</files>
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
# Disable the Server Signature 
ServerSignature Off
# For AntiSpam Deny Access to No Referrer Requests 
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) http://%{REMOTE_ADDR}/$ [R=301,L]
# END SECURE

wp-config.php

Usar claves secretas y únicas de autenticación:

  1. Puedes generar las claves de forma aleatoria a través de la API de WordPress.
  2. Una vez generadas ponlas en tu fichero wp-config.php.
  3. Puedes cambiar las claves en cualquier momento para invalidar todas las cookies existentes. Esto forzará a todos los usuarios a volver a hacer login.

Desactivar la opción de editar ficheros desde wp-admin:

define('DISALLOW_FILE_EDIT', true);

Forzando el login seguro con SSL:

define('FORCE_SSL_ADMIN', true);

functions.php

Eliminar la versión de WordPress:

function wpsecure_remove_version() { return ''; }
add_filter('the_generator', 'wpsecure_remove_version');

9. Usuarios registrados

Super admin y administradores

  • Cambiar el usuario por defecto de WordPress admin por otro username más complejo.
  • Un solo administrador es más que suficiente.
  • El admin en especial debe tener una contraseña compleja. Por ejemplo 20 caracteres que incorpore números, letras y signos.

Resto de usuarios

  • Revisar los roles de usuarios en WordPress.
  • No todos tienen que ser «editores», probablemente puedan ser «autores».
  • El product manager o coordinador si podría tener el rol de «editor».
  • ¿Realmente necesitas usuarios anónimos «suscriptores» de tu WordPress?. Si no es así fuera con ellos, quien quiera suscribirse lo hará por feed con programas a tal efecto como feedly.
  • Ojo con activar la opción para permitir el registro de usuarios anónimos que se encuentra en wp-admin > ajustes > general.

10. Comentarios y Spam

La mayoría de opciones a tratar en: wp-admin > ajustes > comentarios

  • Obligatorio activar la opción de rellenar nombre y email para comentar.
  • Obligatorio usar un plugin antispam como akismet.
  • Obligatorio incluir en la blacklist palabras típicas de spam.
  • Preferible marcar la opción para que un administrador apruebe el comentario antes de ser publicado.
  • También podemos usar un sistema de comentarios externo como DISQUS, más seguro y dinamizador.

Referencias para la seguridad en WordPress