<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Totp on Servicios Rogeliowar</title><link>https://blog.serviciosrogeliowar.com/tags/totp/</link><description>Recent content in Totp 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/totp/index.xml" rel="self" type="application/rss+xml"/><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>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>Provisioning TOTP con URLs de un solo uso: entrega segura de QR codes por email</title><link>https://blog.serviciosrogeliowar.com/posts/provisioning-totp-urls-un-solo-uso-qr-codes-email/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://blog.serviciosrogeliowar.com/posts/provisioning-totp-urls-un-solo-uso-qr-codes-email/</guid><description>&lt;p&gt;Configurar TOTP (Time-based One-Time Password) en un entorno con varios usuarios tiene un problema de distribución: el secret TOTP tiene que llegar al dispositivo del usuario de forma segura. La solución habitual —que el administrador escanee el QR en el teléfono del usuario— no escala, no es cómoda y rompe el modelo de privacidad. Este artículo documenta un microservicio Python que resuelve el problema generando URLs de un solo uso con TTL que el usuario consume desde su propio dispositivo.&lt;/p&gt;</description></item></channel></rss>