feat: локальные скрипты починки RDP/TLS для Windows (fix-DAK-PC)

Fix-RdpTls.ps1 с фазами диагностики, cert, ACL, привязкой; самотесты; docs repair install и возврат TLS.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-06-12 19:05:29 +10:00
commit 14348a0181
9 changed files with 1055 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
# fix-DAK-PC — локальная починка RDP/TLS на Windows 10/11
Набор скриптов для **локального** (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале **1057** / **Schannel 36870**, TermService сбрасывает `SSLCertificateSHA1Hash`.
Сценарий проверен на **DAK-PC** (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход `SecurityLayer=0`; полное лечение — repair install + возврат TLS.
## Быстрый старт (за компом DAK-PC)
1. Скопируйте репозиторий или папку `scripts` на ПК (флешка, `git clone`, общая шара).
2. **PowerShell от имени администратора**.
3. Разрешите выполнение (один раз в этой сессии):
```powershell
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
cd C:\path\to\fix-DAK-PC\scripts
```
4. **Самотесты** (обязательно):
```powershell
.\Invoke-RdpRepairSelfTest.ps1
```
5. **Полный интерактивный ремонт**:
```powershell
.\Fix-RdpTls.ps1
```
6. Если TLS не удаётся починить — **экстренный доступ** (без TLS):
```powershell
.\Fix-RdpTls.ps1 -EmergencyRdpOnly
```
7. После **repair install** Windows и успешной привязки cert — **возврат TLS**:
```powershell
.\Fix-RdpTls.ps1 -RestoreTls
```
## Структура
| Файл | Назначение |
|------|------------|
| `scripts/Fix-RdpTls.ps1` | Главный сценарий: диагностика → очистка → cert → привязка → проверка |
| `scripts/Invoke-RdpRepairSelfTest.ps1` | Самотесты функций и синтаксиса |
| `scripts/lib/RdpRepair.Common.ps1` | Общие функции |
| `docs/REPAIR-INSTALL.md` | Repair install Windows (на месте) |
| `docs/RETURN-TO-TLS.md` | Возврат SecurityLayer=2 после починки cert |
| `docs/TROUBLESHOOTING.md` | События, типичные ошибки, GPO |
| `docs/LOCAL-RUNBOOK.md` | Пошаговый сценарий за консолью DAK-PC |
## Фазы `Fix-RdpTls.ps1`
| Фаза | Действие |
|------|----------|
| 0 | Самопроверка: админ, ОС, службы, модули |
| 1 | Диагностика → отчёт `%ProgramData%\RdpRepair\report-*.txt` |
| 2 | Очистка просроченных/битых cert в `Remote Desktop` и `My` |
| 3 | Нативный сброс (выкл/вкл RDP, очистка store) + опциональный reboot |
| 4 | Создание cert (цепочка провайдеров: Enhanced RSA → default) |
| 5 | ACL на приватный ключ (`NETWORK SERVICE`, `SYSTEM`) |
| 6 | Привязка (`reg` + WMI), проверка **Hash BEFORE/AFTER** |
| 7 | `-EmergencyRdpOnly`: SecurityLayer=0 |
| 8 | `-RestoreTls`: SecurityLayer=2 при успешной привязке |
## Критерий успеха TLS
После перезапуска `TermService`:
- `SSLCertificateSHA1Hash` в реестре **совпадает** с thumbprint cert в store.
- События **1057** / **36870** не появляются при тестовом подключении RDP.
- `SecurityLayer` = **2** (как на рабочих ПК в домене).
Если **Hash AFTER** пустой при любом cert — см. [docs/REPAIR-INSTALL.md](docs/REPAIR-INSTALL.md).
## Клонирование
```bash
git clone https://git.kalinamall.ru/PapaTramp/fix-DAK-PC.git
```
## Лицензия
Внутреннее использование (PapaTramp / kalinamall).