Перейти к основному контенту

Регистрация и мониторинг неудачных попыток входа через RDP

intro-windows-rdp-audit-ph.png

Введение

RDP (Remote Desktop Protocol) — это критически важный сервис для удаленного управления серверами. Однако он часто становится основной мишенью для злоумышленников, проводящих атаки методом грубой силы (brute-force) и подбора учетных данных.

Регистрация и анализ неудачных попыток входа позволяют:

  • Выявлять атаки в режиме, близком к реальному времени.
  • Превентивно блокировать IP-адреса злоумышленников.
  • Аудит безопасности серверов и соответствие политикам.
  • Расследовать инциденты безопасности.

Эта статья описывает, как система настроена для регистрации таких событий и какие инструменты доступны для их анализа.

Где и как регистрируются события входа?

Основным источником информации о попытках входа в Windows являются журналы безопасности Windows. Для корректной работы необходимо настроить политику аудита.

Настройка политики аудита (Audit Policy)

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

Рекомендуемые настройки групповой политики (gpedit.msc / Local Group Policy Editor):

image.png

  1. Откройте Редактор локальной групповой политики (Local Group Policy Editor).
  2. Перейдите по пути: Конфигурация компьютера (Computer Configuration) -> Конфигурация Windows (Windows Settings) -> Параметры безопасности (Security Settings) -> Локальные политики (Local Policies) -> Политика аудита (Audit Policy).
  3. Настройте следующие политики:
    • Аудит событий входа в систему (Audit logon events) -> Аудит успехов и неудач (Audit successes and failures)
      • Регистрирует факт попытки входа в систему.
      • image.png
    • Аудит доступа к учетным записям (Audit account logon events) -> Аудит неудач (Audit failures)
      • Регистрирует неудачные попытки проверки учетных данных. Именно это событие является основным маркером атаки brute-force.
      • image.png

После применения политики (через gpupdate /force или перезагрузку) события начнут записываться в журнал безопасности.

Ключевые события в Журнале безопасности

Для мониторинга неудачных попыток входа через RDP обращайте внимание на следующие Коды событий (Event ID):

Код события Описание Уровень угрозы
4625 Неудачная попытка входа в систему.
Содержит информацию об имени учетной записи, коде ошибки (например, 0xC0000064 — неверное имя, 0xC000006A — неверный пароль) и IP-адресе инициатора.
Высокий
4625 (с типом входа 3) Особое внимание! Тип входа 3 (Network) указывает на попытку входа по сети, что характерно для RDP-подключений. Критический
4776 Контроллер домена пытался проверить учетные данные для учетной записи. Содержит имя пользователя и IP-адрес рабочей станции. Высокий

Важно: Событие 4625 с типом входа 3 — это основной индикатор неудачной RDP-атаки.

Анализ событий и реагирование

Просматривать журналы вручную неэффективно. Рекомендуется использовать автоматизированные методы.

Просмотр через «Средство просмотра событий» (Event Viewer)

image.png

  1. Откройте eventvwr.msc (Средство просмотра событий / Event Viewer).
  2. Перейдите в Журналы Windows (Windows Logs) -> Безопасность (Security).
  3. Используйте фильтр для поиска конкретных событий:
    • В правой панели нажмите Фильтровать текущий журнал (Filter Current Log...).
    • В поле <Все коды событий> (All Event IDs) укажите 4625.image.png
    • Проанализируйте результаты, обращая внимание на поля:
      • Учетные данные (Account) -> Имя пользователя (Account Name)
      • Адрес сети (Network) -> Адрес источника (Source Address)
      • Подробности (Details) -> Код ошибки (Error Code)

image.png

Автоматизация с помощью PowerShell

Скрипт PowerShell позволяет быстро извлекать и анализировать неудачные попытки входа.

# Поиск неудачных попыток входа (Event ID 4625) за последние 24 часа
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=(Get-Date).AddHours(-24)} |
    ForEach-Object {
        $event = $_
        $xml = [xml]$event.ToXml()
        
        # Извлечение данных из XML-структуры события
        $UserName = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq "TargetUserName"}).'#text'
        $IpAddress = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq "IpAddress"}).'#text'
        $LogonType = ($xml.Event.EventData.Data | Where-Object {$_.Name -eq "LogonType"}).'#text'

        # Вывод информации, если это сетевая попытка входа (LogonType 3)
        if ($LogonType -eq 3) {
            [PSCustomObject]@{
                TimeCreated = $event.TimeCreated
                UserName = $UserName
                IpAddress = $IpAddress
                LogonType = $LogonType
                Message = $event.Message
            }
        }
    } | Format-Table -AutoSize

Запуск PowerShell скрипта

Для выполнения данного скрипта необходимо:

  1. Запустить PowerShell с правами администратора:
    • Нажмите Пуск (Start)
    • Введите PowerShell
    • Нажмите правой кнопкой мыши на Windows PowerShell и выберите Запуск от имени администратора (Run as administrator)
  2. Разрешить выполнение скриптов (если требуется):
    • По умолчанию выполнение скриптов может быть запрещено. Чтобы разрешить выполнение, введите:
    • Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    • Подтвердите запрос на изменение политики выполнения, введя Y и нажав Enter
  3. Способ выполнения скрипта:
    • Вариант A: Копирование и вставка
      • Скопируйте весь код скрипта
      • Вставьте его в окно PowerShell (правой кнопкой мыши для вставки)
      • Нажмите Enter для выполнения
    • Вариант B: Сохранение в файл
      • Сохраните код в файл с расширением .ps1 (например, CheckFailedLogons.ps1)
      • В PowerShell перейдите в папку с файлом: cd C:\Path\To\Script\
      • Выполните скрипт: .\CheckFailedLogons.ps1

Этот скрипт выведет таблицу с IP-адресами, с которых происходили атаки, и именами атакованных учетных записей.

image.png

Внимание! Скрипт может обрабатываться долго до того как выведет информацию.

Рекомендации по защите

Помимо мониторинга, мы рекомендуем клиентам принять следующие меры для усиления безопасности:

  1. Использование нестандартного порта RDP: Измените стандартный порт TCP/3389 на другой в настройках службы.
  2. IP-фильтрация: Настройте брандмауэр на разрешение RDP-подключений только из доверенных IP-адресов.
  3. Реализация туннельного подключения: Запретите прямое RDP-подключение из интернета.
  4. Сильная парольная политика: Обязательное использование сложных и длинных паролей.
  5. Account Lockout Policy: Настройте политику блокировки учетной записи после определенного количества неудачных попыток (например, 5 попыток за 2 минуты).
  6. Многофакторная аутентификация  (Multi-Factor Authentication, MFA): Где это возможно, внедрите MFA для RDP-подключений.

Заключение

Регистрация и анализ неудачных попыток входа через RDP — это неотъемлемая часть защиты инфраструктуры хостинга. Наша система настроена для детального аудита этих событий, что в сочетании с предоставленными инструментами анализа и рекомендациями по защите позволяет нашим клиентам значительно повысить уровень безопасности своих серверов.

При обнаружении подозрительной активности рекомендуем немедленно принять меры: заблокировать IP-адрес злоумышленника через брандмауэр и проверить учетные записи, на которые производилась атака.