{"id":14450,"date":"2025-03-30T11:25:44","date_gmt":"2025-03-30T09:25:44","guid":{"rendered":"https:\/\/www.palentino.es\/blog\/?p=14450"},"modified":"2025-03-30T13:14:13","modified_gmt":"2025-03-30T11:14:13","slug":"%f0%9f%9b%a1%ef%b8%8fdespegar-lo-normal-para-ver-lo-peligroso-el-rol-silencioso-del-waf-en-tu-servidor","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/%f0%9f%9b%a1%ef%b8%8fdespegar-lo-normal-para-ver-lo-peligroso-el-rol-silencioso-del-waf-en-tu-servidor\/","title":{"rendered":"&#x1f6e1;&#xfe0f;Despegar lo normal para ver lo peligroso: el rol silencioso del WAF en tu servidor."},"content":{"rendered":"<p class=\"\" data-start=\"290\" data-end=\"567\">Vivimos en una era donde todo se mueve a trav\u00e9s de internet: tiendas online, sistemas bancarios, aplicaciones de salud, educaci\u00f3n y pr\u00e1cticamente cualquier servicio moderno. Sin embargo, esta conectividad viene con un precio: la <strong data-start=\"519\" data-end=\"566\">exposici\u00f3n constante a ataques cibern\u00e9ticos<\/strong>.<\/p>\n<p class=\"\" data-start=\"569\" data-end=\"844\">A diferencia de los antivirus tradicionales o firewalls de red que protegen dispositivos y conexiones, las aplicaciones web son <strong data-start=\"697\" data-end=\"726\">puertas abiertas al mundo<\/strong>, y cada campo de formulario, par\u00e1metro de URL o cabecera HTTP puede convertirse en una <strong data-start=\"814\" data-end=\"843\">vulnerabilidad explotable<\/strong>.<\/p>\n<p class=\"\" data-start=\"846\" data-end=\"1086\">\u00bfEl problema? Muchas veces, los desarrolladores est\u00e1n centrados en funcionalidad y rendimiento, y dejan la seguridad para m\u00e1s adelante\u2026 o nunca. Aqu\u00ed es donde entra en juego un verdadero h\u00e9roe digital: el <strong data-start=\"1051\" data-end=\"1058\">WAF<\/strong> (Web Application Firewall).<\/p>\n<p><center><\/center>&nbsp;<\/p>\n<p class=\"\" data-start=\"1088\" data-end=\"1401\">Un <strong data-start=\"1091\" data-end=\"1129\">WAF act\u00faa como un guardi\u00e1n digital<\/strong> entre el usuario y tu servidor web, filtrando el tr\u00e1fico que llega a tu aplicaci\u00f3n para detectar ataques, bloquear comportamientos sospechosos y registrar amenazas en tiempo real. Es una de las primeras l\u00edneas de defensa cuando hablamos de <strong data-start=\"1370\" data-end=\"1400\">ciberseguridad web moderna<\/strong>.<\/p>\n<p class=\"\" data-start=\"1403\" data-end=\"1558\">Ya sea que tengas un blog personal o una plataforma empresarial, <strong data-start=\"1468\" data-end=\"1557\">no tener un WAF hoy en d\u00eda es como dejar la puerta de tu casa abierta en plena ciudad<\/strong>.<\/p>\n<p class=\"\" data-start=\"1560\" data-end=\"1798\">En este art\u00edculo te explico qu\u00e9 es un WAF, c\u00f3mo funciona, en qu\u00e9 se diferencia de un proxy inverso, y c\u00f3mo puedes instalar uno paso a paso tanto en <strong data-start=\"1708\" data-end=\"1725\">Windows (IIS)<\/strong> como en <strong data-start=\"1734\" data-end=\"1751\">Linux (NGINX)<\/strong>, usando el popular y gratuito <strong data-start=\"1782\" data-end=\"1797\">ModSecurity<\/strong>.<\/p>\n<div style=\"width: 400px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-14450-1\" width=\"400\" height=\"712\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2025\/03\/WAF-1.mp4?_=1\" \/><a href=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2025\/03\/WAF-1.mp4\">https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2025\/03\/WAF-1.mp4<\/a><\/video><\/div>\n<p data-start=\"1560\" data-end=\"1798\"><!--more--><\/p>\n<hr \/>\n<h3>&#x1f50d; \u00bfQu\u00e9 es un WAF?<\/h3>\n<p>Un <strong>WAF<\/strong> inspecciona el tr\u00e1fico HTTP\/HTTPS que llega a tu aplicaci\u00f3n web y <strong>bloquea peticiones maliciosas<\/strong>. Su misi\u00f3n: <strong>detener ataques web comunes<\/strong> como:<\/p>\n<ul>\n<li>Inyecci\u00f3n SQL<\/li>\n<li>Cross-Site Scripting (XSS)<\/li>\n<li>CSRF<\/li>\n<li>Bots maliciosos<\/li>\n<li>Escaneo de vulnerabilidades<\/li>\n<\/ul>\n<p>Se implementa como una <strong>capa entre el usuario y el servidor web<\/strong>.<\/p>\n<hr \/>\n<h2>&#x2699;&#xfe0f; Diferencia entre WAF y Proxy Inverso<\/h2>\n<table>\n<thead>\n<tr>\n<th>Caracter\u00edstica<\/th>\n<th>WAF<\/th>\n<th>Proxy Inverso<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Funci\u00f3n principal<\/td>\n<td>Seguridad: analiza y bloquea ataques web<\/td>\n<td>Redirecci\u00f3n y balanceo de tr\u00e1fico<\/td>\n<\/tr>\n<tr>\n<td>Inspecci\u00f3n profunda<\/td>\n<td>S\u00ed, inspecciona el contenido HTTP<\/td>\n<td>No necesariamente (solo cabeceras)<\/td>\n<\/tr>\n<tr>\n<td>Enmascara IP real<\/td>\n<td>S\u00ed<\/td>\n<td>S\u00ed<\/td>\n<\/tr>\n<tr>\n<td>Bloqueo de amenazas<\/td>\n<td>S\u00ed (seg\u00fan reglas definidas)<\/td>\n<td>No, a menos que se combine con un WAF<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#x1f449; <em>Un WAF puede actuar como un proxy inverso, pero no todo proxy inverso es un WAF.<\/em><\/p>\n<hr \/>\n<h2>&#x1f3c1; C\u00f3mo implementar un WAF<\/h2>\n<h3>&#x1fa9f; En Windows (IIS + ModSecurity)<\/h3>\n<ol>\n<li>&#x2705; <strong>Instala IIS<\/strong>:\n<ul>\n<li>Desde \u201cAgregar roles y caracter\u00edsticas\u201d.<\/li>\n<li>Activa el rol \u201cServidor Web (IIS)\u201d.<\/li>\n<\/ul>\n<\/li>\n<li>&#x1f4e5; <strong>Descarga ModSecurity para IIS<\/strong>:\n<ul>\n<li>Desde: <a href=\"https:\/\/github.com\/SpiderLabs\/ModSecurity\/releases\">https:\/\/github.com\/SpiderLabs\/ModSecurity\/releases<\/a><\/li>\n<\/ul>\n<\/li>\n<li>&#x1f9e9; <strong>Instala el m\u00f3dulo<\/strong>:\n<ul>\n<li>Extrae y copia\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">modsecurity.dll<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>a<\/p>\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">C:\\ModSecurity\\<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<\/li>\n<li>En CMD como admin:\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-cmd\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">%windir%\\system32\\inetsrv\\appcmd.exe install module \/name:ModSecurityIIS \/image:C:\\ModSecurity\\modsecurity.dll<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>&#x1f4dd; <strong>Configura reglas<\/strong>:\n<ul>\n<li>Activa:\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">SecRuleEngine On<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<\/li>\n<li>Habilita logs:\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">SecAuditLog C:\/ModSecurity\/logs\/audit.log<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<\/li>\n<li>A\u00f1ade reglas OWASP CRS.<\/li>\n<\/ul>\n<\/li>\n<li>&#x1f527; <strong>Activa el m\u00f3dulo en IIS<\/strong>:\n<ul>\n<li>En el Administrador de IIS &gt; Sitio web &gt; M\u00f3dulos &gt; Agregar m\u00f3dulo &gt;\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">ModSecurityIIS<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr \/>\n<h3>&#x1f427; En Linux (NGINX + ModSecurity)<\/h3>\n<ol>\n<li>&#x2705; <strong>Instala NGINX y ModSecurity<\/strong>:\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-bash\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">sudo apt install nginx libnginx-mod-security<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<li>&#x1f4e6; <strong>Activa ModSecurity<\/strong> en\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">\/etc\/nginx\/nginx.conf<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>:<\/p>\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-nginx\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"text codecolorer\">modsecurity on;<br \/>\nmodsecurity_rules_file \/etc\/nginx\/modsec\/main.conf;<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<li>&#x1f6e1;&#xfe0f; <strong>Agrega reglas OWASP CRS<\/strong>:\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-bash\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"text codecolorer\">sudo apt install modsecurity-crs<br \/>\ncp \/usr\/share\/modsecurity-crs\/* \/etc\/nginx\/modsec\/<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<li>&#x1f501; <strong>Configura proxy inverso en NGINX<\/strong>:\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-nginx\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"text codecolorer\">server {<br \/>\n&nbsp; &nbsp; listen 80;<br \/>\n&nbsp; &nbsp; server_name www.tuweb.com;<br \/>\n<br \/>\n&nbsp; &nbsp; location \/ {<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; proxy_pass http:\/\/192.168.1.100;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header Host $host;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header X-Real-IP $remote_addr;<br \/>\n&nbsp; &nbsp; }<br \/>\n}<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<li>&#x25b6;&#xfe0f; <strong>Reinicia NGINX<\/strong>:\n<pre>\n\n<div class=\"codecolorer-container text mac-classic language-bash\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">sudo nginx -t &amp;amp;&amp;amp; sudo systemctl restart nginx<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<\/li>\n<\/ol>\n<hr \/>\n<h2>&#x1f50e; \u00bfQu\u00e9 logra un WAF?<\/h2>\n<p>Si un atacante intenta acceder con:<\/p>\n<pre>\n\n<div class=\"codecolorer-container text mac-classic\" style=\"overflow:auto;white-space:nowrap;width:635px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"text codecolorer\">https:\/\/tuweb.com\/login?user=' OR '1'='1<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n\n<\/pre>\n<p>El WAF:<\/p>\n<ul>\n<li><strong>Detecta el intento de inyecci\u00f3n SQL<\/strong><\/li>\n<li><strong>Bloquea la solicitud<\/strong><\/li>\n<li><strong>Registra el evento en un log<\/strong><\/li>\n<li>El servidor real <strong>ni se entera del intento de ataque<\/strong>.<\/li>\n<\/ul>\n<hr \/>\n<h2>&#x1f3af; Conclusi\u00f3n<\/h2>\n<p>Implementar un WAF es una de las mejores formas de proteger tu aplicaci\u00f3n web sin modificar el c\u00f3digo. Ya sea en <strong>Windows con IIS<\/strong> o en <strong>Linux con NGINX<\/strong>, usar <strong>ModSecurity + OWASP CRS<\/strong> te da una defensa s\u00f3lida frente a los ataques m\u00e1s comunes.<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vivimos en una era donde todo se mueve a trav\u00e9s de internet: tiendas online, sistemas bancarios, aplicaciones de salud, educaci\u00f3n y pr\u00e1cticamente cualquier servicio moderno. Sin embargo, esta conectividad viene con un precio: la exposici\u00f3n constante a ataques cibern\u00e9ticos. A diferencia de los antivirus tradicionales o firewalls de red que protegen dispositivos y conexiones, las aplicaciones web son puertas abiertas al mundo, y cada campo de formulario, par\u00e1metro de URL o cabecera HTTP puede convertirse en una vulnerabilidad explotable. \u00bfEl problema? Muchas veces, los desarrolladores est\u00e1n centrados en funcionalidad y rendimiento, y dejan la seguridad para m\u00e1s adelante\u2026 o nunca. Aqu\u00ed es donde entra en juego un verdadero h\u00e9roe digital: el WAF (Web Application Firewall). &nbsp; Un WAF act\u00faa como un guardi\u00e1n digital entre el usuario y tu servidor web, filtrando el tr\u00e1fico que llega a tu aplicaci\u00f3n para detectar ataques, bloquear comportamientos sospechosos y registrar amenazas en tiempo real. Es una de las primeras l\u00edneas de defensa cuando hablamos de ciberseguridad web moderna. Ya sea que tengas un blog personal o una plataforma empresarial, no tener un WAF hoy en d\u00eda es como dejar la puerta de tu casa abierta en plena ciudad. En este art\u00edculo te explico qu\u00e9 es un WAF, c\u00f3mo funciona, en qu\u00e9 se diferencia de un proxy inverso, y c\u00f3mo puedes instalar uno paso a paso tanto en Windows (IIS) como en Linux (NGINX), usando el popular y gratuito ModSecurity.<\/p>\n","protected":false},"author":1,"featured_media":12506,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50],"tags":[],"class_list":["post-14450","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seguridad"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/14450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=14450"}],"version-history":[{"count":9,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/14450\/revisions"}],"predecessor-version":[{"id":14462,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/14450\/revisions\/14462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/12506"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=14450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=14450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=14450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}