{"id":7656,"date":"2026-01-13T12:00:49","date_gmt":"2026-01-13T11:00:49","guid":{"rendered":"https:\/\/www.hostingtg.com\/blog\/?p=7656"},"modified":"2026-01-13T12:00:51","modified_gmt":"2026-01-13T11:00:51","slug":"fail2ban","status":"publish","type":"post","link":"https:\/\/www.hostingtg.com\/blog\/fail2ban\/","title":{"rendered":"Fail2ban: gu\u00eda pr\u00e1ctica para instalar, configurar y afinar tus jails"},"content":{"rendered":"\n<p>Cuando alguien me pregunta por una mejora de seguridad r\u00e1pida y efectiva en un servidor Linux, suelo responder con lo mismo: <strong>instala Fail2Ban<\/strong>. No es un firewall \u201ctodo en uno\u201d ni pretende serlo; y justo ah\u00ed reside su encanto. Hace una tarea concreta \u2014vigilar tus <em>logs<\/em> y bloquear comportamientos sospechosos\u2014 y la hace con una fiabilidad que, en la pr\u00e1ctica, marca una diferencia enorme. En mi experiencia, su <strong>reacci\u00f3n temprana<\/strong> ataja muchos problemas antes de que se conviertan en incidentes serios y te da visibilidad para actuar con cabeza.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 es Fail2ban y por qu\u00e9 \u201chacer una sola cosa bien\u201d mejora la seguridad real<\/h2>\n\n\n\n<p>Fail2Ban observa lo que <strong>de verdad<\/strong> ocurre en tu sistema: los registros. Si un origen encadena intentos fallidos, errores repetidos o patrones propios de fuerza bruta, el <em>daemon<\/em> aplica una <strong>acci\u00f3n<\/strong> (normalmente <a href=\"https:\/\/www.hostingtg.com\/blog\/comprobar-puertos-abiertos\/\">reglas en el firewall<\/a>) para bloquear esa IP temporal o permanentemente. El resultado tangible es que reduces superficie de ataque y ganas tiempo para pensar.<\/p>\n\n\n\n<p>Aqu\u00ed es donde brilla su filosof\u00eda: ni dependes de firmas m\u00e1gicas ni de listas perfectas; te apoyas en la <strong>evidencia de tu operaci\u00f3n<\/strong>. Adem\u00e1s, y esto lo valoro mucho, <strong>los propios registros<\/strong> se convierten en un radar: puedes detectar IPs reincidentes, horarios de mayor actividad maliciosa o servicios especialmente castigados. Esa <strong>transparencia<\/strong> te ayuda a tomar decisiones m\u00e1s inteligentes: ajustar par\u00e1metros, crear filtros m\u00e1s finos o incluso automatizar alertas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo funciona (de verdad): logs, filtros, jails y acciones<\/h2>\n\n\n\n<p>El flujo mental es simple y poderoso:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Logs \u2192 Filtros:<\/strong> cada servicio genera l\u00edneas de log; Fail2Ban aplica <strong>filtros (regex)<\/strong> que \u201creconocen\u201d intentos fallidos, 401\/403 agresivos, errores de autenticaci\u00f3n, etc.<\/li>\n\n\n\n<li><strong>Filtros \u2192 Jails:<\/strong> una <strong>jail<\/strong> combina filtro + <em>logpath<\/em> + <strong>par\u00e1metros<\/strong> de detecci\u00f3n (cu\u00e1ntos fallos en qu\u00e9 ventana de tiempo) + <strong>acci\u00f3n<\/strong> (qu\u00e9 hacer con la IP).<\/li>\n\n\n\n<li><strong>Jails \u2192 Acciones:<\/strong> lo habitual es tocar el firewall (iptables\/nftables\/firewalld), pero tambi\u00e9n puedes <strong>enviar correos<\/strong>, ejecutar <em>webhooks<\/em> o scripts propios.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Par\u00e1metros clave: <code>bantime<\/code>, <code>findtime<\/code>, <code>maxretry<\/code>, <code>ignoreip<\/code><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>bantime<\/code><\/strong>: cu\u00e1nto durar\u00e1 el bloqueo. Cl\u00e1sico: 10m\u20131h. En jails sensibles (SSH) puedes <strong>escalar<\/strong> a m\u00e1s tiempo tras reincidencia (ver <em>recidive<\/em>).<\/li>\n\n\n\n<li><strong><code>findtime<\/code><\/strong>: ventana de observaci\u00f3n. Si pones <code>findtime = 10m<\/code> y <code>maxretry = 5<\/code>, 5 fallos en 10 minutos \u2192 ban.<\/li>\n\n\n\n<li><strong><code>maxretry<\/code><\/strong>: n\u00famero de fallos permitidos antes de banear.<\/li>\n\n\n\n<li><strong><code>ignoreip<\/code><\/strong>: lista de IPs o rangos en <strong>whitelist<\/strong> (tu oficina, VPN, monitorizaci\u00f3n). Mantenla viva para evitar auto-ban.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Trucos pr\u00e1cticos<br>\u2022 Para SSH, suelo empezar con <code>findtime = 10m<\/code>, <code>maxretry = 4<\/code> y <code>bantime = 1h<\/code>, y luego revisar reincidencias.<br>\u2022 En paneles\/<a href=\"https:\/\/www.hostingtg.com\/blog\/optimizar-y-potenciar-nginx\/\">NGINX<\/a> con tr\u00e1fico alto, conviene <strong>no<\/strong> ser excesivamente punitivo al principio para evitar falsos positivos.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\"><code>jail.conf<\/code> vs <code>jail.local<\/code>: patr\u00f3n seguro de personalizaci\u00f3n<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No edites <code>jail.conf<\/code><\/strong>. Es el archivo de f\u00e1brica.<\/li>\n\n\n\n<li><strong>Crea <code>jail.local<\/code><\/strong> con <strong>solo<\/strong> las secciones\/ajustes que quieras sobrescribir. As\u00ed, cuando actualices el paquete, no rompes nada y mantienes tus cambios claros.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n r\u00e1pida por distro (Ubuntu\/Debian\/CentOS) y verificaci\u00f3n con <code>fail2ban-client<\/code><\/h2>\n\n\n\n<p><strong><a href=\"https:\/\/www.hostingtg.com\/blog\/mejores-distribuciones-linux-2026\/\">Ubuntu\/Debian<\/a><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install fail2ban\nsudo systemctl enable --now fail2ban\nsudo fail2ban-client status\n<\/code><\/pre>\n\n\n\n<p><strong>CentOS\/RHEL\/AlmaLinux\/Rocky<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dnf install fail2ban\nsudo systemctl enable --now fail2ban\nsudo fail2ban-client status\n<\/code><\/pre>\n\n\n\n<p><strong>Verificaci\u00f3n b\u00e1sica<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Estado del servicio y versi\u00f3n\nsudo fail2ban-client -V\nsudo fail2ban-client status\n\n# Ver jails activos\nsudo fail2ban-client status sshd\n\n# Desbanear una IP puntual\nsudo fail2ban-client unban 203.0.113.42\n<\/code><\/pre>\n\n\n\n<p>Si, como me ocurre en entornos con tr\u00e1fico constante, notas picos de bloqueos, deja Fail2Ban correr 24\u201348h y <strong>observa<\/strong>. Esa lectura de registros real te dir\u00e1 d\u00f3nde ajustar el umbral o qu\u00e9 filtros personalizar.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Jails listos para producci\u00f3n (con comentarios)<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Nota: adapta <code>logpath<\/code> y rutas a tu distro. Los ejemplos van en <code>jail.local<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">SSH endurecido (anti-fuerza bruta sin falsos positivos)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;sshd]\nenabled   = true\nport      = ssh\nfilter    = sshd\nlogpath   = \/var\/log\/auth.log\nbackend   = systemd\nmaxretry  = 4\nfindtime  = 10m\nbantime   = 1h\nignoreip  = 127.0.0.1\/8 10.0.0.0\/8 192.168.0.0\/16\naction    = %(action_mwl)s\n# action_mwl: banea + email con l\u00edneas de log adjuntas (\u00fatil para entender patrones)\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>En mi d\u00eda a d\u00eda, esta combinaci\u00f3n es \u201csilenciosa\u201d y eficaz. El correo con logs me ha ayudado a identificar IPs que volv\u00edan a los pocos d\u00edas para subir el <code>bantime<\/code> o activar <em>recidive<\/em>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">NGINX\/Apache (auth b\u00e1sica, 401\/403, bots agresivos)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;nginx-http-auth]\nenabled   = true\nfilter    = nginx-http-auth\nlogpath   = \/var\/log\/nginx\/*error*.log\nmaxretry  = 5\nfindtime  = 10m\nbantime   = 30m\n\n&#91;apache-badbots]\nenabled   = true\nfilter    = apache-badbots\nlogpath   = \/var\/log\/apache2\/*access*.log\nmaxretry  = 5\nfindtime  = 5m\nbantime   = 1h\n<\/code><\/pre>\n\n\n\n<p>Aqu\u00ed Fail2Ban <strong>brilla<\/strong> integr\u00e1ndose con el servidor web. Cuando lo uso con paneles o CMS, prefiero arrancar con <em>bans<\/em> cortos para recoger se\u00f1al y no \u201ccastigar\u201d a usuarios leg\u00edtimos por contrase\u00f1as mal tecleadas.<\/p>\n\n\n\n<p>Postfix\/Dovecot (SMTP\/IMAP)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;postfix]\nenabled   = true\nfilter    = postfix\nlogpath   = \/var\/log\/mail.log\nmaxretry  = 5\nfindtime  = 10m\nbantime   = 1h\n\n&#91;dovecot]\nenabled   = true\nfilter    = dovecot\nlogpath   = \/var\/log\/mail.log\nmaxretry  = 5\nfindtime  = 10m\nbantime   = 1h\n\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>En correo los ataques \u201cgota a gota\u201d son habituales. Me gusta revisar <strong>IPs reincidentes<\/strong> semanalmente para valorar <em>bans<\/em> m\u00e1s largos o listas negras permanentes.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Paneles y CMS (cPanel, Plesk, WordPress)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;wordpress-auth]\nenabled   = true\nfilter    = wordpress-auth\nlogpath   = \/var\/log\/nginx\/*access*.log\nmaxretry  = 5\nfindtime  = 10m\nbantime   = 45m\n<\/code><\/pre>\n\n\n\n<p><strong>Filtro ejemplo<\/strong> <code>filter.d\/wordpress-auth.conf<\/code> (idea base para auth fallida en <code>\/wp-login.php<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Definition]\nfailregex = &lt;HOST> - .* \"(GET|POST) \/wp-login\\.php HTTP\/1\\.&#91;01]\" 401\nignoreregex =\n<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>No hay bala de plata: revisa tus logs reales y ajusta el <code>failregex<\/code>. Ese enfoque pr\u00e1ctico \u2014mirar lo que pasa en tu servidor\u2014 es el que me ha dado mejores resultados.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9tricas que importan: leer logs, IPs reincidentes y decisiones inteligentes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IPs reincidentes:<\/strong> Si ves la misma IP caer en varias jails (SSH + NGINX), act\u00faa: aumenta <code>bantime<\/code>, activa <strong><code>recidive<\/code><\/strong> o crea una lista negra local.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;recidive]\nenabled  = true\nlogpath  = \/var\/log\/fail2ban.log\nbantime  = 1w\nfindtime = 1d\nmaxretry = 5\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Horarios de \u201cruido\u201d:<\/strong> muchas oleadas llegan en franjas concretas. Programa alertas y cruza con cambios que hagas (\u00bfsubi\u00f3 el <code>maxretry<\/code>? \u00bfbaj\u00f3 al d\u00eda siguiente el n\u00famero de bans?).<\/li>\n\n\n\n<li><strong>Alertas \u00fatiles (no spam):<\/strong> <code>action_mwl<\/code> (mail con l\u00edneas) es oro si est\u00e1s afinando filtros. Cuando est\u00e9 \u201cestable\u201d, pasa a <code>action_<\/code> simple para reducir ruido.<\/li>\n\n\n\n<li><strong>Observabilidad cotidiana:<\/strong> un <code>fail2ban-client status<\/code> diario\/semana y una revisi\u00f3n de <code>\/var\/log\/fail2ban.log<\/code> me han permitido detectar falsos positivos antes de que escalen a soporte.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Buenas pr\u00e1cticas y errores comunes que aprend\u00ed por las malas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No edites <code>jail.conf<\/code><\/strong> (s\u00ed, insiste en <code>jail.local<\/code>).<\/li>\n\n\n\n<li><strong>Ignora tus rangos leg\u00edtimos<\/strong> en <code>ignoreip<\/code> (oficina, VPN, monitorizaci\u00f3n).<\/li>\n\n\n\n<li><strong>Empieza conservador y ajusta<\/strong>: primero recolecta se\u00f1al, luego endurece.<\/li>\n\n\n\n<li><strong>Versiona tus configs<\/strong> <a href=\"https:\/\/github.com\/fail2ban\/fail2ban\" target=\"_blank\" rel=\"noopener\">(Git) y documenta<\/a> cambios y motivos.<\/li>\n\n\n\n<li><strong>Prueba tus filtros<\/strong> con <code>fail2ban-regex<\/code> antes de activarlos en producci\u00f3n.<\/li>\n\n\n\n<li><strong>Piensa en contenedores<\/strong>: si est\u00e1s en Docker\/K8s, decide d\u00f3nde aplicar la acci\u00f3n (host vs. contenedor) y considera <em>ingress<\/em> o <a href=\"https:\/\/www.hostingtg.com\/blog\/ninjafirewall-para-wordpress\/\">WAF como primera l\u00ednea<\/a>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Preguntas frecuentes y soluciones<\/h2>\n\n\n\n<p><strong>\u00bfC\u00f3mo desbaneo r\u00e1pido una IP?<\/strong><br><code>sudo fail2ban-client unban 203.0.113.42<\/code><\/p>\n\n\n\n<p><strong>\u00bfPuedo usar nftables o firewalld?<\/strong><br>S\u00ed. Cambia la <strong>acci\u00f3n<\/strong> de la jail (<code>action = nftables-multiport<\/code> o <code>firewalld<\/code>) acorde a tu <em>stack<\/em>.<\/p>\n\n\n\n<p><strong>\u00bfQu\u00e9 diferencia hay entre <code>maxretry<\/code> bajo y <code>findtime<\/code> corto?<\/strong><br>Ambos endurecen, pero de forma distinta. Un <code>maxretry<\/code> bajo penaliza peque\u00f1os errores; un <code>findtime<\/code> corto \u201cperdona\u201d si los fallos se dispersan en el tiempo.<\/p>\n\n\n\n<p><strong>\u00bfC\u00f3mo evito falsos positivos en WordPress\/paneles?<\/strong><br>Ajusta el <strong><code>failregex<\/code><\/strong> al patr\u00f3n de tu <em>stack<\/em> (tema, plugins, <em>reverse proxy<\/em>). Empieza con <em>bans<\/em> cortos y mide.<\/p>\n\n\n\n<p><strong>\u00bfPuedo hacer bans permanentes?<\/strong><br>S\u00ed, con <code>bantime = -1<\/code> o gestionando una lista negra fuera de Fail2Ban (\u00fatil para IPs\/ASN claramente maliciosos).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Plantillas de <code>jail.local<\/code> para copiar\/pegar (y adaptar)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;DEFAULT]\nbantime  = 1h\nfindtime = 10m\nmaxretry = 4\nbackend  = systemd\nignoreip = 127.0.0.1\/8 10.0.0.0\/8 192.168.0.0\/16\n# action = %(action_)s       # b\u00e1sico\naction   = %(action_mwl)s    # ban + mail con logs\n\n&#91;sshd]\nenabled  = true\nport     = ssh\nfilter   = sshd\nlogpath  = \/var\/log\/auth.log\n\n&#91;nginx-http-auth]\nenabled  = true\nfilter   = nginx-http-auth\nlogpath  = \/var\/log\/nginx\/*error*.log\n\n&#91;recidive]\nenabled  = true\nlogpath  = \/var\/log\/fail2ban.log\nbantime  = 1w\nfindtime = 1d\nmaxretry = 5\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Fail2ban<\/h2>\n\n\n\n<p>Fail2Ban no hace ruido, pero <strong>hace el trabajo<\/strong>. En mi experiencia, su enfoque pr\u00e1ctico \u2014mirar los logs, reaccionar temprano y aprender de los patrones\u2014 rinde mucho m\u00e1s que soluciones \u201cm\u00e1gicas\u201d que prometen demasiado. Si lo integras con tus servicios clave (SSH, web, correo, paneles), lo calibras con datos reales y mantienes la casa ordenada (<code>jail.local<\/code>, filtros probados, m\u00e9tricas), obtendr\u00e1s seguridad <strong>realista y sostenible<\/strong>.<\/p>\n\n\n\n<p><strong>Opini\u00f3n Personal<\/strong><\/p>\n\n\n\n<p>Confieso que me cae especialmente bien Fail2Ban. No vende humo ni promete seguridad absoluta; hace una cosa muy concreta \u2014vigilar tus logs y frenar comportamientos abusivos\u2014 y la hace de forma impecable. En la pr\u00e1ctica, eso se traduce en servidores m\u00e1s tranquilos y menos tickets de \u201c\u00bfpor qu\u00e9 hay tantos intentos de login?\u201d. No es glamour, es eficacia.<\/p>\n\n\n\n<p>Cuando lo integro en un stack con <a href=\"https:\/\/www.hostingtg.com\/blog\/ssh3\/\">SSH<\/a>, NGINX y correo, el cambio se nota r\u00e1pido. Los picos de fuerza bruta bajan y yo gano tiempo para lo importante: optimizar, actualizar, observar patrones. Lo mejor es la transparencia: te obliga a mirar tus propios registros y tomar decisiones con datos, no con supersticiones. \u00bfIPs reincidentes? Endureces. \u00bfFalsos positivos en horario de oficina? Ajustas. Esa retroalimentaci\u00f3n convierte un \u201cinstala y reza\u201d en un proceso vivo y saludable.<\/p>\n\n\n\n<p>\u00bfTiene l\u00edmites? Claro. Si esperas que Fail2Ban sustituya a un WAF o a una buena pol\u00edtica de contrase\u00f1as, te vas a decepcionar. Tambi\u00e9n puedes romper la experiencia de usuario si te pasas de severo con <code>bantime<\/code> y <code>maxretry<\/code> sin entender tu tr\u00e1fico real. Pero justo ah\u00ed est\u00e1 el punto: es una herramienta que premia a quien mide, prueba y afina.<\/p>\n\n\n\n<p>Mi opini\u00f3n: si administras sistemas y no usas Fail2Ban, est\u00e1s dejando valor sobre la mesa. Es barato en recursos, r\u00e1pido de implementar y brutalmente \u00fatil para cortar ruido. Y a diferencia de otras soluciones \u201ccaja negra\u201d, aqu\u00ed ves qu\u00e9 ocurre, por qu\u00e9 se banea y c\u00f3mo mejorar.<\/p>\n\n\n\n<p>Ahora quiero escucharte a ti: \u00bflo usas en producci\u00f3n?, \u00bfqu\u00e9 jails te han funcionado mejor?, \u00bfqu\u00e9 falsos positivos te han dado guerra? D\u00e9jame tus comentarios abajo y lo debatimos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando alguien me pregunta por una mejora de seguridad r\u00e1pida y efectiva en un servidor Linux, suelo responder con lo mismo: instala Fail2Ban. No es un firewall \u201ctodo en uno\u201d ni pretende serlo; y justo ah\u00ed reside su encanto. Hace una tarea concreta \u2014vigilar tus logs y bloquear comportamientos sospechosos\u2014 y la hace con una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[952],"tags":[1097,1255,785,779,687,236],"class_list":["post-7656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guias","tag-almalinux","tag-fail2ban","tag-kernel","tag-linux","tag-plesk","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/7656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/comments?post=7656"}],"version-history":[{"count":3,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/7656\/revisions"}],"predecessor-version":[{"id":7660,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/posts\/7656\/revisions\/7660"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/media\/7657"}],"wp:attachment":[{"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/media?parent=7656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/categories?post=7656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostingtg.com\/blog\/wp-json\/wp\/v2\/tags?post=7656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}