Un WAF (Web Application Firewall) es un programa de seguridad que examina y filtra el tráfico HTTP que circula entre internet y tu web, y que bloquea amenazas como inyecciones de código o ataques DDoS de acuerdo con una serie de reglas. En WordPress se puede aplicar mediante plugins como Wordfence o NinjaFirewall, o a nivel de servidor con ModSecurity.
Hace poco hemos tratado diversos aspectos relacionados con la seguridad en WordPress, desde cómo desinfectar un sitio web que ha sido hackeado, hasta distintos plugins y ajustes que se podrían aplicar en una instalación para intentar protegerla al máximo, puesto que consideramos que mantener tu sitio web a salvo frente a malware o ataques malintencionados es uno de los puntos esenciales si quieres realizar un mantenimiento óptimo de una instalación, sobre todo si tenemos en cuenta que WordPress es sin duda el CMS más atacado en la actualidad dentro del mercado.

También hemos hablado de varios plugins de seguridad que te permiten proteger tu sitio web a través de distintas configuraciones y análisis (WP Cerber, Wordfence, etc.); sin embargo, no llegamos a detallar demasiado una de las funcionalidades que alguno de estos plugins te permite habilitar, que sería la de emplearlos como firewall de aplicación (WAF) para disponer de una capa adicional de seguridad.
Por ese motivo, en este post explicaremos qué es exactamente un WAF, qué ventajas aporta implementarlo en WordPress (o en el propio servidor), y citaremos algunos plugins con los que podemos configurarlo.
Qué es un WAF y por qué es tan importante en WordPress
Un WAF o Firewall de Aplicaciones es una herramienta o software de seguridad que contribuye a proteger tu sitio web al filtrar y monitorizar el tráfico http entre la propia aplicación e internet.
A grandes rasgos, podemos afirmar que un WAF actúa como una barrera entre los visitantes y tu sitio web, filtrando y bloqueando posibles amenazas en función de un conjunto de reglas o directivas que se le configuren, las cuales permiten proteger la aplicación frente a inyecciones de código, ataques DDoS y otras vulnerabilidades.

En el caso de WordPress, hay bastantes plugins que nos permiten implementar un WAF para bloquear vulnerabilidades, aunque conviene tener en cuenta que algunas de las configuraciones y reglas que apliquemos pueden hacer que ciertas funcionalidades del sitio web no funcionen como deberían, por lo que si nos ocurre esto, habría que configurar exclusiones a las reglas, algo que no suele ser sencillo.
ModSecurity como WAF para Apache
Antes de pasar a los plugins de WordPress, nos parece necesario hablarte un poco de ModSecurity, que es precisamente un módulo para Apache y Nginx que nos permite configurar un WAF en el servidor web.

En Raiola Networks, todos nuestros servidores de hosting compartido, hosting elástico, hosting SEO y hosting Reseller tienen habilitado el módulo Mod_Security. De este modo, podemos ofrecer una capa de seguridad adicional a los clientes que utilicen este tipo de servicios.
Las directivas que empleamos en este tipo de servidores se basan en las reglas de COMODO, las de Inmunify y ciertas reglas personalizadas creadas desde nuestro lado, lo que permite proteger los sitios web de determinados ataques, por ejemplo, al administrador de WordPress (mediante la protección por fuerza bruta) o a los formularios.

Cuando contratas un nuevo plan de hosting con nosotros, todas estas reglas vienen habilitadas por defecto, aunque en caso de que alguna de ellas provoque algún problema o se produzca algún bloqueo ilegítimo, hemos creado un configurador que te permite desactivar alguna de ellas.
Si te interesa conocer más al respecto de ModSecurity, tenemos un post en el que hablamos sobre el mismo al que te recomendamos echarle un vistazo: https://raiolanetworks.com/blog/modsecurity-cpanel/
WAF de Wordfence para WordPress
Ya hemos hablado en numerosas ocasiones de Wordfence, ya que es uno de los plugins más completos y eficaces a nivel seguridad, y como no podría ser de otro modo, una de las funcionalidades que te permite este plugin es activar su propio firewall para intentar proteger tu sitio web contra determinados ataques.
Una vez configurada la licencia (actualmente necesaria también para la versión gratuita), el WAF ya quedaría habilitado con una configuración por defecto, no obstante, si queremos modificar ciertas opciones y personalizarlas a nuestro gusto, tendremos que acceder al apartado «Wordfence >> Cortafuegos >> Gestionar WAF».

Cuando accedemos a esta sección, la primera opción que podremos ver será la de «Estado del cortafuegos de la aplicación web», en la que tendremos que escoger entre 3 alternativas:
- Activo y protegiendo: el WAF está activo y bloquea las solicitudes que coincidan con los patrones que hayamos configurado.
- Modo de aprendizaje: Se puede habilitar para que WAF analice tu sitio web durante un tiempo determinado, de forma que pueda entender cómo protegerlo basándose en las solicitudes que se vayan realizando el sitio (si acabamos de instalar el plugin, es recomendable mantener esta opción durante un tiempo).
- Desactivado: el WAF no ejecuta ninguna de sus reglas.

Si quisiéramos activar/desactivar alguna regla específica o configurar algún tipo de exclusión en las mismas, podemos hacerlo desde las «Opciones avanzadas del cortafuegos»:

Además, también podremos modificar la configuración de la protección por ataques de fuerza bruta (por defecto es muy permisiva), y activar otro tipo de opciones como el forzado de contraseñas seguras, desactivar las contraseñas de aplicación de WordPress o impedir que se registre el nombre usuario «admin» (en caso de que no exista).

En resumen, si queremos utilizar el WAF de Wordfence, nuestra recomendación es que habilites el «Modo de aprendizaje» durante un par de semanas (lo idóneo es que, durante dichas semanas, utilices todas las herramientas y plugins que suelas usar normalmente), de esta forma, Wordfence aprende cuáles son las peticiones legítimas y cuáles no lo son, y en base a eso, habilitar finalmente la opción de «Activo y protegiendo» para poner en funcionamiento el WAF.
NinjaFirewall para WordPress
Uno de los plugins más completos que podemos encontrar a nivel WAF en WordPress sería NinjaFirewall, el cual podemos obtener también de forma gratuita desde el propio repositorio de WordPress: https://es.wordpress.org/plugins/ninjafirewall/
La configuración de este plugin es bastante más compleja que la del resto de plugins del estilo, ya que dispone de multitud de opciones y apartados, aunque es sin duda una de las mejores alternativas si queremos bloquear ataques y peticiones malintencionadas o queremos realizar reglas personalizadas y no preestablecidas.
Además de esto, Ninja Firewall tiene también opciones que te van a permitir implementar configuraciones para prevenir la subida de archivos a WordPress y a sus plugins (o impedir su modificación), prevenir los ataques por fuerza bruta o incluso analizar el sitio web en busca de código malicioso, por lo que es un plugin realmente completo.
Cuando lo instalemos y lo habilitemos, nos aparecerá una nueva sección en el administrador de WordPress, desde la que podremos ver lo siguiente:

Ninja Firewall cuenta con dos modos de protección: el modo WAF de WordPress (que es el predeterminado) y el modo Full WAF, que es el que aconsejamos y el que brinda un mayor grado de protección (aunque también puede generar más falsos positivos y ciertos problemas según el hosting en el que esté alojada la web).
Siempre que sea factible, lo más adecuado es que actives el modo Full WAF, algo que se hace de forma sencilla pulsando en «Activate Full WAF mode”, donde tendrás que seleccionar el servidor web que emplea tu hosting, y donde además podrás excluir determinados directorios de tu web que no quieras que pasen por el WAF del plugin (lo más recomendable es dejarlo tal y como viene por defecto).

Hecho esto, ya tocaría adentrarse de lleno en la configuración avanzada de las reglas que deseamos que se apliquen, algo que no abordaremos en este post, ya que como te señalamos previamente, se trata de un plugin muy complejo y la configuración puede cambiar en función de lo que necesitemos y del servidor en el que alojemos la web.
Si quieres saber más acerca de este plugin, te sugerimos ver este vídeo en el que nuestro compañero y CEO Álvaro Fontela habla del plugin y de todas sus opciones:
Cloudflare como WAF
En la actualidad, hay una gran cantidad de plugins que puedes emplear como WAF: https://es.wordpress.org/plugins/search/WAF/, sin embargo, puede que no te convenga instalar otro plugin adicional de WordPress para ello, hay que tener presente que este tipo de plugins son pesados y acostumbran a consumir bastantes recursos, por lo que únicamente solemos aconsejarlos en webs específicas, y además, no siempre resultan realmente necesarios, ya que puede bastar con un WAF a nivel servidor y un correcto mantenimiento y securización básica de nuestro sitio web.
Ya hemos hablado en numerosas ocasiones de Cloudflare y de las ventajas que suele aportar su configuración en cualquier aplicación, y como bien sabrás, según la configuración que apliquemos en dicha plataforma, podemos conseguir que funcione también como WAF.
De forma predeterminada, Cloudflare ya nos ofrece protección WAF básica, por ejemplo, frente a ataques DDoS, no obstante, las configuraciones que puedes aplicar en dicha plataforma son muy numerosas. Para activar/desactivar el WAF en Cloudflare tendremos que ir al apartado «Seguridad >> Configuración» (hay que realizar previamente la configuración del dominio).

Aquí podrás elegir entre varios niveles de seguridad (actualmente solo podemos desactivar el WAF por completo con un plan de pago), y según el que escojas, la configuración será más o menos permisiva.
Una de las cosas más interesantes que podemos llevar a cabo con Cloudflare sería la creación de reglas personalizadas, que nos permitirían, por ejemplo, bloquear ciertos países, IPS, continentes enteros, bloquear por agente de usuario o incluso por versión HTTP o por el método de solicitud.

En el ejemplo de la captura, el WAF de Cloudflare bloquearía todas las peticiones que se hagan desde África, desde Afganistán o que se realicen mediante la versión HTTP/1.0 de HTTP.
Además de todo esto, Cloudflare nos permite llevar a cabo multitud de configuraciones adicionales a nivel WAF. Si quieres saber más al respecto, te sugerimos ver este otro vídeo de Álvaro en el que habla de todas las opciones que incluye la versión gratuita de Cloudflare.
Preguntas Frecuentes
¿Cuál es la diferencia entre un firewall y un WAF?
Un firewall tradicional controla puertos y direcciones IP; un WAF examina el contenido de las peticiones web. El primero decide si una conexión puede establecerse; el segundo, si una petición HTTP concreta es legítima. Para una web con formularios y login, el filtrado por contenido marca la diferencia frente a ataques automatizados.
¿Cuáles son los 3 tipos de firewall?
Los tres tipos habituales son el firewall de red o de paquetes, el firewall de estado y el firewall de aplicación. El de red filtra por IP y puerto; el de estado recuerda conexiones activas; el de aplicación, donde encaja el WAF, inspecciona el contenido del tráfico web. Cada uno cubre una capa distinta.
¿Un WAF sustituye al antivirus de WordPress?
No, un WAF no sustituye a un antivirus de WordPress. El WAF bloquea peticiones maliciosas entrantes, mientras que un plugin de seguridad detecta archivos modificados y malware ya instalado. Lo útil es combinar ambos: el WAF reduce intentos de intrusión y el antivirus actúa si algo consigue entrar.