Найти тему

Чек-лист безопасности Windows Server - проверка для экспертов

Оглавление

1. Правильно вводим компьютер в AD

Не используйте пользователей с административными привилегиями для ввода компьютеров в Active Directory. Никто не гарантирует того, что на компьютере сотрудника уже не появился Keylogger. Имея же отдельную учетную запись. Злоумышленник похитивший учетные данные сможет только добавить в AD еще компьютеров.

1.1. Создаем нового пользователя

Для этого нужно перейти в ADUC (Active directory users and Computers). Нажать на пустое место в папке Users and Computers и создать пользователя. Для простоты назовем его JoinAdmin.

1.2. Делегируем полномочия

После того, как пользователь был создан, ему нужно назначить полномочия. Для этого нужно нажать ПКМ по папке «Users» и выбрать «Delegate Control». Жмём «Далее» и выбираем нашего админа.

Мы хотим чтобы пользователь выполнять только одну функцию, поэтому выбираем второй вариант.

-2

Далее выбираем «Computer objects» и все его подпункты.

-3
-4

Используйте этого юзера и не беспокойтесь о том, что кто-то мог украсть пароль от администратора.

2. Controlled folder access

В Windows Server 2019 появилась очень недооцененная возможность — controlled folder access. Она запрещает доступ к записи программам, которых нет в белом списке на выбранных папках или разделах.

Её включение поможет защитить данные от вирусов-шифровальщиков даже если ваш сервер был заражен. Однако это не обезопасит ваши данные от похищения, их можно будет прочитать.

Включить функцию можно в центре безопасности 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 битные программы работают на 64 битных через слой совместимости — SYSWOW64. Отключение этого компонента делает несовместимым все 32 битное ПО, в том числе и вирусы.

Сами по себе 32 битные приложения более уязвимые, 64-битные программы не поддаются атаке на переполнение буфера и через них гораздо труднее исполнить код который этими программами не предусмотрен. Если на сервере работают только встроенные компоненты или только 64 битные программы, обязательно удалите этот компонент.

А помните Wannacry, который гулял через SMB1? SMB первой версии до сих пор является стандартным компонентом Windows Server и установлен по умолчанию в каждой редакции.
Wannacry проникал через уязвимость EternalBlue, уязвимость пропатчили, но осадочек остался.
Эта команда удалить и SMB1 и SYSWOW64:

Remove-WindowsFeature WoW64-Support, FS-SMB1

Воспринимать рекомендацию стоит не как повод для удаления этих конкретных компонентов, но как отключение всех неиспользуемых компонентов в целом.

4. Отключите ping

По умолчанию компьютер под управлением Windows отвечает на ICMP только в локальной сети. Отключение ICMP немного повышает безопасность вашего сервера. Отчасти, это обусловлено тем, что на форумах кулхацкеров и других script kiddie существуют руководства, как нужно искать цели, которые можно брутфорсить.

Для того, чтобы показать что вы выиграете, если отключите ICMP, было создано два сервера. На обоих из них был открыт RDP, однако один из серверов не отвечал на ICMP.

ICMP отключен:

-5

ICMP включен:

-6

Как можно видеть из скриншота, это остановило не всех, но многих. Собрать данные о том, насколько сильно хотят взломать вас, можно этим скриптом:

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. Защитить службу удаленных рабочих столов (RDP).

1. Блокировать RDP-подключения для пользователей с пустым паролем.

Наличие пользователей без паролей недопустимо, но если этого миновать не удается, то можно хотя бы запретить подключение к RDP. Для этого открываем Пуск → Средства администрирования.

В открывшемся каталоге, запускаем Локальная политика безопасности.

В окне локальный политик безопасности, слева, выбираем Локальные политики → Параметры безопасности. В основной части окна, находим “Учетные записи: Разрешить использование пустых паролей только при консольном входе”.

Выбираем этот пункт двойным кликом и переводим переключатель в положение “Отключен”. Нажимаем кнопку “OK”.

2. Поменять стандартный TCP-порт RDP.

Замена номеров TCP-портов стандартных сервисов на другие значения, вполне может повысить безопасность сервера, главное не забыть новый номер порта.

Для замены порта:

1. открываем редактор Реестра Windows – Windows + R

2. На всякий случай, создаем резервную копию реестра (Файл → Экспорт)

3. Разворачиваем ветку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp и, в правой доле окна, находим параметр PortNumber.

4. Открываем параметр двойным кликом мыши. В открывшемся окне выбираем Систему исчисления: Десятичная, указываем новое значение порта, нажимаем кнопку “OK” и закрываем окно редактора реестра.

5. Чтобы была возможность подключиться к серверу, создаем соответствующее правило для Брандмауэра Windows.

6. Настроить шлюз службы терминалов.

Служба “Шлюз TS (служб удаленных рабочих столов)” позволяет обезопасить подключение к удаленному рабочему столу путем использования протокола HTTPS(SSL), тем самым избавляя системного администратора от необходимости настройки VPN. Инструмент способен комплексно контролировать доступ к машинам, а также устанавливать правила авторизации и требования к удаленным пользователям, например:

  • Пользователи или группы пользователей, которым разрешено подключаться к внутренним сетевым ресурсам;
  • Сетевые ресурсы, к которым могут подключаться пользователи;
  • Должны ли клиентские компьютеры иметь членство в Active Directory;
  • Необходимо ли клиентам использовать проверку подлинности на основе смарт-карт или пароля, или они могут использовать один из вышеперечисленных способов аутентификации.

Логика работы работы шлюза удаленных рабочих столов требует использования отдельной машины. Однако, не запрещает использовать самостоятельную виртуальную машину.

На забудьте настроить групповую политику через диспетчера шлюза удаленных рабочих столов.

Советуем настроить таймауты сессий. И действия по их истечении. Рекомендуем отключать сеанс, чтобы фоновые пользовательские процессы не отнимали процессорное время.

7. Немного стандартных советов

  1. Устанавливайте обновления. В особенности, на боевые сервера.
  2. Отключите службы, которыми вы не пользуетесь – это лишняя площадь для атаки.
  3. Используйте Server Core, он имеет наименьшую площадь атаки и наименьшее количество перезагрузок при установке обновлений
  4. Сервер удаленных рабочих столов на несколько пользователей – плохая идея. Придерживайтесь принципа один человек или служба – один сервер.
  5. Делайте резервные копии и обязательно тестируйте их. Бэкап, который не был протестирован не является бэкапом.

Наша компания предлагает услуги обслуживания и сопровождения IT-инфраструктуры любого бизнеса под ключ. Оставить заявку и получить расчет можно здесь.