Hacer que Windows Server sea más seguro

En este artículo, al autor le gustaría dar un par de buenos consejos sobre la administración de servidores de Windows, que por alguna razón no pude encontrar en Internet.

Siguiendo estos principios, asegurará en gran medida sus servidores basados ​​en Windows en entornos locales y públicos.


1. Ingresamos correctamente la computadora en AD


No use usuarios con privilegios administrativos para ingresar computadoras en Active Directory. Nadie garantiza que Keylogger no haya aparecido en la computadora del empleado. Tener una cuenta separada. Un atacante que robó credenciales solo puede agregar más computadoras a AD.

1.1. Crea un nuevo usuario


Para hacer esto, vaya a ADUC (usuarios de Active Directory y computadoras). Haga clic en un espacio vacío en la carpeta Usuarios y equipos y cree un usuario. Por simplicidad, llamémoslo JoinAdmin.

1.2. Autoridad delegada


Una vez creado el usuario, debe tener asignados permisos. Para hacer esto, haga clic derecho en la carpeta "Usuarios" y seleccione "Delegar control". Haga clic en "Siguiente" y seleccione nuestro administrador.


Queremos que el usuario realice solo una función, por lo que elegimos la segunda opción.


A continuación, seleccione "Objetos informáticos" y todos sus subelementos.



Use este usuario y no se preocupe de que alguien pueda robar la contraseña del administrador.

2. Acceso controlado a la carpeta


Windows Server 2019 introdujo una característica muy subestimada: acceso controlado a carpetas. Prohíbe el acceso a la grabación para programas que no están en la lista blanca en las carpetas o secciones seleccionadas.

Activarlo ayudará a proteger los datos de los virus ransomware incluso si su servidor ha sido infectado. Sin embargo, esto no protege sus datos del robo, puede leerse.

Puede habilitar la función en el Centro de seguridad de Windows o mediante Powershell:

Set-MpPreference -EnableNetworkProtection Enabled 

Agregar programas permitidos:

Los programas permitidos se pueden agregar a través del Centro de seguridad de Windows y, a través de Powershell, debe ingresar la ruta completa a los archivos ejecutables, separados por comas.

 Set-MpPreference -ControlledFolderAccessAllowedApplications "C:\Folder\File.exe"             . $ApplicationToAdd = "C:\Fodler\file.exe" $ExistingApplicationList = (Get-MpPreference).ControlledFolderAccessAllowedApplications $FullList = $ApplicationToAdd + $ExistingApplicationList Set-MpPreference -ControlledFolderAccessAllowedApplications $FullList 

Agregar carpetas protegidas:

Las carpetas se agregan exactamente de la misma manera que los programas. Por ejemplo, con este comando agregamos toda la unidad C:

 Set-MpPreference -ControlledFolderAccessProtectedFolders "C:\" 

3. SYSWOW64 y SMB


Todos los programas de 32 bits se ejecutan en 64 bits a través de la capa de compatibilidad: SYSWOW64. Deshabilitar este componente hace incompatible todo el software de 32 bits, incluidos los virus.

Por sí solas, las aplicaciones de 32 bits son más vulnerables, los programas de 64 bits no pueden ser atacados por desbordamientos de búfer, y a través de ellos es mucho más difícil ejecutar código que estos programas no proporcionan. Si solo funcionan componentes integrados o solo programas de 64 bits en el servidor, asegúrese de eliminar este componente.

¿Recuerdas a Wannacry que atravesó SMB1? La primera versión SMB sigue siendo un componente estándar de Windows Server y se instala de forma predeterminada en cada edición.
Wannacry penetró en la vulnerabilidad EternalBlue, la vulnerabilidad fue parchada, pero el sedimento permaneció.
Este comando elimina SMB1 y SYSWOW64:

 Remove-WindowsFeature WoW64-Support, FS-SMB1 


Vale la pena tomar la recomendación no como una excusa para eliminar estos componentes específicos, sino como deshabilitar todos los componentes no utilizados en general.

4. Desactivar ping


Por defecto, una computadora basada en Windows responde a ICMP solo en la red local. Deshabilitar ICMP aumenta ligeramente la seguridad de su servidor. En parte, esto se debe al hecho de que hay guías sobre kulhacker y otros foros de script kiddie sobre cómo buscar objetivos que pueden ser la fuerza bruta.

Para demostrar que ganará si deshabilita ICMP, se crearon dos servidores. RDP se abrió en ambos, sin embargo, uno de los servidores no respondió a ICMP.

ICMP está deshabilitado:


ICMP habilitado:


Como se puede ver en la captura de pantalla, esto no detuvo a todos, sino a muchos. Para recopilar datos sobre cuánto quieren piratearlo, puede usar este script:

 function Get-Bruteforce {    $Last = 4    $Attempts = 10    #Getting date -one hour (default)    $DateTime = [DateTime]::Now.AddHours(-$Last)    $BruteEvents = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $DateTime -ErrorAction SilentlyContinue | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }    $TopPunks = $BruteEvents | Group-Object -property IpAddress | Sort-Object Count    #Get bruteforsers that tried to login greated or equal than 4 times (default)    $GetPunks = $TopPunks | where {$_.Count -ge $attempts} | Select -property Name    Write-host Unique attackers IP: $GetPunks.Length -ForegroundColor Green    Write-Host Total bruteforce attempts: $BruteEvents.Length -ForegroundColor Green    #Output-punks    foreach ($i in $TopPunks | where {$_.Count -ge $attempts}) {    $PunkRdns = (Resolve-DnsName $i.Name -ErrorVariable ProcessError -ErrorAction SilentlyContinue).NameHost    if ($ShowRDNS) {        if ($PunkRdns) {            Write-Host "attempts": $i.count IP: $PunkRdns        }        else {            Write-Host "attempts": $i.count IP: $i.name        }    }    else {        Write-Host "attempts": $i.count IP: $i.name    }    }  } Get-Bruteforce 

Todavía puede monitorear su servidor, por ejemplo, verificando la disponibilidad de un puerto específico:

 Test-NetConnection 192.168.0.1 -Port 3389 

5. No todos los nombres son igualmente buenos


Usando otro script, sacando los nombres de usuario más populares que fueron atacados.

Si está instalando Servicios de escritorio remoto, le recomendamos encarecidamente que evite estos nombres. En combinación con una contraseña débil, puede garantizar una cuenta de hackeo rápido.

Para su conveniencia, la lista de nombres "malos" se ha reescrito en una tabla:
Intentos de pirateríaNombre de cuenta
40IRINA
41Inicio
42SKLAD
42sqlserver
42Sys
42KASSA2
43ADMINISTRADOR1
43PC
45INVITADO
46Anfitrión
46Auditoria
49USUARIO3
54PRUEBA1
55BUH2
66Usuario
66Gerente
75ADM
77.NET.v.4.5
80BUH1
86RESPALDO
89Buh
90Administrador
1001
116SERVIDOR
122Usuario2
128À نى È ي È ًٌٍ À ٍ Î ً
147PRUEBA
219USUARIO1
308Usuario
330Administrador
9299ADMINISTRADOR
13972ADMINISTRADOR

Puede obtener la misma lista en su servidor con este script:

 function Get-Badname {    $Last = 24    $Attempts = 40      $DateTime = [DateTime]::Now.AddHours(-$Last)    $BruteEvents = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $DateTime -ErrorAction SilentlyContinue | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[5]} }    $TopPunks = $BruteEvents | Group-Object -property IpAddress | Sort-Object Count      $GetPunks = $TopPunks | where {$_.Count -ge $attempts} | Select -property Name    Write-host Unique attackers IP: $GetPunks.Length -ForegroundColor Green    Write-Host Total bruteforce attempts: $BruteEvents.Length -ForegroundColor Green    #Output    foreach ($i in $TopPunks | where {$_.Count -ge $attempts}) {        Write-Host "Attempts": $i.count Username: $i.name    }  } Get-Badname 

6. Cosas obvias


Bueno, terminamos el artículo con las cosas obvias:

  1. Cree una puerta de enlace: para administrar una gran infraestructura, es mejor asegurarse con un único punto de entrada. En mas detalle .
  2. Instalar actualizaciones. En particular, en servidores de batalla.
  3. Deshabilite los servicios que no utiliza: esta es un área adicional para atacar.
  4. Use Server Core, tiene la menor área de ataque y la menor cantidad de reinicios al instalar actualizaciones
  5. Servidor de escritorio remoto para múltiples usuarios es una mala idea. Adhiérase al principio de una persona o servicio: un servidor.
  6. Haga copias de seguridad y asegúrese de probarlas. Una copia de seguridad que no se ha probado no es una copia de seguridad.

Esperamos que los primeros cinco puntos hayan sido útiles e interesantes para usted.

Ofrecemos una tarifa UltraLite Windows VDS actualizada por 99 rublos con Windows Server 2019 Core instalado.

Source: https://habr.com/ru/post/484396/


All Articles