WordPress Security

721 visualizaciones

Publicado el

Con este tutorial podrás adentrarte en el mundo de la seguridad informática, conocer los diferentes tipos de ataques que existen y a los que toda aplicación web está sometida, aprender, paso a paso, a dotarte de herramientas que permitan blindar tu proyecto WordPress.

Ofrecemos respuestas, soluciones y trucos que te permitirán configurar una estrategia de seguridad para evitar las amenazas más comunes y en caso de ser atacado o infectado, contar con los recursos y conocimientos para limpiar o restaurar tu web.

Publicado en: Software
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
721
En SlideShare
0
De insertados
0
Número de insertados
11
Acciones
Compartido
0
Descargas
12
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

WordPress Security

  1. 1. WordPress Security by www.jjpeleato.com
  2. 2. INDICE 1.0 Seguridad informática 2.0 Amenazas 3.0 Hacker vs Cracker 4.0 Malware 4.1 Exploit 4.2 Virus 4.3 IWorm 4.4 Trojan Horse 4.5 Backdoor 4.6 Rootkits 4.7 Keyloggers 4.8 Adware 4.9 Spyware 4.10 Crimeware 4.11 SQL Injection 4.12 XSS (Cross-site scripting) 4.13 DDoS (Distributed Denial Of Service) 4.14 Botnet (Zombi) 4.15 Logic Bomb 4.16 Pharming 4.17 Phising 4.18 Spoofing 4.19 Clickjacking 5.0 WordPress. 5.1 Estructura base de datos. 5.2 Estructura directorio. 6.0 Buenas prácticas 6.1 Hosting confiable 6.2 Copias de seguridad 6.3 Usuario bases de datos
  3. 3. 6.4 Instalación WordPress subdirectorio 6.5 Eliminar objetos 6.6 Ocultar directorio plugins 6.7 wp-config.php 6.7.1 Prefijo tablas 6.7.2 Fijar valores AUTH/SALT 6.8 .htaccess 6.9 Permisos directorios y archivos 6.10 Actualizaciones 6.11 Plugins de seguridad 6.12 Usuarios 6.13 Contraseñas 6.14 Login 6.15 Headers 6.16 SPAM 6.17 PingBack 6.18 HTML 6.19 Google Search Console 7.0 Instalación 7.1 WordPress desde 0 7.2 WordPress desde copia de seguridad 8.0 Como limpiar WordPress 8.1 Página en mantenimiento 8.2 Reiniciar contraseñas 8.3 Copia de seguridad 8.4 Base de datos 8.5 Restaurar core 8.6 Restaurar plugins 8.7 Buscar código malicioso 8.8 Aplicar buenas prácticas 9.0 Conclusión
  4. 4. 1 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Versión WordPress: 4.5.3 Página web oficial: https://www.wordpress.org/ 1.0 Seguridad informática Seguridad (del latín securitas) es definido como la cualidad de seguro. Ausencia de riesgo o la confianza en algo o en alguien. Sin embargo, el término puede tomar diversos sentidos según el área o campo al que se hace referencia. 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. 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. 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. Para ello existen una serie de estándares, protocolos, métodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la información. La seguridad informática comprende software (bases de datos, metadatos, archivos, etc.), hardware y todo lo que signifique un riesgo, y de esta forma evitar que la información confidencial sea substraída, convirtiéndose, en información privilegiada. La seguridad informática es la disciplina que se ocupa de diseñar las normas, procedimientos, métodos y técnicas destinados a conseguir un sistema de información seguro y confiable. El objetivo de la seguridad informática consiste en minimizar los riesgos en una infraestructura informática.
  5. 5. 2 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Está concebida para proteger los activos informáticos, entre los que se encuentran los siguientes:  Infraestructura computacional: Parte tecnológica para el almacenamiento y gestión de la información.  Usuarios: Personas que utilizan la infraestructura tecnológica y gestionan la información.  Información: Principal activo. Utiliza y reside en la infraestructura computacional y es utilizada por los usuarios. Recomendación web: Oficina de Seguridad del Internauta https://www.osi.es/ 2.0 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. Las amenazas pueden ser causadas por:  Usuarios: Factor humano debido a contraseñas poco robustas o sus acciones causan problemas de seguridad debido a que tienen permisos sobre dimensionados, no se les han restringido acciones innecesarias, etc.  Programas maliciosos: Programas dedicados a perjudicar o a hacer un uso ilícito de los recursos del sistema. Estos programas pueden ser virus, gusanos, troyanos, bombas lógicas, spyware, etc.  Errores de programación: Errores de programación que pueden ser usados como exploits por los crackers.  Intrusos: Personas que consiguen acceder a los datos o programas a los cuales no están autorizados  Siniestro: Robo, incendio, inundación… una mala manipulación o una mala intención derivan en la pérdida del material o de los archivos.  Personal técnico interno: técnicos de sistemas, administradores de bases de datos, técnicos de desarrollo, etc. Los motivos que se encuentran entre los habituales son: disputas internas, problemas laborales, despidos, fines lucrativos, espionaje, etc.  Fallos electrónicos o lógicos de los sistemas informáticos en general.
  6. 6. 3 WordPress Security by www.jjpeleato.com 31 de julio de 2016  Catástrofes naturales: Rayos, terremotos, inundaciones, etc. Existen infinidad de modos de clasificar un ataque y cada ataque puede recibir más de una clasificación. Por ejemplo, un caso de phising puede llegar a robar la contraseña de un usuario de una red social y con ella realizar una suplantación de la identidad para un posterior acoso, o el robo de la contraseña puede usarse simplemente para uso de editar su perfil. Sin dejar de ser delito en ambos casos, al menos en países con legislaciones, como lo es España) Las amenazas pueden categorizarse por tipos:  Amenazas por el origen: Conectar a una red externa da la posibilidad de que algún atacante puede entrar en ella y con ella poder hacer robo de información o alterar el funcionamiento de la red. Sin embargo, el hecho de que la red no esté conectada a un entorno externo, como Internet, no garantiza la seguridad de la misma. o Amenazas internas: Debido a usuarios o personal técnico, conocen la red y saben cómo es su funcionamiento, ubicación de la información, datos de interés, etc. o Amenazas externas: Aquellas amenazas que se originan fuera de la red. Al no tener información de la red, un atacante tiene que realizar ciertos pasos para poder conectar y buscar la manera de atacar. Este tipo de amenazas se intentan prevenir gracias al administrador de la red, con sistemas de prevención de intrusos y firewalls.  Amenazas por el efecto: Amenaza que causa problemas a quien recibe los ataques. o Robo de información o Destrucción de información o Anulación del funcionamiento de los sistemas. o Suplantación de identidad, publicidad de datos personales o confidenciales, cambio de información, venta de datos personales, etc. o Robo de dinero, estafas, manipulación, etc.  Amenazas por el medio utilizado: Clasificado por modus operandi del atacante, el objetivo puede ser distinto para un mismo tipo de ataque. o Virus informáticos o Phising o Ingeniería social o Denegación de servicios o Spoofing: de DNS, de IP, de DHCP, etc.
  7. 7. 4 WordPress Security by www.jjpeleato.com 31 de julio de 2016 3.0 Crackers vs Hackers El concepto de crackers y hackers no debe ser confundido, ya que su comportamiento y ética es diferente. Crackers (to crack): 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. 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). Recomendación web: Chema Alonso (Hacker) http://www.elladodelmal.com/ https://www.youtube.com/user/Chemai64 4.0 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. El termino malware se utiliza por los profesionales de la informática para referirse a una variedad de software hostil, intruso o molesto. El software se considera malware en función de los efectos que provoque en una infraestructura- el termino malware incluye virus, troyanos, rootkits, scareware, spyware, adware intruso, crimware y otros software maliciosos. Malware no es lo mismo que software defectuoso (bugs peligrosos), no de forma intencionada.
  8. 8. 5 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.1 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. Ejemplos:  Acceso de forma no autorizada  Control de un sistema  Consecución de privilegios no concedidos lícitamente  Consecución de ataques de denegación de servicios Curiosidad: Se considera exploit un ataque de ingeniera social, que consiste en convencer o sonsacar a una víctima cierta información. 4.2 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. Su nombre lo adapta de la similitud que tienen con los virus biológicos que afectan a los humanos, donde los antibióticos en este caso serían los programados de Antivirus. Habitualmente, reemplazan archivos ejecutables por otros infectados con el código de este. Los virus pueden destruir, de manera intencionada, los datos almacenados, encriptación de archivos, etc. o más inofensivos que solo producen ralentizaciones o molestias menores. El funcionamiento de un virus informático: Se ejecuta un programa que está infectado. El código del virus queda alojado en memoria RAM, incluso cuando el software ejecutado ha terminado. El virus entonces toma el control de los servicios básicos del sistema operativo, infectando, de manera posterior, archivos ejecutables que cuando son llamados para su ejecución se añade el código del virus al programa y se graba en disco. Curiosidad: 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).
  9. 9. 6 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.3 IWorm Gusano informático consiste en un malware que tiene la propiedad de duplicarse a sí mismo. Los gusanos utilizan las partes automáticas de un sistema operativo que generalmente son invisibles al usuario. 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. Lo más peligroso de los gusanos es su capacidad para replicarse en un sistema informático, por lo que un gusano en un ordenador podría enviar cientos o miles de copias de sí mismo, creando un efecto a gran escala. Otra diferencia con el virus informático es que un gusano no necesita alterar los archivos de programas, sino que se encuentra en memoria y se duplica a sí mismo. Normalmente causan problemas en la red consumiendo el ancho de banda. Curiosidad: 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). 4.4 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. El término Troyano proviene de la historia del caballo de Troya mencionado en la Odisea de Homero. Los troyanos pueden realizar diferentes tareas, pero, en la mayoría de los casos, crean puertas traseras que permite la administración remota a un usuario no autorizado. Un troyano no es un virus informático. La diferencia consiste en su finalidad. Para que un programa sea un troyano solo tiene que acceder y controlar la maquina anfitriona sin ser advertido, al contrario que un virus, que es un
  10. 10. 7 WordPress Security by www.jjpeleato.com 31 de julio de 2016 huésped destructivo, el troyano normalmente no provoca daño, ya que no es ese su objetivo. Curiosidad: 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. 4.5 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. Destacar que un backdoor no tienen por qué ser utilizados para fines malintencionados o espionaje y no siempre son un error, ya que pueden haber sido diseñadas con la intención de tener una entrada secreta. Como por ejemplo, para borrar toda la información confidencial. 4.6 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. El término proviene de una concatenación de la palabra inglesa root, que significa “raíz” (nombre tradicional de la cuenta privilegiada en los sistemas operativos Unix) y de la palabra inglesa kit, que significa “conjunto de herramientas”. Se esconde a sí mismo y a otros programas, procesos, archivos, directorios, claves de registro, y puertos que permiten al intruso mantener el acceso a una amplia variedad de sistemas operativos como pueden ser GNU/Linux, Solaris o Microsoft Windows para remotamente realizar acciones o extraer información sensible. El funcionamiento consiste en que un atacante instala un rootkit en un ordenador después de primero haber obtenido un acceso al nivel raíz, ya sea por una vulnerabilidad conocida o por haber obtenido una contraseña (por crackeo de la encriptación o por ingeniería social). Una vez que el rootkit ha sido instalado, permite que el atacante disfrace la siguiente intrusión y mantenga el acceso privilegiado al ordenador por medio de evadir a los mecanismos normales de autenticación y autorización.
  11. 11. 8 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.7 Keyloggers Registrador de teclas, derivado del inglés key (tecla) y logger (registrador), es un 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. Suele utilizarse como malware del tipo daemon (demonio) o servicio, permitiendo que otros usuarios tengan acceso a contraseñas importantes, como los números de acceso a banca o información privada. Este tipo de software es utilizado por troyanos, virus o gusanos informáticos. 4.8 Adware “Advertising” (Publicidad) y “Ware” (Programa). 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. Cuando se fuerza al usuario a usar un determinado buscador web para monitorizar la actividad del usuario. O cuando se insertan de forma automática en la navegación del usuario con cualquiera de los navegadores publicidad en las diferentes páginas por las cual navega. 4.9 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. El spyware se auto instala en el sistema afectado de forma que se ejecuta cada vez que se pone en marcha el ordenador (consumiendo CPU y RAM, reduciendo la estabilidad del ordenador) y funciona todo el tiempo, controlando el uso que se hace de Internet y mostrando anuncios relacionados. Funciona como un parásito.
  12. 12. 9 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.10 Crimeware Tipo de software diseñado para la ejecución de delitos financieros en entornos en línea. Diferenciarse de Adware y Spyware. 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. 4.11 SQL Injection Inyección SQL consiste en un 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. El origen de la vulnerabilidad radica en la incorrecta validación o filtrado de variables utilizadas en un programa que trabaja con código SQL. Es una de las vulnerabilidades más generales que existen y puede ocurrir en cualquier lenguaje de programación o script que este embebido dentro de otro. 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 '%'; 4.12 XSS (Cross-site scripting) 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. Este tipo de vulnerabilidad se conoce en español con el nombre de Secuencias de órdenes en sitios cruzados. XSS es un ataque que puede ser utilizado para robar información delicada, robar sesiones de usuario, etc. El problema deriva al no validar correctamente los datos de entrada que son usados en las aplicaciones web, o no depurar la salida correctamente para su correcta visualización como página web.
  13. 13. 10 WordPress Security by www.jjpeleato.com 31 de julio de 2016  XSS Directo (Persistente): Consiste en insertar código HTML peligroso en sitios que lo permiten, incluyendo etiquetas como <script> o <iframe>  XSS Indirecto (Reflejo): Consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones, y se transfiere la información como en una etiqueta oculta, en una cadena en la URL del navegador, en una cookie o cualquier otra cabecera HTTP. http://www.example.com/home.php?frame=menu.php javascript:while(1)alert("Mensaje infinito"); 4.13 DdoS (Distributed Denial Of Service) 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. Normalmente, consiste en ataques para provocar la caída de servicios en servidores por el consumo de ancho de banda o por sobrecargar los recursos computacionales del sistema de la víctima. El ataque hace que el servidor se sobrecargue y no pueda seguir prestando servicios (denegación) ya que no es capaz de abastecer a la cantidad de solicitudes. La ampliación de los ataques DoS son los llamados ataques distribuidos de denegación de servicios (DDoS) el cual se lleva a cabo generando un gran flujo de información desde varios puntos de conexión. La forma más común de realizar es a través de un botnet siendo esta técnica el ciberataque más usado y eficaz por su sencillez. Curiosidad: Anonymous utiliza mucho este recurso para realizar sus ataques contra sus objetivos.
  14. 14. 11 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.14 Botnet (Zombi) 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 4.15 Logic Bomb Bomba lógica es una parte de código insertada 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. 4.16 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. La palabra pharming tiene relación con el termino phising, el objetivo es obtener información confidencial de los usuarios, desde números de tarjetas de crédito hasta contraseñas. 4.17 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 cibercriminal, phisher, se hace pasar por una persona o empresa de confianza en una aparente comunicación oficial electrónica, por lo común un correo electrónico o algún sistema de mensajería instantánea o con llamadas telefónicas. 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.
  15. 15. 12 WordPress Security by www.jjpeleato.com 31 de julio de 2016 4.18 Spoofing Termino de seguridad de redes que hace referencia al uso de técnicas a través de las cuales un atacante se hace pasar por una entidad distinta a través de la falsificación de los datos en una comunicación. 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. 4.19 Clickjacking Clickjacking o secuestro de clic, es una técnica maliciosa para engañar a usuarios de internet con el fin de revelar información confidencial o tomar el control de su ordenador cuando hacen clic en páginas web aparentemente inocentes. Un ataque clickjacking puede iniciarse a traves de código embebido que se ejecuta sin conocimiento del usuario, por ejemplo, a través de un botón para realizar otra función. 5.0 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. Recurso web: W2Techs https://goo.gl/OvTxqJ Dada la importancia de ser una de las plataformas más utilizadas, a diario se convierte en objetivo de múltiples ciberataques. La mayoría de los ataques, tienen como objetivo crear un flujo de navegación de forma oculta hacia páginas de terceros, para mejorar su posicionamiento en los buscadores. El problema más común que surge en las páginas web son debidos a la desactualización del núcleo de WordPress, de alguno de los plugins instalados o de las desactualización de los themes.
  16. 16. 13 WordPress Security by www.jjpeleato.com 31 de julio de 2016 5.1 Estructura base de datos Tablas WordPress 4.5.3 wp_commentmeta Meta datos que incorporan cada comentario almacenado en wp_comments. wp_comments Almacenamiento de comentarios. wp_links Información relativa en la funcionalidad de enlaces de WordPress. Obsoleta actualmente. wp_options MUY IMPORTANTE. 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. Almacenamiento de ciertos plugins. wp_posts MUY IMPORTANTE. Almacenamiento de entradas, páginas y elementos de menú. wp_termmeta Meta datos que incorporan cada categoría/etiqueta almacenado en wp_terms. wp_terms Almacenamiento de categorías, tanto de las entradas como de enlaces y las etiquetas de las entradas. wp_term_relationships Almacenamiento de la asociación de las entradas y enlaces que hacen referencia a categorías y/o etiquetas. 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.
  17. 17. 14 WordPress Security by www.jjpeleato.com 31 de julio de 2016 5.2 Estructura directorio Estructura directorios WordPress 4.5.3 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. La carpeta más importante del proyecto y donde se debe aplicar un correcto protocolo de copias de seguridad es wp-content, es la única carpeta que no se puede borrar, pues contiene todos los datos del sitio web.
  18. 18. 15 WordPress Security by www.jjpeleato.com 31 de julio de 2016  wp-admin: Directorio donde se almacena los ficheros de backend del core de WordPress.  wp-content: Directorio donde se almacenan los contenidos específicos de nuestro proyecto. o plugins: Directorio donde se almacenan los plugins de terceros. o 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). o 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.  wp-includes: Directorio principal del core de WordPress.
  19. 19. 16 WordPress Security by www.jjpeleato.com 31 de julio de 2016  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.  .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. 6.0 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 Lo sencillo cuando existe un hack en nuestro proyecto WordPress es pensar que el culpable es él y nosotros por haber usado este tipo de tecnología, pero es un gran error, el núcleo de WordPress es uno de los más seguros que existen dentro del gran abanico de CMS que existen. La seguridad depende en cómo se ha instalado y configurado. Muchas de las vulnerabilidades tienen poco que ver con la seguridad en WordPress, pero si con tu servidor, contraseñas pobres, plugins y temas de dudosa procedencia, etc. La seguridad no sólo depende de WordPress, sino del que lo usa. 6.1Hosting 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 copias de respaldo, permisos de archivos y carpetas, encapsulamiento de hosting, monitorización en busca de anomalías, etc. y dejando totalmente de lado proveedores baratos que suelen significar reducción de costes en las áreas citadas anteriormente.
  20. 20. 17 WordPress Security by www.jjpeleato.com 31 de julio de 2016 6.2 Copias de seguridad Crear una correcta política de backups. No confiar únicamente en las copias de respaldo que nos garantizan los proveedores de hosting. Debemos crear un procedimiento de forma manual o a través de plugins en crear un sistema de backups semanal. Es muy importante tener una copia de seguridad del código y base de datos estables y no corrompidos, de esta forma prevenir casos de hacking y minimizar la perdida de información con la restauración de una versión anterior. Plugins recomendados:  All-in-one WP Migration  WP Migrate DB  BackWPUP 6.3 Usuario bases de datos Utilización de un único usuario por base de datos y sitio. Tal 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. Esta metodología de trabajo es obligatoria en los casos en que dispongamos de más de un proyecto en un mismo hosting. Práctica obligatoria: Uso de contraseñas robustas. 6.4 Instalación WordPress subdirectorio Es un uso recomendado pero muy poco frecuente en las instalaciones WordPress. WordPress permite tener la instalación en un subdirectorio y a la vez tenerlo funcionando en la raíz de la web. Con este tipo de acciones para conectar a wp-admin el sistema interno de WordPress nos re direccionara a /nombre_subdirectorio/wp-admin de esta forma, los ataques de fuerza bruta que aplican patrones según el esqueleto de directorios serán minimizados.
  21. 21. 18 WordPress Security by www.jjpeleato.com 31 de julio de 2016 6.5 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> agregando las siguientes líneas de códigos al fichero functions.php del tema 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); 6.6 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. 6.7 wp-config.php Recomendado tener permisos de solo escritura 444.
  22. 22. 19 WordPress Security by www.jjpeleato.com 31 de julio de 2016 6.7.1 Prefijo tablas WordPress Práctica obligatoria. Modificar prefijo “wp_” en el proceso de instalación para la creación de tablas en la base de datos. Utilizar un prefijo de 6 caracteres (letras y números) de forma aleatoria. Ejemplo: “a1x40x_” Además, como recomendación, utilizar nombre de usuario y bases de datos concatenados con un prefijo creado con caracteres de forma aleatoria. 6.7.2 Fijar valores AUTH/SALT Modificar los valores AUTH/SALT que se encuentran dentro del fichero de la carpeta raiz wp-config.php
  23. 23. 20 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Tal y como nos indica WordPress generaremos nuestros propios valores y sustituiremos por los valores que nos facilita el recurso web: http://api.wordpress.org/secret-key/1.1/salt MUY IMPORTANTE: Modificar siempre valores AUTH/SALT si existe alguna vulnerabilidad en nuestra página web y ha sido hack. 6.8 .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. # 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> 6.9 Permisos directorios y archivos El código de WordPress está compuesto por archivos y directorios que se alojan en un servidor web, normalmente con sistema operativo Linux. 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 Recomendación: Existen dos ficheros considerados como críticos. wp- config.php y .htaccess a los cuales hay que aplicar un nivel de permisos más restrictivo y conocido como permisos solo lectura, permisos 444.
  24. 24. 21 WordPress Security by www.jjpeleato.com 31 de julio de 2016 6.10 Actualizaciones Los crackers atacan sitios con versiones antiguas, no actualizadas, dados que suelen ser sitios vulnerables al no incorporar las suficientes protecciones a tipos de ataques conocidos. Un cracker puede conocer la versión de WordPress que se está utilizando y realizar los ataques contra los exploits conocidos para dicha versión. 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 plugin y lo tienes desactivado, eso no significa que estés libre de amenaza. Recomendación “casi” obligatoria el tener actualizado el núcleo de WordPress, plugins y themes a la última versión. Recursos web: https://wpvulndb.com/ http://www.wpdoctor.es/ Curiosidad: https://youtu.be/59DOLUnoGbQ
  25. 25. 22 WordPress Security by www.jjpeleato.com 31 de julio de 2016 6.11 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. Muchas de las medidas de protección que podemos aplicar a nuestra instalación WordPress vienen incluidas en plugins especializados. La mayoría de ellos contienen ajustes para evitar ataques de fuerza bruta, inyecciones de código y modificaciones en archivos de sistema, incluyendo sistemas de aviso para que estés informado de cualquier posible ataque.  Wordfence Security o Plugin de seguridad que incluye varias características que contribuyen a asegurar tu web, dispone de escáner de archivos, firewall, bloqueo de redes o IP, monitorización de archivos, escáner de malware, auditoria de contraseñas, protección contra ataques de fuerza bruta, etc.  iThemes Security o Plugin de seguridad que incluye una serie de reglas divididas en cuatro áreas: esconder las vulnerabilidades de la versión de WordPress actual, protección y bloqueo contra usuarios maliciosos, detección y monitorización web al encontrar cambios en los archivos y base de datos y por último, recuperación con una fuerte política de backups programable.  All in one WP Security & Firewall o Plugin de seguridad que reduce el riesgo mediante la comprobación de vulnerabilidades, además a través de un sistema de puntuación aplica un sistema de buenas prácticas, entre ellas ocultar el famoso /wp-admin para conectar a la aplicación web, etc.  Sucuri Security o Auditor de seguridad, monitor de integridad, escáner de malware remoto, fortificación de seguridad, etc 6.12 Usuarios NO dar permisos sobredimensionados a usuarios que solo desempeñan papel de editor. Sistema de usuarios. El sistema de usuarios de WordPress, es un sistema complejo en programación pero sencillo en su gestión.
  26. 26. 23 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Para su gestión completa lo dividimos en dos áreas: 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. Base de datos tabla 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. o Obligatorio ser diferente a user_login. o 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. 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. 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. Una correcta práctica es cambiar el usuario de login concatenando un prefijo de caracteres aleatorios y que nunca sea igual a user_nicename Ejemplo:  user_login c2Ia_jjpeleato  user_nicename: jjpeleato  Alias (Zona administración): jjpeleato  display_name: jjpeleato
  27. 27. 24 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Este problema radica en la creación de usuarios en WordPress, ya que utiliza el nombre de login para almacenar en los campos user_nicename y display_name (si no existe un alias desde el formulario de alta de usuarios). Permitir 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/ 6.13 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. 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. Recursos web: http://www.clavesegura.org/ https://howsecureismypassword.net/ Recursos apps: https://lastpass.com/ http://keepass.info/ Curiosidad: https://youtu.be/Q17yhbmmux8 6.14 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. Agregando la siguientes líneas de código al fichero functions.php del tema activo.
  28. 28. 25 WordPress Security by www.jjpeleato.com 31 de julio de 2016 function login_errors_message() { return 'Error: Nombre de usuario o contraseña incorrectos'; } add_filter('login_errors', 'login_errors_message'); Limitar accesos Mediante intentos masivos de acceso a través de la página de Login se realizan la mayoría de ataques contra sitios WordPress, es imprescindible proteger el acceso y aplicar medidas de seguridad. 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. 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 Las vulnerabilidades de plugins o themes obsoletos pueden ser backdoors por las cuales un cracker realizar sus ataques contra el sistema de login. Como correcta práctica es la instalación del plugin: Rename wp-login.php: https://wordpress.org/plugins/rename-wp-login/ 6.15 Headers Agregar cabeceras de seguridad añadiendo el siguiente código en el fichero functions.php de /wp-content/themes/theme_name_active. add_action( 'send_headers', 'add_header_security' ); function add_header_security() { header( 'X-Content-Type-Options: nosniff' ); header( 'X-Frame-Options: SAMEORIGIN' ); header( 'X-XSS-Protection: 1;mode=block' ); } header( 'X-Content-Type-Options: nosniff' ) - Tiene como función para aquellos navegadores que soportan esta condición, no cargar las hojas de estilos y scripts cuyo Myme-type no sea el adecuado.
  29. 29. 26 WordPress Security by www.jjpeleato.com 31 de julio de 2016 header( 'X-Frame-Options: SAMEORIGIN' ) – Tienen como función prevenir que la página pueda ser abierta en un frame o ifreame. De esta forma se pueden evitar ataques clickjacking sobre tu web. header( 'X-XSS-Protection: 1;mode=block' ) - Activar para aquellos navegadores que disponen de la funcionalidad el filtro XSS. Capa de seguridad adicional que bloquea ataques XSS. Internet Explorer lo implementa desde su versión 8. 6.16 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. Para evitar este tipo de prácticas se recomienda el uso de los siguientes plugins:  WP Captcha  WP-SpamShield Anti-Spam  Akismet 6.17 PingBack Existe una vulnerabilidad denominada vulnerabilidad PingBack que tiene como función habilitar el protocolo XML-RPC que nos permite que WordPress conecte con la aplicación WordPress para iOS o Android, así como editores offline y algunos sistemas de contenidos. El aplicar una solución, deja inactivas funciones importantes de WordPress como la gestión remota, el uso de aplicaciones móviles o incluso el sistema de pingbacks y trackbacks. Si un proyecto tiene definido el no uso de este tipo de aplicaciones debe aplicar las siguientes recomendaciones. Agregar en el fichero .htaccess # Proteger XMLRPC <Files xmlrpc.php> Order Deny,Allow Deny from all </Files> #END Proteger XMLRPC
  30. 30. 27 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Eliminar el archivo xml-rpc.php de la carpeta raíz o renombrar a xml- rpc.php.disabled. 6.18 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'); 6.19 Google Search Console (Webmaster Tools) 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 7.0 Instalación 7.1 WordPress desde 0. 1) Descargar última versión WordPress desde la página oficial y descomprimir ficheros en carpeta raíz: https://wordpress.org/ https://es.wordpress.org/ 2) Creación de BBDD a utilizar. CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci; 3) Modificación fichero configuración. En la carpeta raíz crear una copia y renombrar el fichero wp-config-sample.php a wp-config.php. Y modificamos las siguientes líneas de código. Añadir nombre de la base de datos: define('DB_NAME', 'dbname ');
  31. 31. 28 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Añadir usuario base de datos: define('DB_USER', 'dbuser'); Añadir contraseña usuario base de datos: define('DB_PASSWORD', 'dbpassword'); Añadir hostname proyecto web. Por defecto “localhost” define('DB_HOST', 'localhost'); Añadir formato de codificación de tablas. Por defecto “utf8” define('DB_CHARSET', 'utf8'); Añadir asociación de caracteres o letras asociadas en formato no unicode. Por defecto se encuentra vacio. define('DB_COLLATE', 'utf8_general_ci'); 4) Modificación seguridad. Visitamos la página web y sustituimos el código PHP en el fichero de configuración wp-config.php. https://api.wordpress.org/secret-key/1.1/salt/ 5) Para desarrolladores. Activamos el modo debug de WordPress. define('WP_DEBUG', true); 6) Visitar la página web desde nuestro navegador y continuar los pasos que nos indica la interfaz para la correcta instalación. Nos solicitara una serie de información necesaria. Todos los datos pueden ser modificados a posterior desde el panel de administración o desde la base de datos. Trabajar con contraseñas robustas.  http://localhost/wordpress  Título del sitio: wp-example  Nombre de usuario: example  Contraseña: 1234 (Se almacena en formato encriptación MD5)  Correo electrónico: example@example.com  Privacidad. Una vez rellenado toda la información pulsamos en Instalar WordPress. 7) Se recomienda borrar los archivos install.php y upgrade.php de la carpeta wp-admin tras la instalación y por seguridad. 8) Eliminar la línea del archivo readme.html en donde aparece la versión de WordPress.
  32. 32. 29 WordPress Security by www.jjpeleato.com 31 de julio de 2016 9) Modificar instalación WordPress a subdirectorio con un nombre de 6 caracteres aleatorios compuesto por números, letras minúsculas y sin caracteres especiales. 1) Entramos a la sección Ajustes > Generales desde el panel de administración. a. Dirección de WordPress (URL): Introducir dominio más nombre de carpeta separado por “/” http://www.example.com/a3x91l b. Dirección del sitio (URL): Introducir dirección de la página web (nombre dominio) sin incluir el nombre de la carpeta. http://www.example.com Guardamos cambios. Nota: No intentes visitar la página web, nos mostrara un mensaje de error. 2) Copiar (no cortar/mover) fichero index.php desde el directorio donde está instalado WordPress al directorio raíz de nuestra web, normalmente carpeta public_html. 3) Editar código fichero index.php a. Antes: require(„./wp-blog-header.php‟); b. Después: require(„./a3x91l/wp-blog-header.php‟); 10) Entramos a la sección Ajustes > Enlaces permanentes y seleccionamos Estructura personalizada agregamos la siguiente sintaxis: /%post_id%/%postname%/ Y guardamos cambios para que WordPress genere toda la nueva estructura de enlaces permanentes. 11) Aplicar buenas prácticas pos instalación.  Instalación plugin seguridad  Política de copias de seguridad  Modificar usuario administrador base de datos  Eliminar objetos  Permisos directorios y ficheros  Permisos wp-config.php  Editar .htaccess y modificar permisos  Bloquear Login  SPAM  PingBack  HTML  Google Search Console
  33. 33. 30 WordPress Security by www.jjpeleato.com 31 de julio de 2016 7.2 WordPress desde copia de seguridad. Nota: Para poder realizar este paso es necesario tener una copia de seguridad estable tanto del código, cómo de la base de datos en formato SQL. 1) Descomprimir ficheros de la copia de seguridad en la carpeta raíz. 2) Creación de BBDD a utilizar según el nombre que existe en el fichero de configuración. CREATE DATABASE dbname CHARACTER SET utf8; 3) Ejecutar script SQL de la copia de seguridad de la BBDD o importar desde phpMyAdmin. mysql –uroot –ppassword source script.sql 4) IMPORTANTE. Modificar registros URL‟s de configuración en la tabla “wp_options” en la base de datos por la dirección nueva. Registro “option_name” con valor “siteurl”. Normalmente “option_id” con valor “1”. UPDATE wp_options SET option_value = 'http://www.new-domain.com' WHERE option_name = 'siteurl'; Registro “option_name” con valor “home”. Normalmente “option_id” con valor “2”. UPDATE wp_options SET option_value = 'http://www.new-domain.com' WHERE option_name = 'home'; También, puedes ejecutar una consulta única para la modificación de los registros. UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl'; 5) IMPORTANTE. Actualizar todos los registros a nivel de contenidos del dominio anterior por nuevo. UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');
  34. 34. 31 WordPress Security by www.jjpeleato.com 31 de julio de 2016 Nota: Existe un campo almacenado en la tabla wp_posts que tiene relación con el sistema de URL‟s para la funcionalidad RSS. Es necesario modificar estos registros si nuestro portal ofrece esta opción. UPDATE wp_posts SET guid = replace(guid, 'http://www.old- domain.com','http://www.new-domain.com'); 6) IMPORTANTE. Existe la posibilidad de que no tengamos acceso al usuario administrador de WordPress. Procedemos a modificar el usuario desde la base de datos. UPDATE `wp-example`.`wp_users` SET `user_login` = 'example', `user_email` = 'jjpeleato@gmail.com', `user_pass` = MD5('1234'), `user_nicename` = 'example', `user_status` = '0', `display_name` = 'example' WHERE `wp_users`.`ID` = 1; 7) Para el correcto funcionamiento del portal web y su navegación a entradas y páginas es necesario recrear todo el sistema de enlaces permanentes (Permalinks). Para ello, visitamos “Ajustes” > “Enlaces permanentes” y sin realizar ninguna modificación guardamos. El propio sistema de WordPress se encargara de recorrer todo el sistema de enlaces internos para modificar en su estructura el antiguo dominio por el nuevo. Consejo: Agregamos en Estructura personalizada la siguiente sintaxis: /%post_id%/%postname%/ 8) Una vez realizado todos los pasos visitamos la página WordPress y aplicamos buenas prácticas. 8.0 Como limpiar WordPress Las medidas que se exponen a continuación no son sencillas y requieren de ciertos conocimientos técnicos, y de accesos fuera de lo habitual a tu WordPress. Debes disponer de las siguientes herramientas:  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. o https://www.apachefriends.org/es/index.html o http://www.wampserver.com/en/ o https://bitnami.com/stack/wordpress
  35. 35. 32 WordPress Security by www.jjpeleato.com 31 de julio de 2016 8.1 Página en mantenimiento Poner sitio web en modo mantenimiento, descargaremos todo el código y exportaremos la base de datos. Una vez que dispongamos de una copia de seguridad con la última versión, eliminamos todo el proyecto y base de datos y crearemos un fichero 503.php en la carpeta raíz. <?php header("HTTP/1.1 503 Service Temporarily Unavailable"); header("Status: 503 Service Temporarily Unavailable"); header("Retry-After: 3600"); ?> <html> <h1>Página web en mantenimiento</h1> </html> Por último, crearemos un fichero .htaccess que tendrá como función redireccionar todo el tráfico de la web hacia el archivo .php RewriteEngine on RewriteCond %{REMOTE_ADDR} !^111.111.111.111 RewriteCond %{REQUEST_URI} !/503.php$ [NC] RewriteRule .* /503.php [R=302,L] 8.2 Reiniciar contraseñas Cambiar todas las contraseñas que afectan en el proyecto.  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. o 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) 8.3 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.
  36. 36. 33 WordPress Security by www.jjpeleato.com 31 de julio de 2016 8.4 Base de datos Búsqueda SQL tabla 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; Busqueda SQL tabla 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;
  37. 37. 34 WordPress Security by www.jjpeleato.com 31 de julio de 2016 8.5 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/ Para verificar con que versión de WordPress trabajamos, desde el panel de administración, arriba a la izquierda, pulsamos en el logotipo de WordPress. Una vez verificada y descarga la misma versión, eliminamos todos los directorios y archivos de WordPress, menos la carpeta wp-content y wp- config.php MUY IMPORTANTE: Nunca se debe descargar otra versión, puede generar problemas de incompatibilidad. Una vez descargada la versión del repositorio de WordPress, debemos 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.
  38. 38. 35 WordPress Security by www.jjpeleato.com 31 de julio de 2016 8.6 Restaurar plugins Verificamos la versión exacta de cada uno de los plugins a restaurar, ya que cualquiera de los plugins puede estar comprometido. Para descargar la versión exacta, desde el repositorio oficial de WordPress, en los detalles de los plugins, hay una sección (página en inglés) llamada Developers. Nota: Esta sección no aparece en la página web en castellano. Ejemplo: https://wordpress.org/plugins/wordfence/developers/ Una vez descargada la versión exacta de todos los plugins, eliminamos uno por uno el directorio del plugin y pegamos la versión estable y limpia. Nota: No mover o copiar. Si eliminar y copiar.
  39. 39. 36 WordPress Security by www.jjpeleato.com 31 de julio de 2016 8.7 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. Recursos web: https://goo.gl/u3bR0x https://sitecheck.sucuri.net/ https://www.screamingfrog.co.uk/ Recurso app: https://sourcegear.com/diffmerge/ https://notepad-plus-plus.org/ https://www.sublimetext.com/ Recursos plugins: https://es.wordpress.org/plugins/exploit-scanner/ 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. Con la ayuda de programas como notepad++ y sublime, realizaremos búsquedas de forma recursiva a partir del directorio raíz del theme. Ejemplos de patrones de búsqueda de código malicioso:  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.  … Existen muchas opciones posibles de búsqueda y que no son lo más conocidos. Para ello, utilizaremos como segunda herramienta: DiffMerge. Software que tiene como función comparar ficheros y verificar que existen cambios en su código, además, te muestra en que línea de código y que
  40. 40. 37 WordPress Security by www.jjpeleato.com 31 de julio de 2016 código ha sido modificado. Entre otras características, también te muestra los ficheros creados nuevos y que no existían en la anterior copia de seguridad. Por último, debemos analizar la carpeta uploads y asegurarnos de que no existen ficheros php, js, css, etc. En este momento, tienes una instalación de WordPress prácticamente limpia y todo debe estar funcionado bien. 8.8 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. Entre ellas, destacaría, la actualización de core¸ plugins y themes a la última versión y si no es suficiente, como último recurso aplicar permisos 444 (solo lectura) a todo el proyecto menos a la carpeta uploads. Por último, solicitar en Google Webmaster Tools realizar un escáner a tu sitio web para eliminarnos de las listas de sitios infectados. 9.0 Conclusión Con este tutorial has podido adentrarte en el mundo de la seguridad informática, conocer los diferentes tipos de ataques que existen y a los que toda aplicación web está sometida, aprender, paso a paso, a dotarte de herramientas que permitan blindar tu proyecto WordPress. En este tutorial se te ha ofrecido respuestas, soluciones y trucos que te permitirán configurar una estrategia de seguridad para tu WordPress. Conocer las claves para evitar las amenazas más comunes y en caso de ser atacado o infectado, contar con los recursos y conocimientos para limpiar o restaurar tu web. Gracias de antemano y un saludo José J. Peleato Pradel. “La seguridad no sólo depende de WordPress, sino del que lo usa”. @jjpeleato www.jjpeleato.com

×