ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Windows Server

Cómo proteger un VPS Windows: RDP, bloqueo de cuentas y auditoría del evento 4625

7 pasos 17 min de lectura 6 vistas 0
Contenido

Un servidor Windows en internet recibe escaneos en el puerto 3389 e intentos de adivinar contraseñas a los pocos minutos de arrancar, por lo que el refuerzo de la seguridad de su VPS Windows debería ser su primera tarea. Para Windows Server 2016/2019/2022, esta guía explica cómo usar una cuenta de administrador con contraseña segura y nombre cambiado, configurar una directiva de bloqueo de cuentas, activar la autenticación a nivel de red (NLA) de RDP, restringir RDP a su IP, desactivar servicios innecesarios, comprobar Microsoft Defender y auditar los inicios de sesión fallidos (evento 4625) con Get-WinEvent.

Paso 1: Contraseña segura para Administrator y cambio de nombre de la cuenta

Use al menos 16 caracteres combinando mayúsculas, minúsculas, números y símbolos, y no la reutilice en ningún otro lugar. Casi todas las herramientas de fuerza bruta atacan el nombre de usuario Administrator, así que cambiarlo detiene la mayoría de los ataques no dirigidos.

# Establecer una nueva contraseña segura (se le pedirá; no se muestra nada en pantalla)
net user Administrator *

# Cambiar el nombre de la cuenta Administrator integrada
Rename-LocalUser -Name "Administrator" -NewName "srvadmin"
Get-LocalUser | Format-Table Name,Enabled,LastLogon
Después de cambiar el nombre, use el nuevo nombre de usuario en Escritorio remoto. Anote el nuevo nombre y la contraseña antes de desconectarse. Si más adelante restablece la contraseña desde el área de cliente y algo no funciona, abra un ticket de soporte e indique que se cambió el nombre de la cuenta.

Paso 2: Configurar una directiva de bloqueo de cuentas

Una directiva de bloqueo bloquea temporalmente las cuentas tras varias contraseñas incorrectas, lo que ralentiza enormemente los ataques de fuerza bruta. También puede configurarla en secpol.msc → Account Policies (Directivas de cuenta) → Account Lockout Policy (Directiva de bloqueo de cuenta).

# Bloquear una cuenta durante 30 minutos tras 5 intentos fallidos en 30 minutos
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
net accounts
En versiones antiguas de Windows, la cuenta Administrator integrada está exenta del bloqueo de forma predeterminada. El cambio de nombre, una contraseña segura y la restricción por IP del paso 4 siguen siendo sus defensas más importantes.

Paso 3: Activar la autenticación a nivel de red (NLA) de RDP

NLA exige autenticarse antes de crear una sesión completa de Escritorio remoto, lo que reduce el consumo de recursos de las conexiones no autenticadas y mitiga algunas vulnerabilidades de RDP. Marque "Allow connections only from computers running Remote Desktop with Network Level Authentication" ("Permitir solo las conexiones desde equipos que ejecuten Escritorio remoto con Autenticación a nivel de red") en System Properties (Propiedades del sistema) → Remote (Acceso remoto), o ejecute:

$rdp = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $rdp -Name UserAuthentication -Value 1
Get-ItemProperty -Path $rdp -Name UserAuthentication, PortNumber

Paso 4: Restringir el Escritorio remoto a su dirección IP

Esta es la protección más eficaz contra los ataques de fuerza bruta a RDP. Los comandos modifican las reglas de firewall integradas de Escritorio remoto para que solo pueda conectarse la IP o la subred de su oficina. Los nombres de las reglas son idénticos en todos los idiomas del sistema operativo. Si cambió el puerto RDP y creó una regla personalizada, configure también -RemoteAddress en esa regla.

# Reglas integradas de Escritorio remoto (los nombres son iguales en todos los idiomas del sistema)
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress 203.0.113.10, 198.51.100.0/24
Get-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP | Get-NetFirewallAddressFilter

# Deshacer: volver a permitir RDP desde cualquier lugar
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress Any
Confirme primero su IP pública actual (las IPs de conexiones domésticas pueden cambiar). Una IP incorrecta le desconectará de inmediato; en ese caso, abra un ticket de soporte y nuestro equipo le ayudará a recuperar el acceso.

Paso 5: Desactivar los servicios innecesarios

Cada servicio en ejecución es superficie de ataque. Liste los servicios en ejecución y detenga los que no necesite. La cola de impresión (Print Spooler) rara vez se necesita en un servidor y ha tenido vulnerabilidades graves. No toque los servicios del sistema si no está seguro de lo que hacen.

Get-Service | Where-Object { $_.Status -eq "Running" } | Sort-Object DisplayName | Format-Table Name,DisplayName

# Ejemplo: la cola de impresión rara vez se necesita en un servidor
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType Disabled

Paso 6: Comprobar que Microsoft Defender está activado y actualizado

Windows Server 2016 y versiones posteriores incluyen el Antivirus de Microsoft Defender. Confirme que la protección en tiempo real está activada, actualice las firmas y ejecute un análisis rápido.

Get-MpComputerStatus | Select-Object AMServiceEnabled,RealTimeProtectionEnabled,AntivirusSignatureLastUpdated
Set-MpPreference -DisableRealtimeMonitoring $false
Update-MpSignature
Start-MpScan -ScanType QuickScan

Paso 7: Auditar los inicios de sesión fallidos (evento 4625) con Get-WinEvent

El evento con ID 4625 registra un inicio de sesión fallido. Los comandos siguientes listan los fallos recientes y las IPs de origen con más intentos en las últimas 24 horas, para que pueda ver si está sufriendo un ataque y bloquear a los atacantes con una regla de firewall.

# Asegurarse de que se auditan los inicios de sesión fallidos (GUID = subcategoría "Logon", independiente del idioma)
auditpol /set /subcategory:"{0CCE9215-69AE-11D9-BED3-505054503030}" /failure:enable

# Últimos 20 inicios de sesión fallidos
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
  Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}

# IPs con más ataques en las últimas 24 horas
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddDays(-1)} |
  ForEach-Object { $_.Properties[19].Value } | Group-Object | Sort-Object Count -Descending |
  Select-Object -First 10 Count, Name

Preguntas frecuentes

¿Sigue mereciendo la pena cambiar el puerto RDP?

Reduce el ruido de los escaneos automatizados, pero no sustituye a una contraseña segura ni a la restricción por IP. Combine las tres medidas; consulte nuestra guía "cambiar el puerto RDP de Windows".

Mi IP doméstica cambia a menudo. ¿Cómo puedo añadirla a la lista blanca?

Permita el rango de su proveedor de internet (ISP), o conéctese a través de un servidor de salto (jump host) o una VPN con IP fija y abra el Escritorio remoto desde allí.

¿Por qué la IP de origen aparece como "-" en algunos eventos 4625?

Normalmente el inicio de sesión fue local o la dirección no se capturó durante NLA. Si ve muchos, compárelos con los registros del firewall.

¿Sigue sin resolverlo después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico de IMIDC, disponible 24/7, le ayudará. Incluya la IP del servidor, la versión del sistema operativo, los comandos que ejecutó y una captura de pantalla del error para que podamos localizar el problema más rápido.

¿Fue útil la respuesta?

Tutoriales relacionados