Включаем RDP на Windows 10 Pro через Ansible

У меня по умолчанию на рабочих станциях (OS: Windows 10 Pro) выключена возможность удаленного подключения по RDP, а включена лишь возможность использования "Удаленный помощник". Вот только теперь задумка, как через Ansible отключить "Удаленный помощик", включить подключение к системе через "Удаленный рабочий стол" + использовать проверку подлинности на уровне сети.

Вот все задуманное я и реализую через PlayBook:

Шаг №1: У Вас предварительно в домене должна быть система Ubuntu 22.04 Server + Ansible и настроена аутентификация через Kerberos, см. заметку "Через Ansible с доменными Windows системами на Ubuntu 22.04 Server"

Шаг №2: На рабочие системы под управлением Windows через групповые политики распространен скрипт, делающий возможность взаимодействовать с ними через Ansible, см заметку "Выполнить ConfigureRemotingForAnsible.ps1 через GPO"

Шаг №3: Создаю Playbook и именую его по имени функционала, который он будет делать, к примеру winrdp.yml:

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/playbook/winrdp.yml
- name: RDP Windows Workstation
  hosts: windows
  tasks:
   - name: Disable Remote Assistant
     win_regedit:
       path: HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance
       name: fAllowToGetHelp
       data: 0
       type: dword

   - name: RDP on Windows 10 Enable
     win_regedit:
       path: HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server
       name: '{{ item.name }}'
       data: '{{ item.data }}'
       type: dword
     with_items:
      - { name: fDenyTSConnections,    data: 0 }
      - { name: fSingleSessionPerUser, data: 0 }
     tags: registry

   - name: Set RDP/tcp settings
     win_regedit:
       path: HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
       name: '{{ item.name }}'
       data: '{{ item.data }}'
       type: dword
     with_items:
      - { name: PortNumber,         data: 3389 }
      #1 - enable NLA, 0 - disable NLA
      - { name: SecurityLayer,      data: 1 }
      - { name: UserAuthentication, data: 1 }
      - { name: Shadow,             data: 1 }
     tags: registry

Шаг №4: Запускаю созданный PlayBook применительно к двум системам: wrkst0003 & wrkst0002

ekzorchik@srv-ansible:~$ sudo ansible-playbook -i /etc/ansible/windows/hosts /etc/ansible/playbook/winrdp.yml

PLAY [RDP Windows Workstation] *****************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [wrkst0003.polygon.local]
ok: [wrkst0002.polygon.local]

TASK [Disable Remote Assistant] ****************************************************************************************
changed: [wrkst0003.polygon.local]
ok: [wrkst0002.polygon.local]

TASK [RDP on Windows 10 Enable] ****************************************************************************************
changed: [wrkst0003.polygon.local] => (item={'name': 'fDenyTSConnections', 'data': 0})
changed: [wrkst0002.polygon.local] => (item={'name': 'fDenyTSConnections', 'data': 0})
ok: [wrkst0003.polygon.local] => (item={'name': 'fSingleSessionPerUser', 'data': 0})
ok: [wrkst0002.polygon.local] => (item={'name': 'fSingleSessionPerUser', 'data': 0})

TASK [Set RDP/tcp settings] ********************************************************************************************
ok: [wrkst0003.polygon.local] => (item={'name': 'PortNumber', 'data': 3389})
ok: [wrkst0002.polygon.local] => (item={'name': 'PortNumber', 'data': 3389})
ok: [wrkst0003.polygon.local] => (item={'name': 'SecurityLayer', 'data': 1})
ok: [wrkst0002.polygon.local] => (item={'name': 'SecurityLayer', 'data': 1})
ok: [wrkst0003.polygon.local] => (item={'name': 'UserAuthentication', 'data': 1})
ok: [wrkst0002.polygon.local] => (item={'name': 'UserAuthentication', 'data': 1})
ok: [wrkst0003.polygon.local] => (item={'name': 'Shadow', 'data': 1})
ok: [wrkst0002.polygon.local] => (item={'name': 'Shadow', 'data': 1})

PLAY RECAP *************************************************************************************************************
wrkst0002.polygon.local    : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
wrkst0003.polygon.local    : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

ekzorchik@srv-ansible:~$

Шаг №5: Результат работы созданного Playbook под задумку, которую я реализовал:

  • Разрешить подключения удаленного помощника к этому компьютеру: отключено
  • Разрешить удаленные подключения к этому компьютеру: включено
  • Разрешить подключения только с компьютеров, на которых работает удаленный рабочий стол с проверкой подлинности на уровне сети (рекомендуется): включено

Включаем RDP на Windows 10 Pro через Ansible

Готово, что мне и нужно было. Блин, это крутой инструмент, вот так ставя себе задачи, для этого я даже завел файл tips_theme_ansible_v1.txt в котором под каждым пунктом создаю задачу, которую мне бы хотелось разобрать дабы через Ansible делать, так я учусь что меня интересует и так разбираю чтобы после применить на боевом, когда все действия отработаны.

На этом задумка завершена, с уважением автор блога Олло Александр aka ekzorchik.