Firewall Básico para WordPress mediante Mu-plugins

Manuel Campos

En este tutorial te enseñaré como proteger tu sitio de WordPress mediante la implementación de un Firewall básico.

Este Firewall básico bloquea de manera efectiva archivos que podrían ser focos de problemas, en caso que una vulnerabilidad se encuentre disponible en la instalación de WordPress, en uno de sus plugins o temas.

La implementación de este Firewall requiere acceso y conocimientos básicos de la instalación de mu-plugins por medio de cliente SFTP o un explorador de archivos.

Ahora veamos todo lo que debes saber para proteger tu sitio de WordPress sin la necesidad de un plugin complejo de seguridad



¿Que Sitio Puede Usar este Firewall Básico?

Este Firewall básico esta dirigido inicialmente para usuarios que tiene un sitio web que no es un E-Commerce o un sitio de membresía, ya que estos sitios requieren serie de excepciones para tus clientes y usuarios.

Los sitios de WordPress que funcionan como sitios de autoridad no requieren que sus usuarios interactúen con archivos más allá de los archivos escritos con lenguajes que son interpretados por el navegador (HTML, CSS, y JS)

Usar este plugin básico requiere que el usuario del sitios tenga conocimiento básicos de troubleshooting mediante un explorador de archivos.


Posibles Focos de Vulnerabilidades

Cuando instalas WordPress por primera vez, quizás no te des cuenta sobre los posibles razones que llevan al hackeo de tu sitio de WordPress

Básicamente hay tres focos que llaman la atención de los hackers:

  1. Instalación de WordPress por medio de su escritorio.
  2. Instalación de WordPress por medio de SFTP or SSH
  3. Base de Datos

Si usas un proveedor de hosting decente, probablemente este cuente con una manera de bloquear los intentos realizados al punto 2 y 3

Cloudways cuenta con un bloqueo rotundo de SFTP y SSH y las excepciones son manejadas mediante la exclusión de direcciones IP

Es decir, podemos estar tranquilos que un eventual hackeo de tu sitio de WordPress no va a provenir de mediante la base de datos o el acceso de tu instalación mediante SSH/SFTP

Usar ese proveedor de hosting deja únicamente expuesto los ataques que son dirigidos al escritorio de WordPress:

Es decir:

  • Ataques de Fuerza Bruta
  • Inyecciones SQL
  • Ataques de XSS
  • Otras vulnerabilidades presentes en Plugins, Temas y el core de WordPress

Por lo que, la solución de seguridad busca solventar ese problemas.


Mu-Plugins para la Seguridad de WordPress

Mis mu-plugins de seguridad se componen por el momento de cuatro archivos

Tres archivos con funciones y un archivo con variables y arrays para el manejo de excepciones de direcciones IP.

Empecemos


Archivo para Las Excepciones: Direcciones IP

Lo primero que debes hacer es crear un archivo.php que contenga un array con la lista de direcciones IP que deseas bloquear.

Es un archivo relativamente sencillo y puedes llamarlo como quieras, pero yo lo llamaré “super-settings”

En este encontrarás un array donde debes detallar tu direcciones IP y la IP de tu servidor con el fin de evitar algún tipo de problema.


Bloqueo del Editor de Temas, Plugins, Instalación de Plugins y Temas

Este es mi primer mu-plugin para blindar tu sitio ya que este previene el margen de acción de un hacker si llega a estar dentro de tu escritorio de tu escritorio.

Básicamente el hacker esta en tu escritorio de WordPress, nota que:

  • No puede modificar los archivos del tema existente y otros.
  • No puede modificar los archivos que son parte de los plugins instalados.

Este luego intentará instalar plugins del repositorio de WordPress o instalar un plugin propio para hacer daño a tu sitio y se encontrará con que no puede:

  • Subir temas o plugins
  • Borrar los temas y plugins existentes
  • Instalar otros temas y plugins

Despues verá que esos bloqueos están siendo implementados mediante mu-plugins y que estos solo puede ser removidos mediante un explorador de archivos desde el escritorio de WordPress (bloqueado) o mediante acceso SFTP o SSH (tambien bloqueado)

En este punto, el hacker puede solamente inyectar scripts maliciosos mediante medios o publicaciones.

Ahora solo debes crear un archivo PHP y colocarlo dentro de la carpeta ‘mu-plugins’

Este archivo removerá el editor de archivos y temas de tu sitio y condicionalmente bloqueará la actualización, modificación e instalación de plugin y temas, tambien las actualizaciones de WordPress a menos que estes conectado usando las direcciones IP en super settings.


Mu-Plugin para Detener la Ejecución de PHP

Este es otro plugin con una funcionalidad que posiblemente encontrarás en plugins de seguridad

Este mu-plugin básicamente agrega automáticamente un archivo .htaccess en carpetas:

  • Plugin
  • Themes
  • Upload

El contenido en esos archivos .htaccess es el siguiente:

Esas tres lineas previene la ejecución de PHP en folders, carpetas que no deben contener archivos .php o al menos no en la raíz de esos folders.

Este mu-plugin no solo crea esos archivos de forma automática, si no que los agregará en el caso que sean removidos o que sean modificados.

Si un hacker aprovechando una vulnerabilidad, sube un archivo .php en esos directorios, ese archivo .php no podrá ser ejecutado.


Super Firewall

Este Super Firewall nació de un plugin liviano llamado BBQ Firewall de un desarollador llamado Jeff Star

Ese plugin previene algunos problemas de seguridad asociado con:

#1URI Requests
#2Query Strings
#3Referrers
#4User Agent
#5Request Methods

Yo nunca he usado el plugin activamente, porque (1) he implementado reglas de cortafuego de Cloudflare (2) Bloquear user agents y referrer es un juego de Tom y Jerry que nunca termina (3) El firewall es un Firewall que trata de complacer el complejo ecosistema de WordPress y todos sus temas y plugins.

Yo quiero usar un método mucho más agresivo o que me permita ser agresivo en mi cortafuegos, si eso es lo que quiero.


Archivos .PHP

  • La instalación de WordPress esta compuesta mayormente de archivos .php, pero estos no son requeridos por los sitios con contenido mayormente estático.
  • Cuando bloqueas los archivos PHP, ya te ahorraste todos los ataques de fuerza bruta, ataques a archivos sensibles como wp-config.php, XML-RPC.php y otros
  • Debido a la agresividad de este enfoque, esto podría la funcionalidad de algunos plugins como Jetpack y plugins de e-commerce o membresía.

Archivos Comprimidos

  • Si no tienes archivos comprimidos en tu sitio, los scanners solo dejaran un rastro de errores 404, pero estos no causaran problema alguno.
  • Pero tambien puedes tener un enfoque proactivo y bloquea todos estos.

Query Strings

  • Los query strings son usados en ataques relacionados con scripts y base de datos, por lo tanto seria bueno bloquear algunos de las más problematicas

Mu-plugin con el Super Firewall

Este el código que debes agregar a un archivo PHP en tu mu-plugin.

Si yo tuviera tus credenciales de acceso, no podría entrar a tu sitio ya que:

  • Los archivos .php han sido bloqueados
  • El folder wp-admin ha sido tambien completamente bloqueado, por lo que mientras el mu-plugin este activo no hay acceso al escritorio.

Solo las direcciones IP tendrán acceso a tu escritorio de WordPress


Consideraciones

Estas son algunas consideraciones antes de implementar este super plugin de seguridad

  • Yo no soy un desarollador o un programador, se lo suficiente para conseguir los objetivos que quiero.
  • En muchas ocasiones, modifico snippets ya existentes o tomo código de plugins existentes.
  • Uso la asistencia de inteligencia artificial para modificar códigos o solventar algunos errores que encuentro en la funcionalidad de los mismos.
  • Los mu-plugins probablemente puedan recibir mejoras y pueden ser que requieran ajustes debido con cada actualización de WordPress.
  • Estos plugins no tiene un efecto irreversibles, borrar los plugins usualmente trae el sitio.
  • Usas los plugins incluidos en esta y cualquier otra publicación con precaución y bajo tu propio riesgo.
  • Para mi estos mu-plugin son un ‘fallback”, yo implemento reglas de seguridad a nivel de CDN, por lo que este plugin solo en caso de que algo falle en Cloudflare.
  • Realiza las pruebas en sitios de prueba, un sitio de menor interés o un sitio de prueba.
  • Yo no veo estos plugins siendo instalados en sitios de clientes ya que requieren mantenimiento y administración.

Manuel Campos, English Professor

Manuel Campos

I am José Manuel. I am writing about things I know and things that I am learning about WordPress. I hope you find the content of this blog useful.

WP SURFER

home

about

privacy

contact

© 2024 WP SURFER • Made with Love in Costa Rica