使Windows Server更安全

在本文中,作者将提供一些管理Windows服务器的好技巧,由于某些原因,我在Internet上找不到这些技巧。

遵循这些原则,您将极大地保护本地和公共环境中基于Windows的服务器。


1.我们在AD正确输入计算机


不要使用具有管理特权的用户在Active Directory中输入计算机。 没有人保证Keylogger尚未出现在员工的计算机上。 有一个单独的帐户。 窃取凭据的攻击者只能向AD添加更多计算机。

1.1。 创建一个新用户


为此,请转到ADUC(Active Directory用户和计算机)。 单击“用户和计算机”文件夹中的空白区域,然后创建一个用户。 为简单起见,我们将其称为JoinAdmin。

1.2。 委托权限


创建用户后,需要为其分配权限。 为此,右键单击“用户”文件夹,然后选择“代理控件”。 单击“下一步”,然后选择我们的管理员。


我们希望用户仅执行一项功能,因此我们选择第二项。


接下来,选择“计算机对象”及其所有子项。



使用此用户,不必担心有人会从管理员那里窃取密码。

2.受控的文件夹访问


Windows Server 2019引入了一个非常低估的功能-受控的文件夹访问。 它禁止访问不在所选文件夹或部分的白名单中的程序的录像。

即使您的服务器已被感染,将其打开也将有助于保护数据免受勒索软件病毒的侵害。 但是,这不能保护您的数据免遭盗窃,可以读取它。

您可以在Windows安全中心或通过Powershell启用该功能:

Set-MpPreference -EnableNetworkProtection Enabled 

添加允许的程序:

可以通过Windows安全中心添加允许的程序,通过Powershell,您需要输入可执行文件的完整路径,并用逗号分隔。

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

添加受保护的文件夹:

文件夹的添加方式与程序完全相同。 例如,使用此命令,我们添加了整个C:驱动器:

 Set-MpPreference -ControlledFolderAccessProtectedFolders "C:\" 

3. SYSWOW64和SMB


所有32位程序都通过兼容层SYSWOW64在64位上运行。 禁用此组件将使所有32位软件(包括病毒)不兼容。

就其本身而言,32位应用程序更容易受到攻击,64位程序不能受到缓冲区溢出的攻击,并且通过它们来执行这些程序未提供的代码要困难得多。 如果服务器上仅工作嵌入式组件或仅64位程序,请确保删除此组件。

您还记得走过SMB1的Wannacry吗? 第一个版本SMB仍然是Windows Server的标准组件,默认情况下在每个版本中都安装。
Wannacry渗透了EternalBlue漏洞,该漏洞已修补,但沉积物仍然存在。
此命令同时删除SMB1和SYSWOW64:

 Remove-WindowsFeature WoW64-Support, FS-SMB1 


建议不要将建议作为删除这些特定组件的借口,而应将所有未使用的组件禁用。

4.禁用ping


默认情况下,基于Windows的计算机仅在本地网络上响应ICMP。 禁用ICMP会稍微提高服务器的安全性。 部分原因是,在kulhacker和其他脚本小子论坛上都有关于如何寻找可能成为蛮力目标的指南。

为了表明如果禁用ICMP,您将获胜,创建了两个服务器。 RDP在两个服务器上均已打开,但是其中一台服务器未响应ICMP。

ICMP已禁用:


已启用ICMP:


从屏幕截图可以看出,这并没有阻止所有人,而是阻止了许多人。 要收集有关他们想对您进行黑客攻击的数据,可以使用以下脚本:

 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 

您仍然可以监视服务器,例如,通过检查特定端口的可用性:

 Test-NetConnection 192.168.0.1 -Port 3389 

5.并非所有名字都一样好


使用另一个脚本,提取出受到攻击的最受欢迎的用户名。

如果要安装远程桌面服务,我们强烈建议您避免使用这些名称。 结合弱密码,您可以保证拥有一个快速的黑客帐户。

为了方便起见,“错误”名称列表已被重写为表格:
骇客企图帐号名称
40伊琳娜
41首页
42斯凯德
42sqlserver
42系统
42卡萨2
43管理员1
43个人电脑
45来宾
46主持人
46稽核
49用户3
54测试1
55BUH2
66用户名
66经理
75ADM
77.NET.v.4.5
80BUH1
86备份
89h
90管理员
1001个
116伺服器
122用户2
128ÀنييÈÀٍ ً
147测试
219USER1
308用户名
330管理员
9299行政人员
13972行政人员

您可以使用以下脚本在服务器上获得相同的列表:

 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.明显的事情


好吧,我们以显而易见的事情结束了本文:

  1. 创建网关-要管理大型基础架构,最好使用单个入口点保护自己。 更详细地
  2. 安装更新。 特别是在战斗服务器上。
  3. 禁用您不使用的服务-这是一个额外的攻击区域。
  4. 使用服务器核心,安装更新时它具有最小的攻击范围和最少的重新启动次数
  5. 对于多个用户而言,远程桌面服务器是一个坏主意。 坚持一个人或一个服务的原则-一台服务器。
  6. 进行备份,并确保对其进行测试。 未经测试的备份不是备份。

我们希望前五点对您有用且有趣。

我们提供了已更新的UltraLite Windows VDS关税,已安装Windows Server 2019 Core的价格为99卢布。

Source: https://habr.com/ru/post/zh-CN484396/


All Articles