<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Freeradius on Servicios Rogeliowar</title><link>https://blog.serviciosrogeliowar.com/tags/freeradius/</link><description>Recent content in Freeradius on Servicios Rogeliowar</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>© 2026 Rogelio Guerra Riverón</copyright><lastBuildDate>Thu, 18 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.serviciosrogeliowar.com/tags/freeradius/index.xml" rel="self" type="application/rss+xml"/><item><title>EAP-TLS vs PEAP para WiFi empresarial: cuándo usar certificados y por qué TOTP no encaja en 802.1X</title><link>https://blog.serviciosrogeliowar.com/posts/eap-tls-vs-peap-wifi-empresarial-802-1x/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/eap-tls-vs-peap-wifi-empresarial-802-1x/</guid><description>&lt;p&gt;Cuando un cliente pregunta si puede añadir TOTP al WiFi corporativo para cumplir con su política de MFA, la respuesta técnicamente correcta es &amp;ldquo;sí, pero no deberías&amp;rdquo;. Este artículo explica por qué TOTP es prácticamente inutilizable en 802.1X, cómo comparar los métodos EAP más comunes y cuál es la ruta recomendada hacia una autenticación WiFi robusta.&lt;/p&gt;

&lt;h2 class="relative group"&gt;El problema de TOTP en redes inalámbricas
 &lt;div id="el-problema-de-totp-en-redes-inalámbricas" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#el-problema-de-totp-en-redes-inal%c3%a1mbricas" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;La intuición detrás de querer TOTP en WiFi es razonable: si lo usas en VPN y en aplicaciones web, ¿por qué no en la red inalámbrica? El problema está en cómo funciona el supplicant WiFi.&lt;/p&gt;</description></item><item><title>Errores frecuentes en FreeRADIUS 3.x con PAM: guía de diagnóstico</title><link>https://blog.serviciosrogeliowar.com/posts/errores-frecuentes-freeradius-pam-diagnostico/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/errores-frecuentes-freeradius-pam-diagnostico/</guid><description>&lt;p&gt;Configurar FreeRADIUS 3.x con autenticación PAM —especialmente combinando &lt;code&gt;pam_google_authenticator&lt;/code&gt;, &lt;code&gt;pam_winbind&lt;/code&gt; y fail2ban— genera un conjunto de errores que aparecen una y otra vez. Este artículo los recoge con causa exacta y solución directa, sin rodeos.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Tabla resumen
 &lt;div id="tabla-resumen" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tabla-resumen" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;Síntoma&lt;/th&gt;
					&lt;th&gt;Causa raíz&lt;/th&gt;
					&lt;th&gt;Solución rápida&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Failed to change user id to &amp;quot;usuario&amp;quot;&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;user=root&lt;/code&gt; en pam conf, freerad no puede hacer setuid&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;user=freerad&lt;/code&gt; + &lt;code&gt;chown freerad /etc/google-authenticator/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;user not found&lt;/code&gt; / &lt;code&gt;getpwnam() failed&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Winbind sin idmap RID, los usuarios AD no tienen UID Unix&lt;/td&gt;
					&lt;td&gt;Añadir bloques &lt;code&gt;idmap config&lt;/code&gt; en smb.conf + reiniciar winbind&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Secret file permissions (0644) are more permissive than 0600&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Permisos demasiado abiertos en el fichero TOTP&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;chmod 600 /etc/google-authenticator/*&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;Failed to create tempfile: Permission denied&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Directorio TOTP propiedad de root, freerad no puede escribir&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;chown freerad:freerad /etc/google-authenticator/&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;Contraseñas visibles en el log tras desactivarlas&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;auth_badpass&lt;/code&gt; requiere reinicio, no reload; &lt;code&gt;auth_log&lt;/code&gt; loguea independientemente&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;systemctl restart freeradius&lt;/code&gt; + revisar módulo &lt;code&gt;auth_log&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;No Auth-Type found: rejecting via Post-Auth-Type = Reject&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;El virtual server no fuerza Auth-Type a PAP para rutas PAM&lt;/td&gt;
					&lt;td&gt;Añadir &lt;code&gt;update control { &amp;amp;Auth-Type := PAP }&lt;/code&gt; en &lt;code&gt;authorize&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;7&lt;/td&gt;
					&lt;td&gt;fail2ban no arranca: &lt;code&gt;Jail 'sshd' is not valid&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;logpath&lt;/code&gt; duplicado en jail.local o jails de servicios inexistentes&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;fail2ban-client -t&lt;/code&gt; + eliminar duplicados y jails inactivos&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;

&lt;h2 class="relative group"&gt;Error 1: &lt;code&gt;Failed to change user id to &amp;quot;usuario&amp;quot;&lt;/code&gt;
 &lt;div id="error-1-failed-to-change-user-id-to-usuario" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#error-1-failed-to-change-user-id-to-usuario" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;Síntoma
 &lt;div id="síntoma" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#s%c3%adntoma" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(0) pam: pam_authenticate: Failed to change user id to &amp;#34;usuario&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(0) pam: ERROR: PAM auth for user &amp;#34;usuario&amp;#34; failed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 class="relative group"&gt;Causa
 &lt;div id="causa" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#causa" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;pam_google_authenticator.so&lt;/code&gt; se carga con el parámetro &lt;code&gt;user=root&lt;/code&gt;, lo que obliga a PAM a hacer &lt;code&gt;setuid(root)&lt;/code&gt; antes de leer el fichero TOTP. El proceso &lt;code&gt;freeradius&lt;/code&gt; corre como usuario &lt;code&gt;freerad&lt;/code&gt; y no tiene permiso para asumir la identidad de root.&lt;/p&gt;</description></item><item><title>fail2ban para FreeRADIUS y SSH: bloqueo de fuerza bruta en infraestructura de red</title><link>https://blog.serviciosrogeliowar.com/posts/fail2ban-freeradius-ssh-proteccion-fuerza-bruta-radius/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/fail2ban-freeradius-ssh-proteccion-fuerza-bruta-radius/</guid><description>&lt;h2 class="relative group"&gt;Por qué proteger RADIUS con fail2ban
 &lt;div id="por-qué-proteger-radius-con-fail2ban" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#por-qu%c3%a9-proteger-radius-con-fail2ban" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;FreeRADIUS es el pilar de autenticación en muchas redes empresariales: VPNs, switches con 802.1X, Wi-Fi corporativo. El puerto 1812 UDP recibe constantemente intentos de &lt;em&gt;credential stuffing&lt;/em&gt;, especialmente si la IP del servidor tiene alguna exposición pública. A diferencia de SSH, donde el atacante necesita llegar a un servicio TCP con negociación, RADIUS sobre UDP no tiene overhead de conexión: enviar miles de paquetes de autenticación cuesta casi nada al atacante.&lt;/p&gt;</description></item><item><title>FortiBleed 2026: cuando la VPN se convierte en la puerta de entrada</title><link>https://blog.serviciosrogeliowar.com/posts/fortibleed-fortigate-freeradius-mfa-hardening/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/fortibleed-fortigate-freeradius-mfa-hardening/</guid><description>&lt;p&gt;El 7 de junio de 2026 Fortinet confirmó lo que los investigadores de seguridad llevaban semanas documentando: una campaña de compromiso masivo contra dispositivos FortiGate que dejó 75.000 equipos afectados en 194 países. El ataque combinó una vulnerabilidad de autenticación SAML (CVE-2026-24858, CVSS 9.8) con un fallo en cómo FortiOS almacenaba las contraseñas durante el proceso de actualización. El resultado: 1.160 millones de intentos de autenticación en 29 días, credenciales de administrador en manos de actores de amenaza y acceso directo a redes corporativas a través de las mismas VPN diseñadas para protegerlas.&lt;/p&gt;</description></item><item><title>FreeRADIUS + TOTP + Active Directory: doble factor para VPN empresarial desde cero</title><link>https://blog.serviciosrogeliowar.com/posts/freeradius-totp-active-directory-mfa-vpn-empresarial/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/freeradius-totp-active-directory-mfa-vpn-empresarial/</guid><description>&lt;h2 class="relative group"&gt;El problema
 &lt;div id="el-problema" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#el-problema" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Un FortiGate configurado con SSL-VPN autenticando contra Active Directory solo pide usuario y contraseña. Si esas credenciales se filtran —un phishing, un password reutilizado, un volcado de NTDS— cualquiera entra a la red corporativa desde internet. El segundo factor elimina ese vector: aunque el atacante tenga la contraseña, sin el código TOTP del momento no pasa.&lt;/p&gt;</description></item><item><title>Rotación de shared secrets RADIUS: proceso coordinado sin cortar el servicio</title><link>https://blog.serviciosrogeliowar.com/posts/rotacion-shared-secrets-radius-sin-corte-servicio/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/rotacion-shared-secrets-radius-sin-corte-servicio/</guid><description>&lt;h2 class="relative group"&gt;Por qué rotar el shared secret RADIUS
 &lt;div id="por-qué-rotar-el-shared-secret-radius" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#por-qu%c3%a9-rotar-el-shared-secret-radius" aria-label="Ancla"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;El shared secret RADIUS no es una contraseña de usuario: es la clave que cifra el campo &lt;code&gt;User-Password&lt;/code&gt; en cada paquete RADIUS entre el NAS (FortiGate, AP, switch) y el servidor FreeRADIUS. El protocolo PAP transporta la contraseña del usuario XOR-cifrada con un hash MD5 derivado del shared secret y un vector aleatorio del paquete.&lt;/p&gt;</description></item></channel></rss>