Las 5 lagunas de seguridad más importantes en las instalaciones de WordPress

Su instalación de WordPress puede ser tan segura o insegura como desee. Conozca cuáles son las cinco cosas más importantes cuando se trata de seguridad.

Las preocupaciones y quejas sobre la seguridad de WordPress no son nada nuevo.

Si necesita un CMS y consulta a un proveedor de servicios que no está en WordPress, la seguridad es la estafa número uno de la que escuchará. ¿Significa eso que todo el mundo debería abandonar WordPress y cambiar a generadores de sitios estáticos o a un CMS sin cabeza?

No, porque como toda verdad en la vida, esta también tiene muchas caras.

¿Es WordPress altamente inseguro?

Echemos un vistazo a algunos sitios web enormes que se crearon en WordPress:

  • TechCrunch
  • El neoyorquino
  • BBC América
  • Bloomberg
  • Noticias MTV
  • Blog de PlayStation

Entonces, ¿qué hace que estas empresas, con bolsillos absurdamente profundos y una fuerza laboral alucinante, no cambien de WordPress? Si cree que la respuesta es código heredado, piénselo de nuevo: para estos nombres, la seguridad de los datos y la imagen pública son infinitamente más importantes que una simple migración que costará (estimo) menos de $200,000.

Seguramente sus ingenieros saben lo que están haciendo y no ven problemas de seguridad fundamentales e irresolubles con WordPress.

Incluso yo tengo la suerte de administrar una instalación de WordPress que recibe entre 3,5 y 4 millones de visitantes al mes. ¿El número total de brechas de seguridad en los últimos ocho años? ¡Cero!

Asi que . . . ¿WordPress es seguro?

Lo siento si parece un trolleo, pero aquí está mi respuesta:

Lo digo porque, como toda verdad en la vida, es complicada. Para llegar a una respuesta legítima, primero debemos entender que WordPress (o cualquier CMS preconstruido, para el caso) no es como un armario que guardas en algún lugar de forma permanente y listo.

Es una pieza compleja de software con muchas dependencias:

  • PHP, que es el lenguaje con el que está construido
  • Una máquina visible públicamente que aloja la instalación.
  • El servidor web utilizado para manejar visitantes (Apache, Nginx, etc.)
  • La base de datos que se utiliza (MySQL/MariaDB)
  • Temas (paquetes de archivos PHP, CS y JS)
  • Complementos (paquetes de archivos PHP, CS y JS)
  • Y muchos más, dependiendo de cuánto pretenda lograr su instalación

En otras palabras, una brecha de seguridad en cualquiera de estas costuras se denominará una brecha de WordPress.

Si la contraseña raíz del servidor era admin123 y se comprometió, ¿es una falla de seguridad de WordPress?

Si la versión de PHP tenía una vulnerabilidad de seguridad, o si el nuevo complemento que compró e instaló contenía un agujero de seguridad evidente; y así. Para resumir: un subsistema falla y es una falla de seguridad de WordPress.

Aparte, no permita que esto le dé la impresión de que PHP, MySQL y Apache no son seguros. Cada pieza de software tiene vulnerabilidades, cuyo recuento es asombroso en el caso del código abierto (porque está disponible para que todos lo vean y analicen).

¿Alguien dijo «seguro»? 😛

Lo que aprendemos de todo este ejercicio es esto:

Nada es seguro o inseguro por sí mismo. Son los diferentes componentes utilizados los que forman los eslabones de la cadena, siendo la cadena, por supuesto, tan fuerte como el más débil de ellos. Históricamente, la etiqueta «no segura» de WordPress era una combinación de versiones antiguas de PHP, alojamiento compartido y la adición de complementos/temas de fuentes no confiables.

Al mismo tiempo, algunos descuidos bastante comunes hacen que su instalación de WordPress sea vulnerable a aquellos que saben cómo explotarlos y están decididos. Y de eso se trata este post. Entonces, sin más preámbulos (y argumentos circulares), comencemos.

Las principales lagunas de WordPress que los piratas informáticos pueden explotar

El prefijo de la tabla de WordPress

La famosa instalación de 5 minutos es lo mejor que le ha pasado a WordPress, pero como todos los asistentes de instalación, nos vuelve perezosos y deja las cosas por defecto.

Esto significa que el prefijo predeterminado para sus tablas de WordPress es wp_, lo que da como resultado nombres de tablas que cualquiera puede adivinar:

  • wp-usuarios
  • wp-opciones
  • wp-posts

Ahora, considere un ataque conocido como Inyección SQL, donde las consultas maliciosas de la base de datos se insertan inteligentemente y se ejecutan dentro de WordPress (tenga en cuenta que este no es un ataque exclusivo de WordPress/PHP).

Si bien WordPress tiene mecanismos incorporados para manejar este tipo de ataques, nadie puede garantizar que no suceda.

Entonces, si de alguna manera, el atacante logra ejecutar una consulta como DROP TABLE wp_users; DROP TABLE wp_posts;, todas sus cuentas, perfiles y publicaciones se borrarán en un instante sin posibilidad de recuperación (a menos que tenga un esquema de copia de seguridad implementado, pero incluso entonces, es probable que pierda datos desde la última copia de seguridad) ).

Simplemente cambiar el prefijo durante la instalación es un gran problema (que no requiere ningún esfuerzo).

Se recomienda algo aleatorio como sdg21g34_ porque no tiene sentido y es difícil de adivinar (cuanto más largo sea el prefijo, mejor). La mejor parte es que este prefijo no necesita ser memorable; el prefijo es algo que WordPress guardará, y nunca más tendrás que preocuparte por eso (¡al igual que no te preocupas por el prefijo wp_ predeterminado!).

La URL de inicio de sesión predeterminada

¿Cómo sabes que un sitio web se está ejecutando en WordPress? Uno de los signos reveladores es que ve la página de inicio de sesión de WordPress cuando agrega «/wp-login.php» a la dirección del sitio web.

Como ejemplo, tomemos mi sitio web (http://ankushthakur.com). ¿Está en WordPress? Bueno, continúa y agrega la parte de inicio de sesión. Si te sientes demasiado perezoso, esto es lo que sucede:

¯_(ツ)_/¯

WordPress, ¿verdad?

Una vez que se sabe esto, el atacante puede frotarse las manos con júbilo y comenzar a aplicar trucos desagradables de su Bag-O’-Doom en orden alfabético. ¡Pobre de mí!

La solución es cambiar la URL de inicio de sesión predeterminada y dársela solo a aquellas personas de confianza.

Por ejemplo, este sitio web también está en WordPress, pero si visita http://kirukiru.es.com/wp-login.php, todo lo que obtendrá es una gran decepción. ¿La URL de inicio de sesión está oculta y solo la conocen los administradores?

Cambiar la URL de inicio de sesión tampoco es ciencia espacial. solo toma esto enchufar.

Felicitaciones, acaba de agregar otra capa de frustrante seguridad contra los ataques de fuerza bruta.

La versión de PHP y servidor web

Ya hemos discutido que cada pieza de software que se ha escrito (y se está escribiendo) está llena de errores que esperan ser explotados.

Lo mismo ocurre con PHP.

Incluso si está utilizando la última versión de PHP, no puede estar seguro de qué vulnerabilidades existen y podrían descubrirse de la noche a la mañana. La solución es ocultar un encabezado particular enviado por su servidor web (¿nunca ha oído hablar de los encabezados? lea este!) cuando un navegador se conecta con él: x-powered-by.

Así es como se ve si revisa las herramientas de desarrollo de su navegador favorito:

Como podemos ver aquí, el sitio web nos dice que se ejecuta en Apache 2.4 y usa la versión 5.4.16 de PHP.

Ahora, eso ya es una tonelada de información que estamos pasando sin ningún motivo, lo que ayuda al atacante a reducir su elección de herramientas.

Estos encabezados (y otros similares) deben estar ocultos.

Afortunadamente, se puede hacer rápidamente; desafortunadamente, se necesita un conocimiento técnico sofisticado, ya que deberá sumergirse en las entrañas del sistema y meterse con archivos importantes. Por lo tanto, mi consejo es que le pida a su proveedor de alojamiento de sitios web que haga esto por usted; si no ven si un consultor puede hacerlo, aunque esto dependerá en gran medida del host de su sitio web, ya sea que su configuración tenga tales posibilidades o no.

Si no funciona, podría ser el momento de cambiar de proveedor de alojamiento o cambiar a un VPS y contratar a un consultor por cuestiones de seguridad y administración.

¿Vale la pena? Solo tú puedes decidir eso. 🙂

Ah, y si quieres volverte loco con los encabezados de seguridad, ¡aquí tienes tu solución!

Número de intentos de inicio de sesión

Uno de los trucos más antiguos en el manual del hacker es el llamado Ataque de diccionario.

La idea es que intente una cantidad ridículamente grande (millones, si es posible) de combinaciones para una contraseña a menos que una de ellas tenga éxito. Dado que las computadoras son ultrarrápidas en lo que hacen, un esquema tan tonto es sensato y puede producir resultados en un tiempo razonable.

Una defensa común (y extremadamente efectiva) ha sido agregar un retraso antes de mostrar el error. Esto hace que el destinatario espere, lo que significa que si se trata de un script empleado por un pirata informático, tardará demasiado en finalizar. Esa es la razón por la que su computadora o aplicación favorita rebota un poco y luego dice: «¡Vaya, la contraseña incorrecta!».

De todos modos, el punto es que debe limitar la cantidad de intentos de inicio de sesión para su sitio de WordPress.

Más allá de un número determinado de intentos (por ejemplo, cinco), la cuenta debería bloquearse y solo debería poder recuperarse a través del correo electrónico del titular de la cuenta.

Afortunadamente, hacer esto es pan comido si te encuentras con un buen enchufar.

HTTP frente a HTTPS

El certificado SSL con el que su proveedor lo ha estado molestando es más importante de lo que piensa.

No es simplemente una herramienta de reputación para mostrar un icono de candado verde en el navegador que dice «Seguro»; más bien, obtener un certificado SSL instalado y obligar a todas las URL a trabajar en «https» es suficiente para que su sitio web pase de ser un libro abierto a un pergamino críptico.

Si no entiende cómo sucede esto, lea sobre algo conocido como ataque de hombre en el medio.

Otra forma de interceptar el tráfico que fluye desde su computadora al servidor es el rastreo de paquetes, que es una forma pasiva de recopilación de datos y ni siquiera necesita esforzarse para posicionarse en el medio.

Para los sitios que se ejecutan en «HTTP» simple, la persona que intercepta el tráfico de la red, sus contraseñas y números de tarjetas de crédito aparecen como texto claro y sin formato.

Fuente: comparetech.com

¿Aterrador? ¡Muy!

Pero una vez que instala un certificado SSL y todas las URL se convierten a «https», esta información confidencial aparece como un galimatías que solo el servidor puede descifrar. En otras palabras, no se preocupe por esos pocos dólares al año. 🙂

Conclusión

¿Será que estas cinco cosas bajo control asegurarán bien su sitio web?

No, en absoluto. Como dicen innumerables artículos de seguridad, nunca se está 100 % seguro, pero es posible eliminar una gran cantidad de estos problemas con un esfuerzo razonable. Puede considerar usar el WAF en la nube de SUCURI para proteger sus sitios de manera integral.