Ha gustado tanto lo que publiqué sobre el Firewall nG para WordPress que he pensado escribir esta entrada para explicar cómo integrar este cortafuegos con el integrado en el servicio gratuito de CDN de CloudFlare, para que trabajen juntos y así añadir una capa extra de seguridad a nuestra web, cubriendo así otra capa de protección de nuestro sitio, te recuerdo:
- Seguridad desde una CDN – Lo que vamos a ver en este tutorial
- Seguridad desde el hosting – Si estás alojado en SiteGround ya lo tienes, sino busca un buen hosting para WordPress.
- Seguridad desde la aplicación (en nuestro caso WordPress) – Lo visto en resumen en la guía del mejor firewall para WordPress.
Seguridad por capas
La seguridad de una web puede y debe hacerse, como he dicho arriba, en capas. La CDN de Cloudflare es un excelente servicio que, además de mejoras de rendimiento y servicios de entrega distribuida de contenidos, ofrece herramientas de seguridad en la nube que ofrecen protección en sus servidores distribuidos globalmente, antes de que lleguen a los servidores de origen de tu web.
Pero incluso las mejores reglas de firewall no podrán detener todas las solicitudes maliciosas creadas por piratas informáticos inteligentes que intentan encontrar vulnerabilidades en tu instalación.
Por eso, una solución muy completa sería unificar la protección de tu sitio WordPress mediante un cortafuegos de .htaccess
como el Firewall nG y las funcionalidades del WAF (Firewall de aplicaciones web) de Cloudflare.
El Firewall de .htaccess nG
El Firewall nG, en su versión 7G (estable) tiene seis bloques, cada uno de los cuales contiene directivas para .htaccess
con las que protegernos contra diferentes tipos de malas solicitudes.
Al final de cada bloque, hay dos directivas RewriteRule
, de las cuales solo una puede estar activa. Por esa razón, la segunda directiva RewriteRule en cada bloque está comentada (inactiva, con un carécter #
antes de la directiva). La segunda RewriteRule
en cada bloque está ahí para usarse junto con la función de registro propia del Firewall 7G.
Lo que vamos a hacer es comentar ambas directivas RewriteRule
y agregar una tercera con el fin de redirigir cada solicitud incorrecta a una URL especial, una que será bloqueada por Cloudflare, para tener una pista de lo que estaba mal con la solicitud.
Por ejemplo, en el primer bloque tenemos estas directivas al final del mismo:
… … RewriteCond %{QUERY_STRING} (union)(.*)(select)(.*)(\(|%28) [NC,OR] RewriteCond %{QUERY_STRING} (concat|eval)(.*)(\(|%28) [NC] RewriteRule .* - [F,L] # RewriteRule .* /7G_log.php?log [END,NE,E=7G_QUERY_STRING:%1___%2___%3]
Lo que haremos es cambiarlas insertando una directiva de redirección y comentando la regla de redirección original (cambios en rojo), así:
#RewriteRule .* - [F,L] RewriteRule .* /bad-request-QS [R,L] # RewriteRule .* /7G_log.php?log [END,NE,E=7G_QUERY_STRING:%1___%2___%3]
Si no sabes cómo funcionan las directivas RewriteRule
, las instrucciones [R,L]
le indican al servidor que [R]
edirija, y trate esto como la ú[L]
tima directiva, que deje de procesar más .htaccess.
Para el primer bloque de directivas en el Firewall 7G, hemos llamado a la ruta /bad-request-QS
.
Igualmente, el resto de bloques los redirigiremos respectivamente a su propia ruta de URL, dependiendo del método del bloque, por lo que tendremos al final 6 rutas diferentes, pero todas comenzando con la misma cadena «/bad-request
»:
RewriteRule .* /bad-request-QS [R,L] RewriteRule .* /bad-request-URI [R,L] RewriteRule .* /bad-request-UA [R,L] RewriteRule .* /bad-request-host [R,L] RewriteRule .* /bad-request-referrer [R,L] RewriteRule .* /bad-request-method [R,L]
Acordándote siempre, en cada bloque (o sección) de comentar la redirección original, como en el primer ejemplo.
Las reglas del WAF (Firewall de aplicaciones web) de CloudFlare
Lo que debemos hacer a continuación es crear una regla en el WAF de Cloudflare que bloquee cualquier solicitud que comience con la cadena /bad-request
.
La expresión puede ser tan simple como http.request.uri.path contains "/bad-request"
, aunque es posible que quieras incluir también un nombre de host para limitar su aplicación a, por ejemplo, un subdominio de pruebas antes de implementarlo por completo en tu dominio.
Como estas redirecciones ocurrirán ya sea que Cloudflare las bloquee o no, es posible que quieras crear una página 404 minimalista para servir a tus visitantes malintencionados en caso de que Cloudflare esté desactivado temporalmente.
Después de implementar el Firewall 7G con las directivas RewriteRule
para redirigir las solicitudes incorrectas y la regla del WAF de Cloudflare para detectarlas, comenzarás a ver ambos cortafuegos en acción en el registro de eventos del WAF de Cloudflare.
A medida que pasa el tiempo y veas muchas actividades que coincidan con un patrón determinado, es posible que quieras refinar las reglas generales del WAF de Cloudflare para asegurarte de que las solicitudes maliciosas se bloqueen en esta capa, en la nube de la CDN.
Tener un cortafuegos de .htaccess
como el Firewall nG haciendo el trabajo en la última capa de seguridad mejora en gran medida tu capacidad para identificar solicitudes malintencionadas.
Y si encima está integrado con la primera capa (Cloudflare) para educar a su WAF para bloquear malas solicitudes antes de que lleguen al servidor, la segunda capa de seguridad, mucho mejor, pues así ahorras consumo de recursos y riesgos innecesarios a las capas segunda y última de seguridad de tu web.
Un último truco de integración del cortafuegos nG de .htaccess y el WAF de Cloudflare
¿Por qué no usar la misma lógica y redirigir todos los errores de forbidden 403 o su origen al WAF de Cloudflare?
Lo único que tienes que hacer es añadir una directiva ErrorDocument
al principio del archivo .htaccess
de tu web:
# Enviar el error 403 a una página de error de Cloudflare ErrorDocument 403 https://midominio.com/bad-request
Con este comando de .htaccess
cualquier solicitud que resulte en un 403 también será redirigida y bloqueada por la misma regla del WAF de Cloudflare anterior, lo que nos dará más pistas que pueden ayudarnos a refinar las reglas del WAF de Cloudflare.
El objetivo es detectar la mayor cantidad posible de malos comportamientos y bloquearlos antes de que lleguen a nuestro servidor, desde la nube de la CDN. Un Firewall de .htaccess como el nG es una tremenda ayuda para conseguirlo.
El artículo Cómo integrar el cortafuegos de .htaccess con el Firewall de CloudFlare lo publicó Fernando Tellado previamente en Ayuda WordPress. Lo que ves aquí es una copia de dicho contenido :/
0 Commentaires