Taller #CW16 #WPS16

Seguridad en WordPress

"Porque la seguridad no sólo depende de WordPress, sino del que lo usa"

by jjpeleato.com | #CW16 #WPS16

¡Gracias y bienvenidos!

Mi nombre es José Javier Peleato Pradel

Desarrollador SEO Web & Apps


"Si buscas resultados distintos, no hagas siempre lo mismo", Albert Einstein

Actualmente trabajo como desarrollador FullStack WordPress y colaboro en la organización de la comunidad WordPress Zaragoza

by jjpeleato.com | #CW16 #WPS16

¿Seguridad?

Seguridad (del latín securitas) es definido como la cualidad de seguro. Ausencia de riesgo o la confianza en algo o en alguien.

by jjpeleato.com | #CW16 #WPS16

¿Seguridad de la información?

Conjunto de medidas preventivas y reactivas de las organizaciones y de los sistemas tecnológicos que permiten resguardar y proteger la información buscando mantener la confidencialidad, la disponibilidad, integridad y autenticación (autentificación) de la misma.

by jjpeleato.com | #CW16 #WPS16

El concepto de seguridad de la información no debe ser confundido con el de seguridad informática, ya que este último solo se encarga de la seguridad en el medio informático, pero la información puede encontrarse en diferentes medios o formas, y no solo en medios informáticos.

by jjpeleato.com | #CW16 #WPS16

¿Seguridad informática?

Más conocido cómo ciberseguridad o seguridad de tecnologías de la información, es definido como el área de la informática que se enfoca en la protección de la infraestructura computacional y su almacenamiento (información), para garantizar su confidencialidad, integridad y disponibilidad.

by jjpeleato.com | #CW16 #WPS16

Oficina de Seguridad del Internauta

https://www.osi.es
"El objetivo de la seguridad informática consiste en minimizar los riesgos en una infraestructura computacional"

by jjpeleato.com | #CW16 #WPS16

Amenazas

Existen varios tipos de amenazas, debido a que no solo son amenazas las que surgen de la programación y el funcionamiento de un dispositivo de almacenamiento, también hay otras circunstancias que deben ser tomadas en cuenta e incluso “no informáticas”. Muchas son a menudo imprevisibles o inevitables.

by jjpeleato.com | #CW16 #WPS16

Tipos de amenaza

Existen infinidad de modos de clasificar un ataque y cada ataque puede recibir más de una clasificación.

  • Amenazas por el origen: Amenazas que se originan a traves de la red externa o interna.
  • Amenazas por el efecto: Amenaza que causa problemas a quien recibe los ataques, cómo robo de información, suplantación, manipulación, etc.
  • Amenazas por el medio utilizado: Modus operandi del atacante, a tráves de virus, phising, ingeniería social, DDoS, etc.

by jjpeleato.com | #CW16 #WPS16

Causas de amenaza

  • Usuarios o factor humano
  • Programas maliciosos
  • Errores de programación
  • Intrusos
  • Siniestro (Robo, incendio, inundación, ...)
  • Personal técnico interno (Disputas internas, problemas laborales, espionaje, ...)
  • Fallos electrónicos o lógicos de los sistemas informáticos en general.
  • Catástrofes naturales

by jjpeleato.com | #CW16 #WPS16

Crackers vs Hackers

"El concepto de crackers y hackers no debe ser confundido, ya que su comportamiento y ética es diferente"

by jjpeleato.com | #CW16 #WPS16

Crackers

Término que hace referencia a las personas que “rompen” algún sistema de seguridad. Los crackers pueden estar motivados por una multitud de razones, incluyendo fines de lucro, protesta, o por el desafío. Acciones desautorizadas contra sistemas de seguridad.

by jjpeleato.com | #CW16 #WPS16

Hackers

Termino que hace referencia a todo individuo que se dedica a programar de forma entusiasta, o sea un experto de cualquier tipo y que considera que poner la información al alcance de todos constituye un bien mayor.

La motivación de estas personas es desarrollar software en su tiempo y después distribuirlo de forma gratuita con la comunidad. También incluye a aquellos que encuentran, depuran y arreglan errores en los sistemas (vulnerabilidades).

by jjpeleato.com | #CW16 #WPS16

Recomendación web

Chema Alonso (Hacker)

http://www.elladodelmal.com

https://twitter.com/chemaalonso

https://www.youtube.com/user/Chemai64

by jjpeleato.com | #CW16 #WPS16

Malware

Malicius software, también llamado, badware, código maligno, software malicioso o software malintencionado, es un tipo de software que tiene como objetivo infiltrarse o dañar una infraestructura computacional o sistema de información sin el consentimiento de su propietario.

"Malware, no es lo mismo que software defectuoso"

by jjpeleato.com | #CW16 #WPS16

Exploit

Explotar o aprovechar, fragmento de software, fragmento de datos o secuencia de comandos y/o acciones, utilizada con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo.

Se considera exploit un ataque de ingeniera social, que consiste en convencer o sonsacar a una víctima cierta información.

by jjpeleato.com | #CW16 #WPS16

Virus

Un virus informático es un malware que tiene como objetivo el alterar el funcionamiento normal del ordenador, sin el permiso o el conocimiento del usuario.

El primer virus de la historia atacó a un equipo IBM Serie 360. Fue llamado Creeper¸ creado en 1972. Este software creaba periódicamente en pantalla el mensaje “I’m a creeper… catch me if you can!” (Soy una enredadera… atrápame si puedes!). Para eliminar este problema se creó el primer programa antivirus denominado “Reaper” (Segador).

by jjpeleato.com | #CW16 #WPS16

IWorm

Malware que tiene la propiedad de duplicarse a sí mismo. Los gusanos se propagan de ordenador en ordenador, pero a diferencia de un virus, tiene la capacidad de propagarse sin la ayuda del factor humano.

El primer gusano informático de la historia data de 1988, cuando el gusano Morris infectó una gran parte de los servidores y se dieron cuenta que los gusanos informáticos se reproducen asexualmente. Su creador, Robert Tappan Morris, fue sentenciado a tres años en prisión y obtuvo libertad condicional, 400 horas de servicios a la comunidad y una multa de 10.050 dólares, gracias a su familia que pagó la fianza. Fue este hecho el que alertó a las principales empresas involucradas en la seguridad de tecnologías tales como Nirdesteam que fue uno de los primeros en desarrollar el primer cortafuegos (firewall).

by jjpeleato.com | #CW16 #WPS16

Trojan Horse

Troyano o caballo de Troya, es un software malicioso que se presenta al usuario como un programa aparentemente legitimo e inofensivo, pero que, al ejecutarlo, le brinda al atacante acceso remoto al equipo infectado con todos sus privilegios.

Un troyano no es un virus informático. La diferencia consiste en su finalidad.

En sus origines fueron utilizados como arma de sabotaje por los servicios de inteligencia como la CIA, cuyo caso más emblemático fue el sabotaje al gasoducto Siberiano en 1982.

by jjpeleato.com | #CW16 #WPS16

Backdoor

Puerta trasera es una secuencia especial dentro del código de programación, mediante la cual se pueden evitar los sistemas de seguridad del algoritmo (autentificación) para acceder al sistema.

by jjpeleato.com | #CW16 #WPS16

Rootkits

Un rootkit consiste en un acceso de privilegio continuo a un ordenador pero que mantiene su presencia oculta al control de los administradores al corromper el funcionamiento normal del sistema operativo o de otras aplicaciones.

by jjpeleato.com | #CW16 #WPS16

Keyloggers

Tipo de software o dispositivo hardware especifico que se encarga de registrar las pulsaciones que se realizan en el teclado, para posteriormente almacenar la información en un archivo o ser enviadas a través de Internet.

by jjpeleato.com | #CW16 #WPS16

Adware

Sistemas de publicidad basados en programación computacional. Un programa de clase adware es cualquier programa que automáticamente muestra u ofrece publicidad web ya sea incrustada en una página web mediante gráficos, carteles, ventanas flotantes o durante la instalación de algún programa al usuario con el fin de generar lucro a sus autores.

by jjpeleato.com | #CW16 #WPS16

Spyware

Programa espía que consiste en un malware que recopila información de un ordenador y después transmite esta información a una entidad externa sin el conocimiento del propietario del ordenador.

by jjpeleato.com | #CW16 #WPS16

Crimeware

Tipo de software diseñado para la ejecución de delitos financieros en entornos en línea.

Diseñado mediante técnicas de ingeniera social para generar fraude en línea, con el fin de conseguir el robo de identidades para acceder a los datos de usuario de las cuentas de compañías de servicios financieros.

by jjpeleato.com | #CW16 #WPS16

SQL Injection

Método de infiltración de código que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de entradas para realizar operaciones sobre una base de datos.

SELECT * FROM user WHERE name = '" + nombreUsuario + "';
SELECT * FROM user WHERE name = 'jjpeleato';
SELECT * FROM user WHERE name = 'jjpeleato';DROP TABLE user;SELECT * FROM record WHERE name LIKE '%';

by jjpeleato.com | #CW16 #WPS16

XSS

Cross-site scripting es un tipo de inseguridad informática o agujero de seguridad típico en las aplicaciones Web.

Permite a una tercera persona inyectar en páginas web visitadas por el usuario código JavaScript o en otro lenguaje de script.

http://www.example.com/home.php?frame=menu.php
javascript:while(1)alert("Mensaje infinito");

by jjpeleato.com | #CW16 #WPS16

DdoS

DoS (Denial of Service) o DDoS (Distributed Denial of Service (Ataques de denegación de servicios).

Consiste en un ataque a un sistema (ordenadores, servidores o red) que causa que un servicio o recurso sea inaccesible a los usuarios.

Anonymous utiliza mucho este recurso para realizar sus ataques contra sus objetivos.

by jjpeleato.com | #CW16 #WPS16

Botnet

Termino que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática. El atacante puede controlar todos los ordenadores/servidores infectados de forma remota.

Usos habituales:

  • Ataques de denegación de servicios
  • Envío de SPAM
  • Minería de Bitcoins (criptomoneda)
  • Robo de Bitcoins

by jjpeleato.com | #CW16 #WPS16

Logic Bomb

Parte de código insertado intencionalmente en un programa informático que permanece oculto hasta cumplirse una o más condiciones preprogramadas, en ese momento se ejecuta una acción maliciosa.

by jjpeleato.com | #CW16 #WPS16

Pharming

Explotación de una vulnerabilidad en el software de los servidores DNS (Domain Name System) o en el de los equipos propios de los usuarios, que permite a un atacante redirigir un nombre de dominio a otra dominio distinto.

by jjpeleato.com | #CW16 #WPS16

Phising

Suplantación de identidad, termino informático que denomina un modelo de abuso informático y que se comete mediante el uso de un tipo de ingeniería social, caracterizado por intentar adquirir información confidencial (contraseñas, número de tarjetas de crédito, información bancaria, etc.) de forma fraudulenta.

El método más conocido es suplantar un correo electrónico y redirigir mediante pharming a la víctima para reinicie la contraseña en una página anzuelo.

by jjpeleato.com | #CW16 #WPS16

Spoofing

Modificación y falsificación de los paquetes enviados en una comunicación para suplantar la identidad y descifrar información confidencial como claves privadas para autentificaciones contra servicios o servidores.

by jjpeleato.com | #CW16 #WPS16

WordPress

WordPress, es un sistema de gestión de contenidos que ha alcanzado una gran relevancia con una cuota del 26.4% de uso a nivel mundial, 1 de cada 4 páginas web esta creada en WordPress.

Dada la importancia de ser una de las plataformas más utilizadas, a diario se convierte en objetivo de múltiples ciberataques.

Ver estadísticas W2Techs

by jjpeleato.com | #CW16 #WPS16

Estructura base de datos

by jjpeleato.com | #CW16 #WPS16

Estructura base de datos

Tabla Definición
wp_commentmeta Meta datos que incorporan cada comentario almacenado en wp_comments.
wp_comments Almacenamiento de comentarios.
wp_links Información relativa a los enlaces añadidos en la funcionalidad de enlaces de WordPress. Obsoleta actualmente.

by jjpeleato.com | #CW16 #WPS16

Estructura base de datos

Tabla Definición
wp_options Almacenamiento de todos los ajustes de configuración de WordPress y plugins gestionado a través del panel de administración.
wp_postmeta Meta datos que incorporan cada posts almacenado en wp_posts.
wp_posts Almacenamiento de entradas, páginas y elementos de menú.

by jjpeleato.com | #CW16 #WPS16

Estructura base de datos

Tabla Definición
wp_termmeta Meta datos que incorporan cada categoría/etiqueta.
wp_terms Almacenamiento de categorías, tanto de las entradas como de enlaces y las etiquetas de las entradas.
wp_term_relationships Asociación de las entradas y enlaces que hacen referencia a categorías y/o etiquetas.

by jjpeleato.com | #CW16 #WPS16

Estructura base de datos

Tabla Definición
wp_term_taxonomy Describe la taxonomía (categoría, enlace o etiqueta) de cada línea de la tabla wp_terms.
wp_usermeta Almacenamiento de la información denominada data que cada usuario contiene.
wp_users Lista de usuarios.

by jjpeleato.com | #CW16 #WPS16

Estructura directorios

by jjpeleato.com | #CW16 #WPS16

Estructura directorios

La estructura de archivos y carpetas de una instalación WordPress es muy sencilla. Consta de tres carpetas principales: wp-admin, wp-content y wp-includes y el conjunto de archivos de la carpeta raíz y subdirectorios, de los cuales destacamos los ficheros wp-config.php y .htaccess situados en el directorio base.

by jjpeleato.com | #CW16 #WPS16

wp-admin

Directorio donde se almacena los ficheros de backend del core de WordPress.

by jjpeleato.com | #CW16 #WPS16

wp-content

Directorio donde se almacenan los contenidos específicos de nuestro proyecto.

by jjpeleato.com | #CW16 #WPS16

plugins

Directorio donde se almacenan los plugins de terceros.

by jjpeleato.com | #CW16 #WPS16

themes

Directorio donde se almacenan los themes que hay en nuestra aplicación. Puedes haber un número indeterminado de themes pero solo uno de ellos estará activo. Existe la metodología de trabajo basada en una estructura de theme padre y theme hijo (usando el hijo como theme activo).

by jjpeleato.com | #CW16 #WPS16

uploads

Directorio principal donde se almacenan todos los ficheros que se suban a la aplicación. Es el único directorio que va a tener permisos de escritura.

by jjpeleato.com | #CW16 #WPS16

wp-includes

Directorio principal core de WordPress.

by jjpeleato.com | #CW16 #WPS16

wp-config.php

Fichero de configuración de WordPress, donde se almacenan las credenciales para conectar contra la base de datos, sistema de autentificación Uniques Keys y Salts, pefijo de las tablas de las base de datos, WordPress Debug, etc.

Recomendado tener permisos de solo escritura 444.

by jjpeleato.com | #CW16 #WPS16

.htaccess

Fichero de configuración de servidor, que genera WordPress de forma automática con la instalación de la aplicación. Tiene como función mejorar la seguridad de WordPress. Ciertos plugins escriben en este fichero para aplicar seguridad u optimización al sitio web.

Recomendado tener permisos de solo escritura 444.

by jjpeleato.com | #CW16 #WPS16

¿Fin de la teoría?

... no me lo creo!

Buenas prácticas

Siempre existe un riesgo. Nada garantiza que sea 100% seguro. Y a lo que te preguntaras “Si nunca voy a estar seguro ¿entonces para qué hacer algo?”.

Lo que se trata con las buenas prácticas es minimizar el riesgo, blindar WordPress.

La seguridad en WordPress depende en cómo se ha instalado y configurado.

by jjpeleato.com | #CW16 #WPS16

Hosting confiable

Uno de los pasos más importantes es elegir un buen proveedor de alojamiento web.

Es recomendable buscar una solución que encaje dentro de nuestra horquilla de presupuesto, pero sin olvidar contratar un servicio con buenas políticas de seguridad y backups.

by jjpeleato.com | #CW16 #WPS16

Copias de seguridad

Debemos crear un procedimiento de forma manual o a través de plugins y crear un sistema de backups semanal.

Plugins recomendados:

  • All-in-one WP Migration
  • WP Migrate DB
  • BackWPUP

by jjpeleato.com | #CW16 #WPS16

Usuario bases de datos

Un usuario solo puede tener permisos de interactuar con la base de datos que trabajamos en nuestro proyecto WordPress y no tener acceso a ninguna más.

Utilización de un único usuario por base de datos y sitio.
Uso de contraseñas robustas

by jjpeleato.com | #CW16 #WPS16

Instalación WordPress subdirectorio

WordPress permite tener la instalación en un subdirectorio y trabajar desde la URL del dominio.

by jjpeleato.com | #CW16 #WPS16

Eliminar objetos

Es muy peligroso tener instalados plugins y temas inactivos. Cada tema o plugin puede llegar a ser una nueva puerta de acceso. Cuantos más haya, mas tendremos que supervisar. Y por lo tanto, aumenta la posibilidad de vulnerabilidades.

  • Eliminar todos los plugins innecesarios.
  • Eliminar todos los plugins no activos.
  • Eliminar todos los temas no activos.
  • Eliminar fichero readme.html en la carpeta raíz.
  • Eliminar etiquetas generadas por WordPress en la etiqueta < head >

by jjpeleato.com | #CW16 #WPS16

Eliminar objetos etiqueta < head >

Insertar contenido en el fichero functions.php del theme activo.

remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

by jjpeleato.com | #CW16 #WPS16

Ocultar directorio plugins

Es recomendado ocultar los directorios de los plugins, dado que a través de la ruta http://www.example.com/wp-content/plugin/nombre_plugin podemos ver la estructura del esqueleto de estos mismos.

Para evitar este problema solo es necesario crear/copiar un fichero index.php tal y como tenemos en la carpeta raíz de plugins o themes.

by jjpeleato.com | #CW16 #WPS16

wp-config.php

Modificar prefijo "wp_" en el proceso de instalación para la creación de tablas en la base de datos.

by jjpeleato.com | #CW16 #WPS16

Fijar valores AUTH/SALT

Modificar los valores AUTH/SALT en el fichero wp-config.php

Modificar siempre valores AUTH/SALT si existe alguna vulnerabilidad en nuestra página web.

by jjpeleato.com | #CW16 #WPS16

.htaccess

Fichero de configuración de servidor, que genera WordPress de forma automática con la instalación de la aplicación.

Tiene como función mejorar la seguridad de WordPress. Ciertos plugins escriben en este fichero para aplicar seguridad u optimización al sitio web.

by jjpeleato.com | #CW16 #WPS16

Configurar .htaccess

# Proteger fichero wp-config.php
< files wp-config.php >
    order allow,deny
    deny from all
< / files >

#Proteger fichero .htaccess
< files .htaccess >
    order allow,deny
    deny from all
< / files >

by jjpeleato.com | #CW16 #WPS16

Permisos directorios y archivos

Es muy importante definir los permisos de escritura, lectura y ejecución en el sitio web.

Lo que nos recomienda WordPress:

  • Archivos – Permisos 644
  • Directorios – Permisos 755

Lo que te recomiendo:

  • wp-config.php – Permisos 444
  • .htaccess – Permisos 444

by jjpeleato.com | #CW16 #WPS16

Actualizaciones

Una versión obsoleta, es síntoma de un fallo de seguridad o algún otro bug, además, no solo WordPress, sino también los plugins y los temas tienen que actualizarse, ya que también pueden tener algún fallo de seguridad.

Si no estás utilizando un theme o plugin y lo tienes desactivado, eso no significa que estés libre de amenaza.

by jjpeleato.com | #CW16 #WPS16

Recursos web

https://www.wpvulndb.com

http://www.wpdoctor.es

by jjpeleato.com | #CW16 #WPS16

WordPress Site Hacking

by jjpeleato.com | #CW16 #WPS16

Plugins de seguridad

Practica obligatoria. Instalar cualquiera de los siguientes plugins de Seguridad WordPress, que proporcionan una capa extra de protección a tu web.

  • Wordfence Security
  • iThemes Security
  • All in one WP Security & Firewall
  • Sucuri Security

by jjpeleato.com | #CW16 #WPS16

Usuarios

El sistema de usuarios de WordPress, es un sistema complejo en programación pero sencillo en su gestión.

NO dar permisos sobredimensionados a usuarios que solo desempeñan papel de editor.

by jjpeleato.com | #CW16 #WPS16

Usuarios: Panel de administración

  • Nombre de usuario: No editable. Nombre de usuario para hacer login en la aplicación. Corresponde a user_login en la tabla wp_users.
  • Alias: Nick del usuario. Corresponde a un meta dato almacenado en la tabla wp_usermeta compuesto por meta_key con el valor nickname como valor llave y meta_value con el valor introducido por el usuario.
  • Mostrar este nombre públicamente: Corresponde a display_name en la tabla wp_users.

by jjpeleato.com | #CW16 #WPS16

Usuarios: wp_users

  • user_login: Editable desde base de datos. Usuario login. Corresponde al Nombre de usuario
  • user_nicename: Editable desde base de datos. Nombre utilizado en la URL para visualizar todos los post de un autor. Obligatorio ser diferente a user_login. No se visualiza desde el panel de administración.
  • display_name: Nombre utilizado para mostrar públicamente en la página web. Corresponde a mostrar este nombre públicamente.

by jjpeleato.com | #CW16 #WPS16

Eliminar/Editar usuario admin o administrador.

Es una práctica no recomendada el uso de un nombre común como acceso a la aplicación, nombres como admin, Admin, administrador, root, etc son nombres que nunca se han de utilizar, ya que son los primeros que comprobara un cracker mediante ataques de fuerza bruta.

by jjpeleato.com | #CW16 #WPS16

Editar user_login y user_nicename con nombres diferentes

Mediante técnicas de escáner contra un proyecto WordPress si un usuario modifica el Alias o Mostrar este nombre públicamente con un nombre diferente al usuario de login, no evitamos que puedan encontrar nuestro nombre de acceso, ya que user_nicename mantendrá el mismo nombre.

by jjpeleato.com | #CW16 #WPS16

user_login: c2Ia_jjpeleato

user_nicename: jjpeleato

Alias (Zona administración): jjpeleato

display_name: jjpeleato

by jjpeleato.com | #CW16 #WPS16

Registro de usuarios

Si se permiten los registros de usuario se debe proteger contra los usuarios que se registrar masivamente para intentar acceder a su configuración, añadir comentarios spam o incluso inyectar malware.

Para detectar y eliminar la amenaza de sploggers una correcta práctica es la instalación del plugin.

WangGuard: https://wordpress.org/plugins/wangguard/

by jjpeleato.com | #CW16 #WPS16

Contraseñas

Brute force o ataque de fuerza bruta es un método utilizado para obtener contraseñas. Consiste en ir probando diferentes combinaciones comunes hasta dar con la correcta. Si utilizas contraseñas poco seguras como “123456”, “admin”, etc o contraseñas con relación a tu vida, con ataques de fuerza bruta e ingeniería social las probabilidades de que consigan obtener tu contraseña son altas.

by jjpeleato.com | #CW16 #WPS16

Utiliza contraseñas de 9 caracteres como mínimo, recomendable 12. Nunca utilices la misma contraseña en más de una web y utiliza combinaciones de números, letras minúsculas, mayúsculas y caracteres especiales. Además nunca utilices contraseñas que tengan relación con tu vida.

by jjpeleato.com | #CW16 #WPS16

Recursos web

http://www.clavesegura.org/

https://howsecureismypassword.net/

by jjpeleato.com | #CW16 #WPS16

Recursos apps

https://lastpass.com/

http://keepass.info/

by jjpeleato.com | #CW16 #WPS16

Phising

by jjpeleato.com | #CW16 #WPS16

Login: Desactivar errores

Anular los errores de la página de Login y mostrar cualquier mensaje informativo genérico, de esta forma evitamos que WordPress de información importante, como que el ERROR: Nombre de usuario inválido o ERROR: La contraseña que introdujo para el usuario “x” no sea correcta.

function login_errors_message() {
    return 'Error: Nombre de usuario o contraseña incorrectos';
}
add_filter('login_errors', 'login_errors_message');

by jjpeleato.com | #CW16 #WPS16

Login: Limitar accesos

Inhabilitar el registro de usuarios, añadir un sistema de comprobación humano como reCaptcha o WP Captcha e instalar un plugin para evitar y bloquear acceso masivos como Limit login attempts.

Limit Login Attempts: https://es.wordpress.org/plugins/wp-limit-login-attempts/

WP Captcha: https://es.wordpress.org/plugins/wp-captcha/

by jjpeleato.com | #CW16 #WPS16

Cambiar URL login

Por defecto, WordPress dispone de un sistema de rutas de login para acceder al panel de administración http://example.com/wp-admin y accedes a través de http://example.com/wp-login.php

Rename wp-login.php: https://wordpress.org/plugins/rename-wp-login/

by jjpeleato.com | #CW16 #WPS16

SPAM

Una de las tareas habituales de cualquier administrador de un gestor de contenidos es controlar el SPAM en los comentarios. Evitar contenido innecesario, enlaces no deseados y posible inyección de código.

Plugins recomendados:

  • WP Captcha
  • WP-SpamShield Anti-Spam
  • Akismet

by jjpeleato.com | #CW16 #WPS16

PingBack

Agregar en el fichero .htaccess

# Proteger XMLRPC
< Files xmlrpc.php >
Order Deny,Allow
Deny from all
< / Files >
#END Proteger XMLRPC

Eliminar el archivo xml-rpc.php de la carpeta raíz.

by jjpeleato.com | #CW16 #WPS16

HTML

Prevenir y desactivar el código HTML en los comentarios. No borra el código, sino que lo procesa para que no se ejecute.

add_filter('pre_comment_content', 'wp_specialchars');

by jjpeleato.com | #CW16 #WPS16

Google Search Console

Dar de alta tu sitio en la aplicación Google Search Console para que Google te informe de:

  • Inyecciones de código
  • Avisos de problemas de usabilidad
  • Problemas de velocidad
  • Enlaces maliciosos
  • Paginas no encontradas

by jjpeleato.com | #CW16 #WPS16

¿Tod@s bien?

Instalación WordPress

Instalación desde 0 y backup

jjpeleato.com/download/wp_install.pdf

by jjpeleato.com | #CW16 #WPS16

Limpiar WordPress

  • Acceso FTP a tu servidor o a un administrador de ficheros como cPanel
  • Acceso a la herramienta de gestión MySQL o a una interfaz de administración desde página web como phpMyAdmin
  • Editor de texto avanzado: Notepad++ o Sublime
  • Instalación entorno AMP en local.

    • https://www.apachefriends.org/es/index.html
    • http://www.wampserver.com/en/
    • https://bitnami.com/stack/wordpress

by jjpeleato.com | #CW16 #WPS16

Página en mantenimiento

Poner sitio web en modo mantenimiento. Una vez que dispongamos de una copia de seguridad con la última versión, eliminamos todo el proyecto y base de datos.

Descargar todo el código y exportar base de datos.

by jjpeleato.com | #CW16 #WPS16

Crear fichero 503.php

< ? php
	header("HTTP/1.1 503 Service Temporarily Unavailable");
	header("Status: 503 Service Temporarily Unavailable");
	header("Retry-After: 3600");
? >
< html >
    

Página web en mantenimiento

< / html >

by jjpeleato.com | #CW16 #WPS16

Crear fichero .htaccess

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !/503.php$ [NC]
RewriteRule .* /503.php [R=302,L]

by jjpeleato.com | #CW16 #WPS16

Reiniciar contraseñas

  • Modificar contraseñas a todos los usuarios administradores.
  • Modificar contraseña acceso panel de control hosting.
  • Modificar contraseña cuenta FTP.
  • Modificar contraseña usuario base de datos.
    • Al modificar la contraseña de la base de datos será necesario cambiarla inmediatamente en el fichero wp-config.php
  • Cambiar claves de autentificación de WordPress (AUTH/SALT)

by jjpeleato.com | #CW16 #WPS16

Copia de seguridad

Si disponemos de una copia de seguridad estable y con la mínima perdida de información. La opción más rápida y a la vez segura, es restaurar WordPress desde la copia de seguridad.

by jjpeleato.com | #CW16 #WPS16

Base de datos: wp_options

SELECT *
FROM wp_options
WHERE (
    option_id LIKE '%base64_decode%'
    OR option_name LIKE '%base64_decode%'
    OR option_value LIKE '%base64_decode%'
    OR autoload LIKE '%base64_decode%'
    OR option_id LIKE '%edoced_46esab%'
    OR option_name LIKE '%edoced_46esab%'
    OR option_value LIKE '%edoced_46esab%'
    OR autoload LIKE '%edoced_46esab%'
    OR option_name LIKE 'wp_check_hash'
    OR option_name LIKE 'class_generic_support'
    OR option_name LIKE 'widget_generic_support'
    OR option_name LIKE 'ftp_credentials'
    OR option_name LIKE 'fwp'
    OR option_name LIKE 'rss_%'
    AND option_name != 'rss_language'
    AND option_name != 'rss_use_excerpt'
    AND option_name != 'rss_excerpt_lenght'
)
ORDER BY option_id;

by jjpeleato.com | #CW16 #WPS16

Base de datos: wp_post

SELECT *
FROM wp_posts
WHERE (
    post_content LIKE '%iframe%'
    OR post_content LIKE '%script%'
    OR post_content LIKE '%noscript%'
    OR post_content LIKE '%display: none%'
    OR post_content LIKE '%visibility: hidden%'
    OR post_content LIKE '%position: absolute%'
    OR post_content LIKE '%hidden%'
    OR post_content LIKE '%top: -%'
    OR post_content LIKE '%bottom: -%'
    OR post_content LIKE '%right: -%'
    OR post_content LIKE '%left: -%'
    OR post_content LIKE '%-9999px%'
)
ORDER BY ID;

by jjpeleato.com | #CW16 #WPS16

Restaurar core

Descargamos la versión exacta de nuestra página web desde la página oficial de WordPress.

https://wordpress.org/download/release-archive/

by jjpeleato.com | #CW16 #WPS16

Eliminar todos los directorios y archivos de WordPress, menos la carpeta wp-content y wp-config.php

Descomprimir en otra ruta, nunca hacerlo en la carpeta raíz, ya que no queremos sobrescribir nada de wp-content y copiar todos los ficheros de la carpeta raíz y los directorios wp-admin y wp-includes.

Nunca se debe descargar otra versión, puede generar problemas de incompatibilidad.

by jjpeleato.com | #CW16 #WPS16

Restaurar plugins

Verificar versión exacta de todos los plugins instalados.

https://wordpress.org/plugins/wordfence/developers/

Nota: Esta sección no aparece en la página web en castellano.

by jjpeleato.com | #CW16 #WPS16

Buscar código malicioso

No siempre será posible restaurar en producción una copia estable dada la actividad de nuestra página web o si se trata de un e-commerce.

Una de las tareas más difíciles y complicadas, es realizar una búsqueda manual del código malicioso. Para ello, disponemos de herramientas las cuales nos pueden ayudar a esta ardua tarea.

by jjpeleato.com | #CW16 #WPS16

Recursos web

Google Search Console: https://www.google.com/webmasters/tools

Google informe de transparencia: https://goo.gl/u3bR0x

Sucuri Check: https://sitecheck.sucuri.net/

Crawler: https://www.screamingfrog.co.uk/

by jjpeleato.com | #CW16 #WPS16

Recursos apps

DiffMerge: https://sourcegear.com/diffmerge/

Notepad++: https://notepad-plus-plus.org/

Sublime: https://www.sublimetext.com/

by jjpeleato.com | #CW16 #WPS16

Para la búsqueda de código malicioso, trabajaremos con la carpeta wp-content/themes, dado que el resto de archivos y directorios deberían estar limpios al restaurar el core y plugins.

by jjpeleato.com | #CW16 #WPS16

Ejemplos patrones de búsqueda:

  • base64_decode
  • eval(
  • eval(base64
  • eval(base64_decode
  • header(‘Location
  • < script
  • < iframe style=”width:0;height:0;”
  • Revisar todos los index.php que ocultan directorios
  • Revisar URL’s maliciosas según patrón detectado en Google Search Console.
  • ...

by jjpeleato.com | #CW16 #WPS16

Aplicar buenas prácticas

Una vez finalizado todo el proceso de limpieza de malware en nuestro portal web. El último paso es aplicar buenas prácticas a nuestra página.

by jjpeleato.com | #CW16 #WPS16

Caso práctico

Descargar práctica:

jjpeleato.com/download/wp_error.zip

Guía limpiar WordPress:

jjpeleato.com/download/wp_clean.pdf

by jjpeleato.com | #CW16 #WPS16

Conclusión

Simplemente, GRACIAS A TOD@S

... y continuar disfrutando del congreso!!

by jjpeleato.com | #CW16 #WPS16