Rendre Windows Server plus sûr

Dans cet article, l'auteur aimerait donner quelques bons conseils sur l'administration des serveurs Windows, que pour une raison quelconque je n'ai pas pu trouver sur Internet.

En suivant ces principes, vous sécuriserez considérablement vos serveurs Windows dans les environnements locaux et publics.


1. Nous entrons correctement l'ordinateur dans AD


N'utilisez pas d'utilisateurs disposant de privilèges administratifs pour entrer des ordinateurs dans Active Directory. Personne ne garantit que Keylogger n'est pas déjà apparu sur l'ordinateur de l'employé. Avoir un compte séparé. Un attaquant qui a volé des informations d'identification peut uniquement ajouter plus d'ordinateurs à AD.

1.1. Créer un nouvel utilisateur


Pour ce faire, accédez à ADUC (Utilisateurs et ordinateurs Active Directory). Cliquez sur un espace vide dans le dossier Utilisateurs et ordinateurs et créez un utilisateur. Pour simplifier, appelons-le JoinAdmin.

1.2. Déléguer l'autorité


Une fois l'utilisateur créé, il doit se voir attribuer des autorisations. Pour ce faire, cliquez avec le bouton droit sur le dossier "Utilisateurs" et sélectionnez "Déléguer le contrôle". Cliquez sur "Suivant" et sélectionnez notre administrateur.


Nous voulons que l'utilisateur n'exécute qu'une seule fonction, nous choisissons donc la deuxième option.


Ensuite, sélectionnez "Objets informatiques" et tous ses sous-éléments.



Utilisez cet utilisateur et ne vous inquiétez pas que quelqu'un puisse voler le mot de passe à l'administrateur.

2. Accès contrôlé aux dossiers


Windows Server 2019 a introduit une fonctionnalité très sous-estimée - l'accès aux dossiers contrôlé. Il interdit l'accès à l'enregistrement pour les programmes qui ne figurent pas dans la liste blanche des dossiers ou sections sélectionnés.

L'activer permettra de protéger les données contre les virus de rançongiciels même si votre serveur a été infecté. Cependant, cela ne protège pas vos données contre le vol, elles peuvent être lues.

Vous pouvez activer la fonctionnalité dans le Centre de sécurité Windows ou via Powershell:

Set-MpPreference -EnableNetworkProtection Enabled 

Ajouter des programmes autorisés:

Les programmes autorisés peuvent être ajoutés via le Centre de sécurité Windows et via Powershell, vous devez entrer le chemin d'accès complet aux fichiers exécutables, séparés par des virgules.

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

Ajouter des dossiers protégés:

Les dossiers sont ajoutés exactement de la même manière que les programmes. Par exemple, avec cette commande, nous ajoutons l'intégralité du lecteur C::

 Set-MpPreference -ControlledFolderAccessProtectedFolders "C:\" 

3. SYSWOW64 et SMB


Tous les programmes 32 bits s'exécutent sur 64 bits via la couche de compatibilité - SYSWOW64. La désactivation de ce composant rend incompatibles tous les logiciels 32 bits, y compris les virus.

En soi, les applications 32 bits sont plus vulnérables, les programmes 64 bits ne peuvent pas être attaqués par des débordements de tampon, et à travers eux, il est beaucoup plus difficile d'exécuter du code qui n'est pas fourni par ces programmes. Si seuls des composants intégrés ou que des programmes 64 bits fonctionnent sur le serveur, assurez-vous de supprimer ce composant.

Vous souvenez-vous de Wannacry qui a traversé SMB1? La première version SMB est toujours un composant standard de Windows Server et est installée par défaut dans chaque édition.
Wannacry a pénétré la vulnérabilité EternalBlue, la vulnérabilité a été corrigée, mais les sédiments sont restés.
Cette commande supprime SMB1 et SYSWOW64:

 Remove-WindowsFeature WoW64-Support, FS-SMB1 


Cela vaut la peine de prendre la recommandation non pas comme une excuse pour supprimer ces composants spécifiques, mais comme désactivant tous les composants inutilisés en général.

4. Désactivez le ping


Par défaut, un ordinateur Windows ne répond à ICMP que sur le réseau local. La désactivation d'ICMP augmente légèrement la sécurité de votre serveur. Cela est en partie dû au fait qu'il existe des guides sur le kulhacker et d'autres forums de script pour enfants sur la façon de rechercher des objectifs pouvant être une force brute.

Afin de montrer que vous gagnerez si vous désactivez ICMP, deux serveurs ont été créés. RDP a été ouvert sur les deux, mais l'un des serveurs n'a pas répondu à ICMP.

ICMP est désactivé:


ICMP activé:


Comme le montre la capture d'écran, cela n'a pas arrêté tout le monde, mais beaucoup. Pour collecter des données sur combien ils veulent vous pirater, vous pouvez utiliser ce 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 

Vous pouvez toujours surveiller votre serveur, par exemple, en vérifiant la disponibilité d'un port spécifique:

 Test-NetConnection 192.168.0.1 -Port 3389 

5. Tous les noms ne sont pas également bons


En utilisant un autre script, en retirant les noms d'utilisateurs les plus populaires qui ont été attaqués.

Si vous installez les services Bureau à distance, nous vous recommandons fortement d'éviter ces noms. En combinaison avec un mot de passe faible, vous pouvez garantir un compte de piratage rapide.

Pour votre commodité, la liste des «mauvais» noms a été réécrite dans un tableau:
Tentatives de piratageNom du compte
40IRINA
41Accueil
42SKLAD
42sqlserver
42Sys
42KASSA2
43ADMIN1
43PC
45INVITÉ
46Hôte
46Audit
49UTILISATEUR3
54TEST1
55BUH2
66UTILISATEUR
66GESTIONNAIRE
75ADM
77.NET.v.4.5
80BUH1
86SAUVEGARDE
89Buh
90ADMIN
1001
116SERVEUR
122Utilisateur2
128À نى È ي È ًٌٍ À ٍ Î ً
147TEST
219USER1
308UTILISATEUR
330Admin
9299ADMINISTRATEUR
13972ADMINISTRATEUR

Vous pouvez obtenir la même liste sur votre serveur avec ce 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. Choses évidentes


Eh bien, nous terminons l'article avec les choses évidentes:

  1. Créer une passerelle - Pour gérer une grande infrastructure, il est préférable de vous sécuriser avec un seul point d'entrée. Plus en détail .
  2. Installez les mises à jour. En particulier, sur les serveurs de combat.
  3. Désactivez les services que vous n'utilisez pas - il s'agit d'une zone supplémentaire à attaquer.
  4. Utilisez Server Core, il a le moins de zone d'attaque et le moins de redémarrages lors de l'installation des mises à jour
  5. Le serveur Bureau à distance pour plusieurs utilisateurs est une mauvaise idée. Adhérez au principe d'une personne ou d'un service - un serveur.
  6. Faites des sauvegardes et assurez-vous de les tester. Une sauvegarde qui n'a pas été testée n'est pas une sauvegarde.

Nous espérons que les cinq premiers points vous ont été utiles et intéressants.

Nous proposons un tarif UltraLite Windows VDS mis à jour pour 99 roubles avec Windows Server 2019 Core installé.

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


All Articles