Tornando o Windows Server mais seguro

Neste artigo, o autor gostaria de dar algumas boas dicas sobre como administrar servidores Windows, o que, por algum motivo, não consegui encontrar na Internet.

Seguindo esses princípios, você protegerá muito seus servidores baseados no Windows em ambientes locais e públicos.


1. Entramos corretamente no computador no AD


Não use usuários com privilégios administrativos para inserir computadores no Active Directory. Ninguém garante que o Keylogger ainda não apareceu no computador do funcionário. Ter uma conta separada. Um invasor que roubou credenciais pode adicionar apenas mais computadores ao AD.

1.1 Crie um novo usuário


Para fazer isso, vá para ADUC (usuários do Active Directory e computadores). Clique em um espaço vazio na pasta Usuários e computadores e crie um usuário. Para simplificar, vamos chamá-lo de JoinAdmin.

1.2 Delegar autoridade


Após a criação do usuário, ele precisa receber permissões. Para fazer isso, clique com o botão direito do mouse na pasta "Usuários" e selecione "Delegar controle". Clique em "Avançar" e selecione nosso administrador.


Queremos que o usuário execute apenas uma função, por isso escolhemos a segunda opção.


Em seguida, selecione "Objetos do computador" e todos os seus subitens.



Use este usuário e não se preocupe se alguém puder roubar a senha do administrador.

2. Acesso controlado à pasta


O Windows Server 2019 introduziu um acesso a pastas controlado por recursos muito subestimado. Proíbe o acesso à gravação de programas que não estão na lista branca das pastas ou seções selecionadas.

A ativação ajudará a proteger os dados contra vírus de ransomware, mesmo que seu servidor tenha sido infectado. No entanto, isso não protege seus dados contra roubo, eles podem ser lidos.

Você pode ativar o recurso na Central de Segurança do Windows ou através do Powershell:

Set-MpPreference -EnableNetworkProtection Enabled 

Adicione programas permitidos:

Os programas permitidos podem ser adicionados através da Central de Segurança do Windows e, através do Powershell, você precisa inserir o caminho completo para os arquivos executáveis, separados por vírgulas.

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

Adicione pastas protegidas:

As pastas são adicionadas exatamente da mesma maneira que os programas. Por exemplo, com este comando, adicionamos toda a unidade C:

 Set-MpPreference -ControlledFolderAccessProtectedFolders "C:\" 

3. SYSWOW64 e SMB


Todos os programas de 32 bits são executados em 64 bits pela camada de compatibilidade - SYSWOW64. Desativar esse componente torna todos os softwares de 32 bits incompatíveis, incluindo vírus.

Sozinhos, os aplicativos de 32 bits são mais vulneráveis, os programas de 64 bits não podem ser atacados por estouros de buffer e, por meio deles, é muito mais difícil executar o código que não é fornecido por esses programas. Se apenas componentes incorporados ou apenas programas de 64 bits funcionarem no servidor, remova esse componente.

Você se lembra de Wannacry, que passou pelo SMB1? A primeira versão SMB ainda é um componente padrão do Windows Server e é instalada por padrão em cada edição.
Wannacry penetrou na vulnerabilidade EternalBlue, a vulnerabilidade foi corrigida, mas o sedimento permaneceu.
Este comando remove o SMB1 e o SYSWOW64:

 Remove-WindowsFeature WoW64-Support, FS-SMB1 


Vale a pena tomar a recomendação não como uma desculpa para remover esses componentes específicos, mas como desativar todos os componentes não utilizados em geral.

4. Desative o ping


Por padrão, um computador baseado no Windows responde ao ICMP somente na rede local. Desabilitar o ICMP aumenta um pouco a segurança do seu servidor. Em parte, isso se deve ao fato de existirem guias nos fóruns do kulhacker e de outros scripts para crianças sobre como procurar objetivos que possam ser força bruta.

Para mostrar que você vencerá se desativar o ICMP, dois servidores foram criados. O RDP foi aberto nos dois, no entanto, um dos servidores não respondeu ao ICMP.

O ICMP está desativado:


ICMP ativado:


Como pode ser visto na captura de tela, isso não impediu todo mundo, mas muitos. Para coletar dados sobre o quanto eles querem invadir você, você pode 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 

Você ainda pode monitorar seu servidor, por exemplo, verificando a disponibilidade de uma porta específica:

 Test-NetConnection 192.168.0.1 -Port 3389 

5. Nem todos os nomes são igualmente bons


Usando outro script, obtendo os nomes de usuário mais populares que foram atacados.

Se você estiver instalando os Serviços de Área de Trabalho Remota, é altamente recomendável que você evite esses nomes. Em combinação com uma senha fraca, você pode garantir uma conta de hackers rápida.

Para sua conveniência, a lista de nomes "ruins" foi reescrita em uma tabela:
Tentativas de hackersNome da conta
40.IRINA
41.Página inicial
42.SKLAD
42.sqlserver
42.Sys
42.KASSA2
43ADMIN1
43PC
45CONVIDADO
46.Anfitrião
46.Auditoria
49.USER3
54TEST1
55BUH2
66.USER
66.GERENTE
75ADM
77.NET.v.4.5
80BUH1
86BACKUP
89Buh
90ADMIN
1001
116SERVIDOR
122Usuário2
128À نى È ي È ًٌٍ À ٍ Î ً
147TESTE
219USER1
308USER
330Admin
9299ADMINISTRADOR
13972ADMINISTRADOR

Você pode obter a mesma lista no seu servidor com 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. Coisas óbvias


Bem, terminamos o artigo com as coisas óbvias:

  1. Criar um gateway - Para gerenciar uma grande infraestrutura, é melhor se proteger com um único ponto de entrada. Mais detalhadamente .
  2. Instale atualizações. Em particular, em servidores de batalha.
  3. Desative os serviços que você não usa - esta é uma área extra para atacar.
  4. Use o Server Core, ele tem a menor área de ataque e o menor número de reinicializações ao instalar atualizações
  5. Servidor de área de trabalho remota para vários usuários é uma má idéia. Siga o princípio de uma pessoa ou serviço - um servidor.
  6. Faça backups e não deixe de testá-los. Um backup que não foi testado não é um backup.

Esperamos que os cinco primeiros pontos tenham sido úteis e interessantes para você.

Oferecemos uma tarifa atualizada do UltraLite Windows VDS por 99 rublos com o Windows Server 2019 Core instalado.

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


All Articles