Presentación del webinar Seguridad en WordPress, impartido el 10 de mayo.
En este webinar, José María Baquero, Desarrollador Web en Arsys, explica cómo podemos reducir las vulnerabilidades de WordPress con una serie de medidas muy fáciles de implementar.
Vídeo del webinar disponible en https://www.youtube.com/arsys
Más información en https://blog.arsys.es y https://www.arsys.es
2. Seguridad en WordPress
Consideraciones Previas
Protege el inicio de sesión
Plugins Recomendados
Acciones una vez instalado
Roles de Usuario
Copias de Seguridad
Certificado SSL
4. Consideraciones Previas
Antes de instalar WP:
• Hosting donde va ha estar alojado: es la base de la
seguridad de nuestro proyecto web y debemos estar en un
entorno seguro.
• Creación de las cuentas FTP necesarias con los accesos que
queramos darles a cada una.
• Creación de la base de datos, definiendo una buena
contraseña.
• Definir los usuarios que van a tener acceso a la
administración de WordPress. Indicando si es necesario los
Roles y accesos que van a tener.
5. Consideraciones Previas
Durante la instalación de WP
• Debemos establecer un prefijo diferente a “wp_” a las
tablas de nuestro proyecto.
• El usuario principal no debe ser “admin” ni utilizar nombres
propios ni el del dominio.
• Si estamos en desarrollo, y el proyecto no queremos que se
indexe todavía, debemos bloquear los motores de búsqueda.
6. Consideraciones Previas - Usuario
¿Qué pasa si ya tenemos un nombre de usuario que queremos cambiar?
• Accedemos al panel de control Bases de Datos
• Accedemos a la base de datos por medio de phpMyAdmin y vamos a la tabla que contiene los
datos de los usuarios “[prefijo]_users”
7. Consideraciones Previas - Usuario
• Accedemos al panel de control Bases de Datos BBDD [prefijo]_users
8. Protege tu inicio de sesión
Tenemos que protegernos de
ataques externos que quieran
entrar en la administración
9. Protege tu inicio de sesión
1. Cambiar la página de administración por defecto “wp-admin”.
2. Limita el número de accesos a la página de login.
3. Implementar un segundo factor de autentificación.
4. Evitar los errores de inicio de sesión.
10. Cambiar la página de administración por defecto
Para cambiar la administración por defecto podemos utilizar varios plugins, o uno que tenga
múltiples opciones como iThemes Security, del cual hablaremos mas tarde o plugins específicos
para esta tarea como:
WPS Hide Login
URL del plugin: https://es.wordpress.org/plugins/wps-hide-login/
11. Cambiar la página de administración por defecto WPS Hide Login
Una vez activo, en las opciones generales: Ajustes Generales
Si intentamos acceder al panel de administración de la forma tradicional, tendremos la siguiente
respuesta:
12. Limita el número de accesos a la página de login
Debes dejar un par de intentos por si acaso te equivocas pero hay que protegerse de los hackers
que intentan acceder a nuestro WordPress por la fuerza bruta.
¿Qué plugin podemos utilizar?
Login LockDown
URL del plugin: https://wordpress.org/plugins/login-lockdown/
Es un plugin muy sencillo que nos facilita esta funcionalidad.
13. Limita el número de accesos a la página de login
• Configurar el número de intentos de conexión
fallidos.
• Elegir el tiempo de restricción entre intentos de
conexión.
• El tiempo que será bloqueada una IP después de
hacer varios intentos superando el tiempo de
restricción.
• Configurar que al introducir un nombre de usuario
incorrecto cuente como intento de conexión
fallido.
• Quitar los mensajes que informan si has fallado en
el nombre o en la contraseña para no dar pistas a
los infractores, con este plugin cumplimos con el
4º punto que comentábamos al inicio de este
bloque.
• Sección donde podemos ver que IP están
bloqueadas.
14. Implementar un segundo factor de autenticación
Mantener una política de contraseñas robusta es clave para una buena seguridad, pero cada vez
mas se está haciendo necesario el uso de dobles factores de autenticación, como por ejemplo
códigos OTP (Códigos de uso temporal). De esta forma, nos protegemos contra ataques de fuerza
bruta.
¿Qué plugins podemos utilizar?
Loginizer
URL del plugin: https://es.wordpress.org/plugins/loginizer/
Permite la autentificación por mail o por APP, Captcha, pregunta de inicio…
15. Implementar un segundo factor de autenticación
¿Qué plugins podemos utilizar?
Google Authenticator
URL del plugin: https://es.wordpress.org/plugins/google-
authenticator/
Permite la autentificación por APP, muy sencillo de utilizar.
18. Plugins Recomendados iThemes Security
• Remover el meta generador de etiquetas.
• Cambiar las direcciones o urls del escritorio de WordPress dashboard incluidas por defecto en login, admin, y
más.
• Desactiva la posibilidad de mantenerte loggeado por un determinado período de tiempo (away mode)
• Remueve las notificaciones de actualización, temas, plugins en los usuarios que no tienen permisos.
• Remueve información del header en Windows Live Write.
• Remueve información del header en RSD
• Renombra la cuenta “admin”
• Cambia en ID en el usuario con ID 1
• Cambia los prefijos en las bases de datos de WordPress.
• Cambia la ruta al contenido de WP alojado en wp-content
• Remueve mensajes de error de login
• Muestra un mensaje aleatorio del número de versión a los usuarios que no son administrativos.
• Analiza tu sitio para decirte al instante que vulnerabilidades tienes.
19. Plugins Recomendados iThemes Security
• Bloquea bots y agentes problemáticos y otros hosts
• Prevenir ataques de fuerza bruta baneando hosts y usuarios con demasiados intentos de inicio de sesión no
válidos.
• Fortalecer la seguridad del servidor.
• Obligar al uso de contraseñas seguras para todas las cuentas configurando un rol mínimo.
• En servidores que lo soporten obliga al uso de SSL para las páginas de administración o páginas y posts.
• Deshabilita la edición de archivos desde dentro del área de administración de WordPress.
• Detectar y bloquear numerosos ataques a su sistema de archivos y base de datos.
21. Plugins Recomendados Wordfence
• Forzar a los usuarios para que utilicen contraseñas fuertes.
• Elegir el número de errores de inicio de sesión antes de un bloqueo. Esto bloqueará una dirección IP
durante un período de tiempo especificado si ese visitante genera el número especificado de errores de inicio
de sesión.
• Elegir el número de veces que se puede olvidar la contraseña antes de un bloqueo.
• Periodo de tiempo en el que se producen los intentos de sesión: es el periodo de tiempo en el que se
cuentan los intentos fallidos, después de ese periodo de tiempo el contador de fallos se reiniciará.
• Periodo de tiempo que un usuario es bloqueado al superar los intentos de sesión fallidos.
• Bloquear una IP si se utilizan usuarios que no existan. Esta opción es muy restrictiva y si te equivocas al
poner tu propio nombre de usuario te bloqueara si no has configurado tu IP en la lista blanca de Wordfence.
• Configurar los mensajes de WordPress para que no revelen los usuarios válidos en los errores de inicio de
sesión, muy útil para no dar pistas sobre los nombres de usuarios o contraseñas válidas.
• No permitir que los usuarios registren el usuario ADMIN, ya que es uno de los más frecuentes y por lo tanto
de los más atacados.
• Evitar que descubran los nombres de usuario utilizados en una instalación de WordPress a través de
exploraciones avanzadas de las URL de autor.
• Bloquear automáticamente IP que utilicen un nombre de usuario concreto.
22. Acciones una vez instalado WordPress
¿Y ahora que lo tenemos montado, está todo correcto?
23. Acciones una vez instalado WordPress
• Controlar el número de errores 404 desde un
mismo origen. Un usuario normal navega por
páginas accesibles, es recomendable su control para
evitar que un usuario malintencionado se haga un
perfil detallado de los plugins y/o temas que
tenemos instalados en nuestro WordPress.
• Eliminar archivos de instalación. Eliminar archivos
readme.html e install.php ya que permiten conocer
la versión exacta de nuestro WordPress y actuar en
consecuencia.
• Control de actualizaciones. Mantener el CMS en su
última versión es totalmente necesario para
mantener la web con unos niveles de seguridad
adecuados. Las actualizaciones y la instalación de
parches se deberían llevar al día y desde el punto de
vista de seguridad anteponiéndolo a la
compatibilidad con los plugins previamente
instalados.
24. Acciones una vez instalado WordPress
• Elimina temas y plugins que no utilices. Cada
plugin o tema puede presentar agujeros de
seguridad si no se tienen controlados
adecuadamente.
• Generar un archivo robots.txt adecuado. El
archivo robots.txt es utilizado por los crawlers. Son
programas (como Googlebot) que analizan la web de
forma automática. Entre otras cosas, se encargan de
el contenido de la web se indexe en los buscadores.
Rastrea todo lo que encuentra por el camino a no
ser que nosotros le indiquemos lo contrario. El
generar por nuestra cuenta un archivo robots.txt nos
ayudará a que Google (y otros buscadores) sepa qué
mostrar en los resultados de búsqueda y qué no.
Este archivo debe estar en el raíz de la página.
User-agent: *
Disallow: /feed/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /wp-content/
Disallow: /wp-includes/
robots.txt
25. Acciones una vez instalado WordPress
• Eliminar información de la cabecera de la página
<head>. Las siguientes líneas se añaden en el
archivo functions.php del tema activo.
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'parent_post_rel_link', 10);
remove_action('wp_head', 'start_post_rel_link', 10);
remove_action('wp_head', 'adjacent_posts_rel_link', 10);
add_filter('show_admin_bar','__return_false');
add_filter('the_generator', '__return_false');
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
• Desactivar editor del panel de administración. La
siguiente línea se añade al final del archivo wp-
config.php de la raíz de nuestro WordPress.
define('DISALLOW_FILE_EDIT', true);
26. Acciones una vez instalado WordPress
• Desactivar actualizaciones de plugins desde el
panel. La siguiente línea se añade al final del
archivo wp-config.php de la raíz de nuestro
WordPress.
define('DISALLOW_FILE_MODS', true);
• Desactivar el código HTML en los comentarios. La
siguiente línea se añade al final del archivo wp-
config.php de la raíz de nuestro WordPress.
add_filter('pre_comment_content', 'wp_specialchars');
28. Roles de usuario
Hay varios tipos de usuarios en WordPress con
diferentes permisos sobre las acciones:
• Suscriptor. Éste sólo puede leer las entradas
públicas.
• Colaborador. Envía entradas que moderaremos su
publicación.
• Autor. Puede editar, publicar y borrar sus propias
entradas.
• Editor. Puede editar, publicar y borrar sus propias
entradas y las de los demás.
• Administrador. Tiene todos los permisos.
29. Roles de usuario
Si queremos dotar de permisos especiales a un usuario
para poder actuar sobre las páginas, entradas que no
son suyas, actualización de plugins,… podemos utilizar
plugins como el siguiente para crearnos roles
personalizados:
User Role Editor
https://es.wordpress.org/plugins/user-role-editor/
30. Copias de Seguridad
Llevar una correcta política de copias de seguridad nos
puede librar de malas pasadas.
Podemos realizar la copia de seguridad de forma
manual, conectándonos por FTP a nuestro servidor y
bajando todos los archivos a un dispositivo externo o
interno, y realizar un backup de la base de datos por
medio del phpMyAdmin disponible en el panel.
Si no queremos hacerlo de forma manual y poder tener
copias de seguridad periódicas de base de datos y
ficheros podemos utilizar plugins como:
UpdraftPlus WordPress Backup Plugin
https://es.wordpress.org/plugins/user-role-editor/
Xcloner – Backup and Restore
https://es.wordpress.org/plugins/xcloner-backup-and-
restore/
31. Certificado de Seguridad SSL
El protocolo SSL dota a la web de una capa de seguridad adicional que permite cifrar los datos de nuestro
WordPress garantizando que los datos que enviamos se transmiten codificados y no pueden ser interceptados
por terceros.
¿Cómo configurar tu SSL?
• Accede a tu sitio WordPress como administrador
• Ve a Ajustes, Generales
• En el campo Dirección de WordPress (URL): cambia http:// por https://
• En el campo Dirección del sitio (URL): cambia http:// por https://
En el archivo wp-config.php situado en el directorio raíz añadimos estas líneas:
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://[dominioseleccionado].com/$1 [R=301,L,NE]
Para forzar que todas las entradas http a https debemos añadir en el archivo .htaccess las siguientes líneas,
fuera de los comentarios # Begin WordPress # END WordPress:
32. Certificado de Seguridad SSL
Si no queremos modificar ningún archivo o nos resulta complicado, podemos utilizar el siguiente plugin y, una
vez contratado el SSL, con un solo clic podemos configurarlo.
Really Simple SSL
URL del Plugin: https://es.wordpress.org/plugins/really-simple-ssl/