Files
fix-DAK-PC/README.md
T
PTah d1e594f057 docs: проверенный сценарий DAK-PC (фазы 3-5 + RestoreTls)
Добавлен DAK-PC-RESOLVED.md, README и runbook отражают фактическое решение
без repair install; перечислены внешние задачи планировщика для отключения.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-22 16:19:58 +10:00

109 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# fix-DAK-PC — локальная починка RDP/TLS на Windows 10/11
Набор скриптов для **локального** (с консоли проблемного ПК) восстановления RDP, когда клиент показывает «внутренняя ошибка», в журнале **1057** / **Schannel 36870**, TermService сбрасывает `SSLCertificateSHA1Hash`.
Сценарий проверен на **DAK-PC** (Win10 Pro 19045): корень — сломанная привязка TLS-сертификата RDP; обход `SecurityLayer=0`; **лечение — `Fix-RdpTls.ps1` фазы 35 + `-RestoreTls`** (repair install не понадобился). Подробно: [docs/DAK-PC-RESOLVED.md](docs/DAK-PC-RESOLVED.md).
## Проверенная последовательность (DAK-PC)
1. `.\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests``FAIL=0`
2. `.\Fix-RdpTls.ps1` → при неудачном нативном сбросе: **фазы 35** (создать cert, ACL, привязка)
3. `.\Fix-RdpTls.ps1 -RestoreTls``SecurityLayer=2`
4. Сброс кэша RDP на **клиенте**
Ранее для доступа: `.\Fix-RdpTls.ps1 -EmergencyRdpOnly` (`SecurityLayer=0`).
**Не из репозитория:** задачи планировщика `RdpBindFix`, `RdpNativeReset`, `CryptoRepair.ps1` — отключить после успеха.
## Быстрый старт (за компом 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 -IncludeAdminTests
```
Ожидание: `FAIL=0`. Если `Set-ExecutionPolicy` ругается на GPO — для сессии достаточно `Process=Bypass` или запуск:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Invoke-RdpRepairSelfTest.ps1 -IncludeAdminTests
```
Самотесты проверяют синтаксис, загрузку модулей, чтение cert store и ловушки PowerShell 5.1 с одним cert; **не** прогоняют полный `Fix-RdpTls.ps1` (очистку store, reboot, привязку).
5. **Полный интерактивный ремонт**:
```powershell
.\Fix-RdpTls.ps1
```
6. Если TLS не удаётся починить — **экстренный доступ** (без TLS):
```powershell
.\Fix-RdpTls.ps1 -EmergencyRdpOnly
```
7. **Возврат TLS** (после успешной привязки cert — фазы 3–5 или нативный cert):
```powershell
.\Fix-RdpTls.ps1 -RestoreTls
```
Если Hash AFTER остаётся пустым при любом cert — см. [docs/REPAIR-INSTALL.md](docs/REPAIR-INSTALL.md).
## Структура
| Файл | Назначение |
|------|------------|
| `scripts/Fix-RdpTls.ps1` | Главный сценарий: диагностика → очистка → cert → привязка → проверка |
| `scripts/Invoke-RdpRepairSelfTest.ps1` | Самотесты функций и синтаксиса |
| `scripts/lib/RdpRepair.Common.ps1` | Общие функции |
| `docs/DAK-PC-RESOLVED.md` | **Фактический** сценарий успеха на DAK-PC |
| `docs/REPAIR-INSTALL.md` | Запасной план: repair install (если Hash AFTER пустой) |
| `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).