WordPress.org

Codex

Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

es:Fortaleciendo WordPress

La seguridad en WordPress es algo que se toma muy en serio, pero como con cualquier otro sistema, hay problemas de seguridad potenciales que pueden ocurrir si algunas precauciones básicas de seguridad no se han tomado. Este artículo le dará una introducción a conceptos básicos de seguridad y servirá de guía introductoria para que pueda armar su sitio WordPress de manera más segura.

Este artículo no es el increíble arreglo rápido que quizás esté esperando para resolver todos sus preocupaciones de seguridad.

¿Qué es la seguridad?

La seguridad no es absoluta. Es un proceso continuo y debería ser gestionado como tal. La seguridad trata de reducción del riesfo. No de eliminación del riesgo. Se trata de usar los controles de seguridad más adaptados para cubrir riesgos y amenazas que aplican a su sitio web.

La seguridad transcende también la aplicación WordPress. Trata tanto de hacer más seguro y fortalecer su ambiente local, su comportamiento en línea y sus procesos internos como de afinar y configurar su instalación. La seguridad encaja tres dominios: Gente, Procesos y Tecnología. Cada uno trabaja en harmonía síncrona con los demás. Sin la gente y sus procesos, la tecnología misma sería inútil. Recuerde que mientras vaya avanzando en esta guía, el paisaje de las amenazas sigue evolucionando constantemente y, por lo tanto, su postura de seguridad también.

Alojamientos de sitios web

Si ha descargado WordPress desde WordPress.org, necesitará alojarlo usted mismo, y tendrá un amplio abanico de opciones. Necesitará elegir entre hosting compartido, hosting gestionado y un buen número de otras variaciones. Cada host gestionará la seguridad de manera distinta, pero cada uno será consistente en que la responsabilidad final de la seguridad de sus instalaciones caerá sobre el propietario del sitio web (no sobre ellos).

No hablaremos a continuación del fortalecimiento de su hosting. Este tema está fuera del alcance de esta guía, que se concentrará en su instalación de WordPress. Para mayor información, le recomendamos visitar la sección Hosting WordPress del Codex.

Como decide de alojar su sitio web es importante, y debería ser hecho con cuidado: la decisión que hará dictaminará los controles de seguridad específicos que deberá poner en marcha. Esto significa que usted, propietario del sitio, será responsable de fortalecer su instalación y es por eso que esta guía es tan importante.

Conceptos de seguridad

Existen conceptos básicos de Seguridad de la Información (InfoSec por sus siglas en inglés) de los cuales debería estar al tanto cuando inicie su aventura en la segurización de WordPress. Estos conceptos son críticos para ayudarle a entender e implementar las recomendaciones presentadas en esta guía.

Principio del Menor Privilegio

Cuando configura aplicaciones web y WordPress, cada aplicación o usuario debería solo tener permisos para acceder a los recursos que le son necesarios para su fin legítimo y nada más. En otras palabras, no de ningún acceso a una aplicación o un usuario del cual no necesita. Puede aprender más sobre este principio en Wikipedia.

El principio de menor privilegio se elabora sobre esta idea: dar a la gente el acceso que requiera, por el tiempo que requiera para hacer su trabajo. No más, no menos. Cuando terminen su trabajo, reinicie sus accesos a niveles más adecuados. Esto es más aplicable aun cuando piensa en usuarios y sus roles apropiados. WordPress provee una cantidad de roles diferentes en su versión base, cada uno diseñado con diferentes permisos.

Defensa en Profundidad

La idea de Defensa en Profundidad suscribe al concepto de que no hay una solución única capaz de encargarse de todas sus preocupaciones de seguridad. En su lugar, promueve el uso de un acercamiento por capas a soluciones de seguridad complementarias, diseñadas cada una para dar respuesta a las debilidades de otras. Con múltiples capas de seguridad, si una falla, todavía podría impedir el ataque, o por lo menos ser capaz de detectarlo temprano y recuperar de este rápidamente.

Emplear una táctica de defensa en profundidad puede verse así: emplear un firewall para ayudar a la mitigación de ataques externos, emplear un scanner de seguridad en la eventualidad de que algo sea exitoso, usar controles de autentificación múlti-factores, o hasta integrar el sitio con un gestionador de llaves. Cada uno es un control de seguridad diseñado para responder a una amenaza.

Controles de seguridad

Avanzando más allá de la teoría, tomamos conceptos presentados arriba y proveemos una lista de acciones que puede tomar como administrador de sitio web para fortalecer y mejorar su postura de seguridad:

  • Limitar accesos: Reduzca la cantidad de personas que tienen un acceso administrativo a su sitio WordPress a su estricto mínimo. Debería también reducir la cantidad de puntos de entrada posibles a su estricto mínimo. Puede hacer esto instalado solo las aplicaciones web que necesita y usa. Elimine cualquier plugin o tema no usado. Esto sigue el principio de menor privilegio y provee controles administrativos y lógicos para ayudarlo a preservar la confidencialidad, disponibilidad e integridad.
  • Isolación funcional: Su sistema debería ser configurado para minimizar la cantidad de daños que pueden hacerle en el caso que esté comprometido. Cuando sea posible, evite tener un gran número de aplicaciones web distintas en una misma cuenta de hosting. La separación lógica de aplicaciones en cuentas separadas con sus propios accesos confinarán un ataque a esta única cuenta y reducirá el daño.
  • Backups: Mantenga backups confiables. Debería ocasionalmente verificar la integridad de sus backups para asegurarse de que pueda restaurar su sitio web si está dañado. Tenga un plan para la recuperación de su sitio web si este está comprometido y documente este plan. La guía WordPress Backups le ayudará en esto.
  • Manténgase al día: Haga el mayor esfuerzo posible para mantener su instalación WordPress actualizada, incluyendo los plugins y temas. Debería poner un control administrativo en marcha que requiera una validación, con alguna frecuencia, del estado de su sitio y de sus componentes extensibles.
  • Fuentes de confianza: No tome plugins ni temas desde fuentes que no sean de confianza. Googlear para una versión gratuita de un plugin premium es una receta para desastre. Gente y organizaciones maliciosas distribure lo que se conoce como plugins y temas "nulled" que contienen código malicioso que extenderán el plugin premium, pero lo vincularán con malware.
  • Actualizaciones y noticias de seguridad: Las vulnerabilidades de seguridad son cosas que afectan todos los software, y WordPress no es una excepción. Para mantenerse al día, recomendamos suscribir a la base de datos de vulnerabilidades mantenida por WPVulnDB.com. También puede mantenerse un paso adelante de las últimas tendencias siguiendo el propio tag Security de WordPress.

Entorno de trabajo seguro

Asegúrese de que su computadora local, su navegador y sus routers estén al día y libre de infecciones de spyware, malware y viruses. Considere usar herramientas como no-script (o desactivar javascript/flash/java) en su navegador y usar VPNs para cifrar sus comunicaciones en línea cuando cambie de ubicación y use hostpots WiFi públicos diferentes. Considere usar un sistema operativo como Linux y siempre conectarse a través de SSH o SSL.

También debería asegurarse de la seguridad de sus dispositivos móviles. Instale las actualizaciones de seguridad tan pronto como estén disponibles.

Vulnerabilidades en WordPress

WordPress es actualizado regularmente. Estas actualizaciones cubren igualmente bugs y fallas de seguridad. Cuando trabaja sobre versiones puntuales (p.e. 4.7.1) debería considerar aplicar las nuevas versiones tan pronto como sean publicadas. Las versiones mayores (p.ej. 4.7) deberían ser aplicadas tan pronto como posible, pero asegúrese de seguir un buen proceso de actualización para evitar cualquier conflicto potencial.

Temas / Plugins

La vulnerabilidad que más afecta los propietarios de sitios WordPress provienen de las partes extensibles de la plataforma, y más específicamente los plugins y temas. Estos son el vector número 1 de ataque siendo explotado por los criminales cibernéticos para hackear y hacer maluso de sitios WordPress.

Estas vulnerabilidades no son introducidas intencionalmente. Son una parte normal del desarrollo de software. Los desarrolladores responden a esto publicando nuevas versiones. Es importante tomar un inventario de todos los plugins que el sitio usa y se inscriba a la lista de correos de desarrolladores para asegurarse de mantenerse al día con las últimas actualizaciones.

Actualizar WordPress

Artículo principal: Updating WordPress.

La última versión de WordPress está siempre puesta a disposición en el sitio principal de WordPress en https://wordpress.org. Las publicaciones oficiales no se hacen disponibles desde otros sitios web. Nunca descargue o instale WordPress desde cualquier otro sitio que https://wordpress.org.

Desde la versión 3.7, WordPress ha creado las actualizaciones automáticas. Use esta funcionalidad para facillitar el proceso de mantenerse al día. También puede usar el WordPress Dashboard para mantenerse informado de las actualizaciones de Wordpress.

Puede encontrar el blog oficial de WordPress.org en esta página donde se anuncian las actualizaciones de seguridad.

Reportar problemas de seguridad

Si piensa haber encontrado una falla de seguridad en WordPress, puede ayudarnos reportando el problema. Vea la Security FAQ para mayor información sobre como reportar problemas de seguridad. Ver Submitting Bugs sobre hacerlo.

Seguridad del servidor web

El servidor web que corra WordPress, y el software que resida en este, pueden tener vulnerabilidades. Si está gestionando su propio servidor, asegúrese de instalar las actualizaciones de seguridad para su sistema operativo, servidor web, PHP y cualquier aplicación. Si está usando un hosting compartido, su proveedor de hosting se encargará usualmente de estas actualizaciones de seguridad para usted.

Si está en un hosting compartido (uno que aloja otros sitios web a parte del suyo) y un sitio web en el mismo servidor está comprometido, puede experimentar una contaminación entre sitios (cross-site contamination). Hable con su proveedor de hosting para entender mejor como gestionan la seguridad en sus servidores compartidos.

Si está en un servidor de alojamiento compartido y uno o más sitios en este servidor han sido hackeados, puede que la dirección IP de su sitio web esté registrada en una lista negra de spammers. Si encuentra dificultades en el envío de correos desde su sitio web, puede usar una herramienta de búsqueda de blacklist como mxtoolbox.com para ver lo que está pasando.

FTP / SFTP

Al conectarse a su servidor, debería usar una conexión SFTP. Esto asegura que la conexión entre su máquina y el servidor queda protegida. La mayoría de los proveedores de hosting ofrecen SFTP. Si no está seguro/a, consúltelos. Lea más sobre la diferencia en esta explicación sobre los protocolos FTP y SFTP.

Seguridad de la base de datos

Si corre varios blogs en el mismo servidor, es buena práctica considerar mantenerlos en bases de datos separadas cada uno, gestionadas por un usuario distinto. Eso se cumple más eficientemente cuando se procede a la instalación inicial de WordPress. Esto es una estrategia de contención: si un intruso llega a crackear una instalación de WordPress, le hace el trabajo mucho más difícil para alterar sus otros blogs. Si administra MySQL usted mismo, vea Secure MySQL Database Design para mayor información.

Recomendaciones de fortalecimiento

A continuación proponemos cambios estructurales que proveen un fortalecimiento de seguridad adicional para su instalación de WordPress. Cada opción tiene ciertas desventajas y problemas de los cuales necesita estar al tanto.

Backups de datos

Tome copias de seguridad de sus datos regularmente, incluyendo sus bases de datos MySQL. Vea el artículo principal WordPress_Backups.

Una buena estrategia de backups puede incluir mantener un grupo de snapshots regulares de su instalación completa de WordPress (incluyendo los archivos del core de WordPress y su base de datos) en una ubicación de confianza.

Control de accesos

Uno de los dos vectores de ataque más usados por los cibercriminales son las vulnerabilidades del software y el control de accesos. Para combatir esto debe segurizar cualquier punto de entrada a su hosting, instalación de WordPress o servidor. Esto incluye emplear contraseñas fuertes y activar algún tipo de autenticación multi-factores.

Autenticación 2FA

Al trabaja con cualquier sitio en línea, considere activar 2FA por defecto. Vea Two Step Authentication para mayor información.

Algunos plugins de WordPress diseñados para ayudar con esto son:

Passwords

El objetivo con su contraseña es hacerlo difícil para otras personas adivinarlo y difícil para un ataque de fuerza bruta funcionar. Una de las claves en esto es hacer que sea Compleja, Larga, y Unica. Se recomienda usar un generador de contraseñas para todas las contraseñas.

WordPress provee también una métrica de complejidad de contraseña que se muestra cuando cambia su contraseña en WordPress. Úsela para cambiar su contraseña y asegurarse que su fortaleza es adecuada.

Servicios como 1Password y LastPass puden ayudarle a gestionar y crear contraseñas aleatorias.

Carpetas / Archivos Core

Permisos de archivos

La estrategia de permisos por defecto debería ser:

  • Carpetas - 755
  • Archivos - 644

Existe varias maneras de ejecutar este cambio. También existen variaciones a estos permisos que incluyen cambiarlos para que sean más restrictivos. No obstante, estos son los valores recomendados por defecto. Verifique con su hosting antes de hacer cambios de permisos, ya que podrían tener efectos adversos sobre la eficiencia y la disponibilidad de su sitio.

Evite tener cualquier archivo o carpeta con permisos 777.

Puede leer más acerca de las actualizaciones de WordPress y las pertenencias de archivos en la página Codex Updating WordPress.

Cambiar los permisos de archivos

A través de la línea de comando, puede ejecutar los comandos siguientes para cambiar los permisos de manera recursiva sobre carpetas y archivos de manera distinta:

Para carpetas:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

Para archivos:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

Puede hacer esto también con su cliente FTP/SFTP favorito.

WP-Admin

Añadir protección por contraseña del lado del servidor (como BasicAuth) para /wp-admin/ añade una secunda capa de protección alrededor de la zona de administración de su blog, la pantalla de login y sus archivos.

Nota: Esto impide visitantes normales del sitio de acceder a /wp-admin/admin-ajax.php.

Ver la sección Resources para mayor información sobre como proteger su carpeta wp-admin/ con contraseña de manera adecuada.

WP-Includes

Una segunda capa de protección puede ser añadida, en la cual los scripts generalmente no deberían ser accedidos por cualquier usuario. Una forma de hacerlo es de bloquear estos scripts usando mod_rewrite en el archivo .htaccess (con Apache). Nota: para asegurar que el código siguiente no sea sobrescrito por WordPress, póngalo fuera de los tags # BEGIN WordPress y # END WordPress en el archivo .htaccess. WordPress puede sobrescribir cualquier cosa entre estos tags.

# Bloquear los archivos de solo-inclusión.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress

Nota: Esto no funciona bien en Multisitios ya que la regla RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] impediría los archivos ms-files.php file de generar imágenes. Omitir esta línea permitirá al código de funcionar.

WP-Content/Uploads

La carpeta uploads es una de las carpetas que prácticamente necesitará ser inscribible por el servidor web. Es donde todos los archivos son subidos remotamente. Quiere evitar la ejecución de código PHP en esta carpeta. Puede hacerlo poniendo un .htaccess a la raíz de la carpeta uploads/ usando:

# Kill PHP Execution
<Files *.php>
deny from all
</Files>

Nota: Esto puede romper su tema si requiere la ejecución de PHP en uploads/. Si aplica esta regla y el diseño de su sitio se rompe, elimínela y su sitio reaparecerá.

WP-Config.php

Si usa un servidor con .htaccess, puede poner esto en este archivo (en las primeras líneas) para impedir el acceso a cualquier persona que intente llegar ahí:

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

Desactivar la edición de archivos

Es recomendado desactivar la edición de archivos dentro del dashboard (panel de control) de WordPress. WordPress tiene una constante que desactiva la edición via el archivo wp-config.php. Aplique las siguientes dos líneas al fin de su archivo wp-config.php:

## Disable Editing in Dashboard
define('DISALLOW_FILE_EDIT', true);

Plugins de seguridad

Existen varios plugins de seguridad disponibles para WordPress, que proveen un amplio abanico de funcionalidades de seguridad y fortalecimiento. Hay 4 tipos de plugins de seguridad. Es importante diferenciarlos porque cada uno está diseñado para resolver problemas distintos.

  • Prevención: Ayudan a protegerlo/a de los hacks. Muchas veces incluyen algún tipo de solución de Firewall.
  • Detección: Identifican y notifican si algo está raro y requiere una inspección más profunda. Esto puede venir en la forma de scanners y de verificaciones de integridad.
  • Auditoría: Siga y mantenga un log activo de las actividades en el sitio (p.ej., seguir los logins, los cambios de temas y plugins, las actualizaciones, etc..).
  • Utilidades: Provee un abanico de opciones diseñadas para empoderar el usuario en hacer cambios dirigidos a la seguridad en su instalación

Mientras piense en su postura de seguridad y mire hacia la integración de un plugin de seguridad, considere lo que está tratando de obtener y como este plugin lo/a ayuda en alcanzar este objetivo.

Firewalls de sitios web

Los firewalls de sitios web le permiten mitigar proactivamente los ataques externos como intentos de exploits que intentan abusar vulnerabilidades de software, ataques de fuerza bruta que intentan hacerse con un acceso a su panel de administración, o ataques de denegación de servicio que intentan matar la disponibilidad de su sitio web. Todas son amenazas de seguridad bien reales.

Hay dos tipos de Firewalls que conocer: End-Point y Cloud-based.

  • Los Firewalls End-Point son aplicados al servidor web mismo, y muchas veces son gestionados por el hosting (a menos que gestione su propio servidor dedicado o servidor virtual, en cual caso será responsable usted mismo/a). También existen aplicaciones de firewalls end-point. Estas se encuentran en los plugins de WordPress (cada uno usando su propía técnica para la integración).
  • Los Firewalls Cloud-Based residen fuera de su servidor web y de su aplicación. Introducen una capa intermedia fuera del entorno de origen local. Los más notorios de los Firewalls funcionan como un CDN y ofrecen una red distribuida globalmente.

Desplegar un Firewall de sitio web se está volviendo rápidamente la mejor manera para defenderse de las nuevas amenazas de hoy. No obstante, no es un substituto para una mala seguridad. Es una pieza dentro de un marco más amplio que deber ser considerado siempre.

Monitoreo continuo

Despliegue herramientas que le permiten mantener una visibilidad sobre el estado global de seguridad de su sitio. Existen una cantidad de herramientas para ayudarle en esto.

Scanners Online Libres

Los remote scanners miran a su sitio como un usuario o un motor de búsqueda lo haría.

Ejemplos:

Estos pueden ser automatizados usando plugins también, ejemplos:

Scanners de aplicaciones

Los Application scanners miran los archivos locales en el servidor. Para WordPress, esto es alcanzado por plugins de seguridad.

Ejemplos:

Si corre su propio servidor, podría querer considerar:

Monitoreo de reputación

Los monitores de reputación son servicios proveídos por marcas establecidas como Google, Bing, etc que tienen un interés discreto en que sus sitios web muestren datos inalterados.

Estas herramientas son gratuitas porque tienen interés en que su sitio sea limpio, y le notificarán 24 a 48 horas antes de bloquear su sitio.

Uptime / Monitoreo de disponibilidad

Servicios como UptimeRobot y Pingdom monitorean la disponibilidad de sitios web. Le mandan alertas via e-mail, SMS o aplicaciones móviles si su sitio se cae. Puede monitorear su sitio desde múltiples ubicaciones.

Una de las funcionalidades que algunos de estos servicios ofrecen es la posibilidad de monitorear cambios de páginas web. Websitepulse en particular puede decirle si una página ha cambiado por más de un cierto porcentaje. Usando el monitoreo de disponibilidad en combinación con el monitoreo de cambios de páginas puede darle una advertencia temprana si su sitio ha sido hackeado. Muchas veces un hacker hará cambios que desfiguran su sitio web y captar los cambios temprano puede alertarle a los pocos minutos de un hack.

Monitoreo de integridad de archivos

Monitorear cambios del sistema de archivos puede darle una advertencia temprana de una intrusión. Existe unos plugins de WordPress que mirarán a la aplicación y le ayudarán a identificar si la integridad de los archivos ha sido afectada.

Ejemplos:

Consideraciones de seguridad

Lo a que los plugins acceden

Cuando instala un plugin WordPress, este tiene acceso a sus archivos, carpetas y base de datos de WordPress. El nivel de acceso que un plugin tiene es el mismo nivel de acceso que el core de WordPress. No hay separación de permisos entre los plugins de WordPress. Tampoco no hay límite a la cantidad de acceso que un plugin tiene.

Es importante que entienda lo que un plugin hace y lo a que estará accediendo. Debería leer la documentación del plugin, verificar su reputación leyendo los comentarios de otros usuarios y verificar los foros de soporte del plugin por cualquier problema antes de dar a este plugin un acceso a su sistema, instalándolo.

Seguridad por oscuridad

La security por oscuridad es una capa complementaria a una estrategia de seguridad de Defensa en Profundidad. No debería ser la estrategia.

Existen algunas partes de WordPress en las cuales la obscuridad puede ayudar con la seguridad.

Logging

Su proveedor de hosting usualmente proveerá los logs del servidor web por 24 horas. No todos los servicios de hosting lo activan por defecto. Considere siempre registrar los logs por 7 días o más. Podría necesitar activar esta funcionalidad o requerir que se active para usted.

Existen plugins que le pueden ayudar con los logs aunque el proveedor de hosting no lo haga. Por ejemplo:

Los logs proveen una huella de auditoría de todas las consultas que han ocurrido en su sitio web. Si su sitio web es hackeado, le permite a usted o a un equipo de analistas forenses determinar como su sitio fue comprometido.

Consideraciones avanzadas

Estas recomendaciones son para los usuarios más avanzados que gestionan sus propios servidores dedicados o VPS.

Monitoreo del tráfico

Si tiene acceso SSH a su servidor, puede acceder la línea de comando shell y ver sus logs mientras se actualizan en tiempo real con el siguiente comando: tail -f /ubicación/del/archivo/de/logs. Esto le dará la posibilidad de monitorear el tráfico en bruto en tiempo real sin costo.

Si quiere aprender como hacer un análisis de archivo de log para identificar ataques, puede iniciar leyendo Log Analysis for Web Attacks: A Beginner’s Guide.

También puede monitorear el tráfico de su sitio web en tiempo real usando una vista en tiempo real de Google Analytics o Piwik.

Monitoreo de integridad del servidor

Una estrategia similar a las recomendaciones de monitoreo de integridad de archivos arriba, le recomendamos considerar algo similar para su servidor web.

Un par de sistemas que permiten organizar este proceso incluye:

Algunas herramientas de asistencia incluyen:

Monitoreo de actividad maliciosa

La mayoría de los plugins de seguridad de WordPress y de productos de seguridad proveen un amplio abanico de opciones de monitoreo y alertas. Estos incluyen alertas sobre:

  • Ataques de logins por fuerza bruta e intentos de logins
  • Intentos de login y logins exitosos
  • Bloqueo de IPs

Al configurar alertas es importante tener un ratio alto de signal-to-noise (proporción de señal válida en comparación con el "ruido" de cosas sin importancia). En otras palabras, solo debería recibir alertas que son importantes para usted y sobre las cuales deberá actuar.

Lectura adicional

Recursos del Codex