Start typing to search across invoices, services, domains, tickets, and more...
Windows-сервер в интернете уже через несколько минут после запуска сканируют на порт 3389 и начинают подбирать пароль, поэтому защита Windows VPS — первое, что нужно сделать. Для Windows Server 2016/2019/2022 разберём: надёжный пароль и переименование Administrator, политику блокировки учётных записей, проверку подлинности на уровне сети (NLA) для RDP, доступ к RDP только с вашего IP, отключение лишних служб, проверку Защитника Windows и аудит неудачных входов (событие 4625) через Get-WinEvent.
Используйте пароль от 16 символов из букв разного регистра, цифр и символов и нигде его не повторяйте. Почти все инструменты перебора атакуют имя Administrator, поэтому переименование отсекает большую часть массовых атак.
# Set a new strong password (you will be prompted, nothing is echoed)
net user Administrator *
# Rename the built-in Administrator account
Rename-LocalUser -Name "Administrator" -NewName "srvadmin"
Get-LocalUser | Format-Table Name,Enabled,LastLogonПолитика блокировки временно блокирует учётную запись после нескольких неверных паролей и сильно замедляет перебор. Её также можно задать в secpol.msc → «Политики учётных записей» → «Политика блокировки учётной записи».
# Lock an account for 30 minutes after 5 failed attempts within 30 minutes
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
net accountsNLA требует проверки подлинности до создания полноценной RDP-сессии: это снижает нагрузку от неаутентифицированных подключений и закрывает часть уязвимостей RDP. Отметьте «Разрешать подключения только с компьютеров, на которых работает удалённый рабочий стол с проверкой подлинности на уровне сети» в «Свойствах системы → Удалённый доступ» или выполните:
$rdp = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $rdp -Name UserAuthentication -Value 1
Get-ItemProperty -Path $rdp -Name UserAuthentication, PortNumberЭто самая эффективная защита RDP от перебора. Команды изменяют встроенные правила брандмауэра для удалённого рабочего стола, разрешая подключение только с IP или подсети вашего офиса. Имена правил одинаковы в системах на любом языке. Если вы меняли порт RDP и создали своё правило, задайте -RemoteAddress и для него.
# Built-in Remote Desktop rules (names are the same on every OS language)
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress 203.0.113.10, 198.51.100.0/24
Get-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP | Get-NetFirewallAddressFilter
# Undo: allow RDP from anywhere again
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP -RemoteAddress AnyКаждая работающая служба — потенциальная точка атаки. Выведите список запущенных служб и остановите лишние. Диспетчер печати (Spooler) на сервере почти не нужен и имел серьёзные уязвимости. Не отключайте системные службы, назначение которых вам неизвестно.
Get-Service | Where-Object { $_.Status -eq "Running" } | Sort-Object DisplayName | Format-Table Name,DisplayName
# Example: print spooler is rarely needed on a server
Stop-Service -Name Spooler
Set-Service -Name Spooler -StartupType DisabledВ Windows Server 2016 и новее встроен антивирус Microsoft Defender. Убедитесь, что защита в реальном времени включена, обновите сигнатуры и запустите быструю проверку.
Get-MpComputerStatus | Select-Object AMServiceEnabled,RealTimeProtectionEnabled,AntivirusSignatureLastUpdated
Set-MpPreference -DisableRealtimeMonitoring $false
Update-MpSignature
Start-MpScan -ScanType QuickScanСобытие 4625 фиксирует неудачную попытку входа. Команды ниже показывают последние неудачные входы и IP-адреса с наибольшим числом попыток за сутки — так видно, идёт ли перебор, и подозрительные IP можно заблокировать правилом брандмауэра.
# Make sure failed logons are audited (GUID = "Logon" subcategory, language independent)
auditpol /set /subcategory:"{0CCE9215-69AE-11D9-BED3-505054503030}" /failure:enable
# Last 20 failed logons
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}
# Top attacking IPs in the last 24 hours
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddDays(-1)} |
ForEach-Object { $_.Properties[19].Value } | Group-Object | Sort-Object Count -Descending |
Select-Object -First 10 Count, NameЭто снижает «шум» от автоматических сканеров, но не заменяет сложный пароль и ограничение по IP. Лучше сочетать все три меры; см. инструкцию «Смена порта RDP в Windows».
Разрешите диапазон адресов вашего провайдера или подключайтесь через промежуточный сервер или VPN с фиксированным IP.
Обычно это локальный вход или адрес не был записан на этапе NLA. Если таких событий много, сопоставьте их с журналом брандмауэра.
Если проблема не решена, создайте тикет — техподдержка IMIDC работает 24/7. Укажите IP сервера, версию ОС, выполненные команды и приложите скриншот ошибки, чтобы мы быстрее нашли причину.