
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
- Eliminar los ficheros:
readme.html, license.txt, wp-config-sample.php y /wp-admin/install.php
- Revisar todos los permisos en base a la documentación y consejos del Codex de WordPress.
- Ficheros: 644
- Directorios: 755
- .htaccess: 644 o 604
- wp-config.php: 644 o 604
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:
- Puedes generar las claves de forma aleatoria a través de la API de WordPress.
- Una vez generadas ponlas en tu fichero
wp-config.php
. - 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
- Digging into WordPress by Chris Coyier & Jeff Starr.
- Consejos para mejorar la seguridad de WordPress.
- The Definitive Guide to WordPress Security.
- Hardening WordPress.
- Encriptación de la información.