En entornos IaaS sobre Azure, algunos administradores reportan que el archivo C:\Windows\System32\drivers\etc\hosts
de sus máquinas virtuales Windows Server 2022 queda en blanco de forma intermitente y sin motivo aparente. Aunque el síntoma parece menor, puede provocar fallos de resolución de nombres internos o filtrados de tráfico que dependen de esas entradas locales.
Descripción del problema
El servidor afectado dispone de 16 vCPU y 64 GiB de RAM, no tiene IP pública y ejecuta únicamente cargas de producción habituales (IIS, SQL Server y agentes de monitorización corporativos).
Tras varias semanas de funcionamiento estable, el día menos pensado el contenido del archivo hosts desaparece. Los administradores revisan:
- Tareas programadas ➜ ninguna operación de copia o sustitución.
- Visor de eventos ➜ sin registros de error ni avisos de integridad.
- Antivirus/EDR ➜ sin aislamientos, cuarentenas ni acciones sobre la ruta.
El objetivo, por tanto, es descubrir quién o qué proceso escribe o elimina el contenido y aplicar correcciones permanentes sin comprometer la estabilidad del entorno.
Entender el rol del archivo hosts
Antes de ahondar en la investigación, recordemos que el archivo hosts:
- Actúa como un override local del DNS para las interfaces tradicionales (no así para DNS‑over‑HTTPS).
- Se procesa cada vez que el sistema realiza una consulta de nombre, por lo que incluso un borrado temporal puede romper dependencias de microservicios, tareas de backup o licenciamiento.
- Almacena datos en plain‑text; cualquier proceso con privilegios suficientes puede grabar un archivo vacío y reemplazar la versión legítima en milisegundos.
Posibles causas más habituales
En proyectos de consultoría se han detectado patrones que provocan este síntoma:
Origen | Motivo típico | Indicador |
---|---|---|
Agentes de seguridad | Hardening automatizado que obliga a resolver solo por DNS corporativo | Servicios como Defender for Endpoint, McAfee, Symantec |
Scripts de arranque/GPO | Reescritura del archivo para imponer bloqueos o listas blancas | Directiva “StartUp” o “Logon” con orden de copia |
Herramientas DevOps | Playbooks Ansible, runbooks Azure Automation o pipelines CI/CD | Ejecutan New-Item -Force sobre la ruta |
Errores de aplicación | Programas mal diseñados que abren el archivo con modos de truncado | Visor de eventos: excepciones UnauthorizedAccess |
Comprobación de permisos NTFS
Un control de permisos deficiente es la puerta de entrada más directa. Revise y documente:
- Características de la carpeta
etc
➜ Propiedades ➜ Seguridad ➜ Avanzado. - Cuentas con Write o superior (Administradores, SYSTEM, servicios de copia de seguridad o de configuración).
- Herencia desde
drivers
o directorios superiores. - Pertenencia a grupos; una cuenta aparentemente inocua puede heredar permisos por formar parte de Administrators.
La lista resultante debe restringirse a roles de confianza. Cualquier identidad desconocida o agentes de terceros deben ser evaluados y, si procede, retirados.
Activar auditoría de acceso al archivo
Si los permisos son correctos pero persiste la duda, la auditoría de objetos de Windows es la metodología más efectiva — y nativa — para atrapar al culpable. Siga estos pasos:
Activar la directiva de auditoría
# Ejecutar en PowerShell como administrador
auditpol /set /subcategory:"File System" /success:enable /failure:enable
Configurar la entrada de auditoría sobre el archivo
En el Explorador: botón derecho hosts ➜ Propiedades ➜ Seguridad ➜ Avanzado ➜ Auditoría ➜ Agregar. Defina:
- Principal: Everyone
- Tipo: All (o, mejor, “Write Data, Append Data, Delete” si le preocupa el tamaño del log)
- Aplicar a: “Sólo este archivo”
En las próximas modificaciones se generará el evento 4663 (y, si hay borrados, 4656/4660). El payload del registro especifica:
- Subject Security ID ➜ quién solicitó la operación.
- Process Name ➜ ruta al ejecutable (
c:\windows\system32\notepad.exe
,C:\Program Files\Company\agent.exe
, etc.). - Accesses ➜ la acción: DELETE, WRITE_DAC, SYNCHRONIZE…
Filtrar los eventos relevantes
# PowerShell rápido para acotar resultados
Get-WinEvent -LogName Security -FilterHashtable @{Id=4663;StartTime=(Get-Date).AddDays(-1)} |
Where-Object {$_.Message -like "*\\hosts"} |
Format-Table TimeCreated, @{L='User';E={$_.Properties[1].Value}},
@{L='Process';E={$_.Properties[5].Value}} -Auto
Así obtendrá un histórico depurado sin necesidad de exportar todo el log.
Revisión de impacto en producción
Auditar un único archivo supone un coste prácticamente despreciable:
- CPU: la captura de eventos se gestiona en modo kernel con overhead inferior al 1 %.
- Disco: cada evento ocupa entre 2 KB y 4 KB; incluso con 10 000 operaciones diarias hosts raramente supera los 40 MB de log.
- Red: si reenvía eventos a Sentinel o Splunk, comprima y limite la suscripción a ID 4663.
Aun así, defina políticas de retención; una rotación de 30 días cubre la mayor parte de los casos forenses sin saturar la partición de sistema.
Método de diagnóstico paso a paso
- Tomar snapshot o backup en Azure Backup para garantizar reversión.
- Verificar integridad de sistema con
sfc /scannow
; descartar corrupción de disco. - Aplicar auditoría sobre el archivo (guía anterior).
- Forzar reproducciones controladas: reiniciar servicios sospechosos uno a uno, lanzar pipelines DevOps fuera de horario, etc.
- Analizar cada evento generado y elaborar tabla de mapeo PID ➜ proceso ➜ cuenta de servicio.
- Confirmar hipótesis (GPO, agente, script) y aislar la máquina del dominio si la prueba cruza contenedores de directivas.
Automatización con PowerShell para auditoría continua
Si desea incorporar este control en múltiples servidores:
# Módulo mínimo
function Enable-HostsAudit {
param([string]$Target = "C:\Windows\System32\drivers\etc\hosts")
auditpol /set /subcategory:"File System" /success:enable /failure:enable
$acl = Get-Acl $Target
$rule = New-Object System.Security.AccessControl.FileSystemAuditRule(
"Everyone","WriteData,AppendData,Delete","None","None","Success,Failure")
$acl.AddAuditRule($rule)
Set-Acl -Path $Target -AclObject $acl
}
Importación masiva
Invoke-Command -ComputerName (Get-Content .\servers.txt) -ScriptBlock ${function:Enable-HostsAudit}
Integre la función en su pipeline de Terraform, Ansible o en un runbook de Azure Automation para garantizar consistencia global.
Controles complementarios
- Integridad de archivos: active Microsoft Defender File Integrity Monitoring (FIM). Permite alertar ante escrituras y restaurar la versión previa con un clic.
- Azure Policy: defina una iniciativa de conformidad que bloquee asignaciones de GPO no aprobadas o que exija etiquetas “NoTouch Hosts”.
- Sentinel o SIEM corporativo: cree una regla KQL que dispare una alerta si el evento 4663 se registra sobre la ruta
drivers/etc/hosts
. - Backups diferenciales: programe copias diarias del directorio
etc
para acelerar recuperación y análisis de cambios entre versiones. - Listas de control de aplicaciones: con Windows Defender Application Control, firme binarios internos y bloquee la ejecución de ejecutables sin confianza que pudieran modificar archivos de sistema.
Buenas prácticas para evitar recurrencia
Una vez determine el proceso culpable, revise:
- Diseño de la GPO: si el archivo se regenera por política, evalúe migrar las entradas a DNS corporativo.
- Agentes de hardening: algunos EDR eliminan entradas personalizadas; cree excepciones documentadas.
- Playbooks de CI/CD: en lugar de tocar el hosts, utilice DNS masivos o inyecte registros en Azure Private DNS.
- Segregación de funciones: evite que cuentas de servicio con Least Privilege puedan escribir en rutas de sistema.
- Proceso de cambio: registre en ITSM cualquier modificación planificada del hosts y archive un diff.
Conclusión
El borrado aleatorio del archivo hosts raramente es aleatorio: siempre existe un agente, un script o una política detrás. Con la combinación de permisos NTFS restringidos, auditoría selectiva y monitorización centralizada:
- Obtendrá evidencia irrefutable de la cuenta y el proceso que realizan la eliminación.
- Podrá desactivar o reconfigurar la causa raíz sin afectar la producción.
- Dispondrá de un marco repetible para otros servidores Windows Server 2022 — o versiones anteriores — en suscripciones Azure y en entornos híbridos.
Una vez solucionado, mantenga la auditoría como guardia silenciosa; a cambio de unos pocos kilobytes de log añadidos al día obtendrá tranquilidad operativa y una métrica clave de postura de seguridad: la confianza de que ningún componente borra configuraciones críticas sin dejar huella.