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.
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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