Parallels Parallels Remote Application Server (RAS) представляет из себя RDP с человеческим лицом, но некоторые его фишки должны быть настроены на стороне Windows Server (либо в виртуальных машинах, которые вы используете). Под катом рекомендации Матвея Коровина из команды техподдержки Parallels о настройках Windows Server при использовании RAS.

Ниже будут представлены групповые политики, которые смогут сделать ваш Parallels RAS (или просто сервер терминалов) более удобным и безопасным. Для более целевого использования приведенных ниже конфигураций, рекомендуем создать отдельную группу пользователей Parallels RAS и применять групповые политики именно к ней.


Часть первая. «Запрещательная»


Прячем элементы эксплорера (Диски, кнопка «Пуск» и тд)
По умолчанию при подключении к терминальному серверу \ виртуальной машине пользователь, добавленный в группу «Пользователи удаленного рабочего стола» увидит полностью функциональный рабочий стол.

Локальные диски будут ему видны и часто доступны. Согласитесь, это неплохая дыра в безопасности, если пользователь даже со своими лимитированными правами будет иметь возможность доступа к локальным дискам и файлам на удаленном сервере.

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

Расположение групповой политики:

User Configuration\Policies\Administrative Templates\Windows Components\Windows Explorer

И измените значение следующих опций:

Hide these specified drives in My Computer — изменив значение этой опции, вы можете убрать упоминание конкретных дисков из меню компьютера и всех связанных меню, однако это не запрещает доступ к дискам. Если пользователь задаст абсолютный адрес диска, то он откроется.
Prevent access to drives from My Computer — запретить доступ к конкретным дискам. При включении этой опции доступ к дискам будет ограничен, но диски будут отображены в file explorer.

Что еще можно спрятать от пользователя, используя эту групповую политику:

Remove Run menu from Start Menu – при активации убирает кнопку «Пуск» из меню
Remove Search button from Windows Explorer – здесь все просто: поиск в эксплорере будет недоступен
Disable Windows Explorer's default context menu – это функция лишает пользователя возможности вызывать менюшку правым кликом мыши (можно купить старых мышек от мака и сэкономить на одной кнопке)

После написания этой части проснулась просто-таки депутатская страсть к запретам. На этом фоне стоит рассказать вам, какими способами можно запретить пользователю все.

И так поехали:

Запрещаем использование командной строки (даже если пользователь сможет открыть CMD ему останется просто любоваться черным окошком с уведомлением о запрете доступа)

Расположение групповой политики:

User Configuration > Policies > Administrative Templates > System > Prevent access to the command promt.

Меняем значение на enabled.

Опция Disable the command prompt script processing also запрещает пользователю выполнять скрипты.

Есть один нюанс: если у вас настроены логон скрипты при включении этой опции, они выполняться не будут.

Убираем кнопки выключения \ перезагрузки \ сна (будет обидно, если удаленный пользователь случайно выключит терминальный сервер)

Расположение групповой политики:

User Configuration > Administrative Templates > Start Menu and Taskbar > Remove and prevent access to the Shut Down, Restart, Sleep, and Hibernate Commands

При включении этой опции пользователь сможет только заблокировать сессию или разлогиниться из нее.

Запрещаем Автозапуск «Управление сервером» при логине
Расположение групповой политики:

Computer Configuration > Policies > Administrative Templates > System > Server Manager > Do not display Server Manager automatically at logon

Меняем значение на enabled.

Запрещаем запуск PowerShell
Расположение групповой политики:

User Configuration > Policies > Administrative Templates > System > Don’t run specified Windows applications

Включаем эту политику и добавляем туда следующие приложения
powershell.exe and powershell_ise.exe

Этой политикой можно запретить запуск любых установленных (а также не установленных) приложений.

Прячем элементы панели управления
Расположение групповой политики:

User Configuration > Administrative Templates > Control Panel > Show only specified Control Panel items.

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

Запрещаем запуск редактора реестра
Расположение групповой политики:

User Configuration > Policies > Administrative Templates > System > Prevent access to registry editing tools

Меняем значение на enabled.

Запрещаем все
Логичным завершением этой части статьи будет рассказ о том, как запретить пользователям все. Есть мнение, что пользователь должен подключиться к удаленному рабочему столу, посмотреть на него и, убедившись в торжестве технического прогресса, отключиться.

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

Расположение групповой политики:

User Configuration\Preferences\ Windows Settings\Registry
Кликаем правой кнопкой мыши по Registry затем New затем Registry item


Добавляем новый REG_DWORD параметр RestrictRun со значением 1 в ключ реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\

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

Как запретить ему пользоваться CMD и Power Shell описано выше.

Если вы все-таки решите (исключительно по доброте душевной) разрешить пользователям запуск каких-либо приложений, их нужно будет добавить в «разрешительный список» путем создания в ключе

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun

Значением типа string, используя порядковый номер разрешаемой программы в качестве имени (нумерация как это не странно начинается с 1), и именем разрешаемой программы в качестве значения.

Пример:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]
String Name:«1»=«notepad.exe»
String Name «2»=«calc.exe»


При такой конфигурации пользователь сможет запустить только блокнот и калькулятор.

На этом хочется закончить «Запрещательную» часть. Конечно, можно упомянуть еще некоторое количество «Низя», но все это настраивается через Parallels Client и встроенные политики Parallels RAS.



Часть вторая. «Время и прочая романтика»


Установка временных лимитов для удаленных сессий

Бывает, что пользователь запускает приложение в фоне и может даже не пользоваться им. Если для обычных приложений это не страшно, то запущенное в фоне опубликованное приложение / рабочий стол занимает лицензию, а лицензии, как бы дико это не звучало для России, стоят денег.

Для решения этого вопроса умные люди из Microsoft придумали различные статусы терминальных сессий и временные лимиты для них.

Какие бывают статусы терминальных сессий:

Active – сессия активна и в ней что-то происходит. Пользователь двигает мышкой, нажимает на кнопки и создает имитацию бурной деятельности
IDLE – соединение есть, сессия запущена, приложение работает, но пользователь активности не проявляет
Disconnected – пользователь нажал крестик и отключился. Объяснять конечному пользователю, что за зверь логоф и чем он питается — бесполезно.

Наиболее целесообразно устанавливать временные рамки на IDLE и Disconnected сессий.
В них ничего не происходит, а лицензии занимаются.

Добиться этого мы можем опять-таки, используя групповые политики.

Расположение групповой политики:

User Configuration > Policies > Administrative Templates Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Session Time Limits

В этой ветке есть несколько опций. Давайте разберем их все:

Set time limit for active but idle Remote Desktop Services sessions

Максимальное время работы для Active сессий.

Set time limit for active Remote Desktop Services sessions

Максимальное время работы для IDLE сессий.

Set time limit for disconnected sessions

Максимальное время работы для disconnected сессий.

End session when time limits are reached

Если установить эту политику в Enabled статус, то по достижению временного лимита сессии будут завершаться, а не отключаться.

Настройка временных лимитов – важный шаг для оптимизации работы сервера и оптимизации затрат на ПО.

Установка времени логина для пользователей или скажем нет переработкам
У каждого из нас есть рабочий день, а также утро, вечер и ночь. Но Британские (или Мальтийские) ученые недавно выяснили, что от работы, оказывается, можно заболеть или даже умереть. Работа — это очень сильный и опасный наркотик, поэтому в ярой заботе о любимых пользователях мы должны ограничить им время, когда они могут логиниться на сервер. А то надумают тоже работать из дома, отпуска и по выходным. И помогут нам в этом не групповые политики. Настройка времени работы находится в свойствах пользователя. Где-то далеко в начале этой статьи я упоминал, что все манипуляции лучше производить со специально созданной группой пользователей Parallels RAS, так вот, на примере этой группы мы и разберем, как установить часы работы.

Идем в левый нижний угол нашего экрана, нажимаем кнопку пуск и печатаем dsa.msc
Откроется всеми любимая оснастка Active Directory Users and Computers.

Найдите созданную вами группу пользователей Parallels RAS кликните по ней правой кнопкой мыши и зайдите в свойства. Во вкладке Account будет опция Logon Hours в которой нужно выбрать разрешенные и запрещенные часы работы для группы.

Итог этого раздела:

1. Вы великолепны
2. Жизни пользователей спасены от переработки



Часть третья. «Интерактивная»


Используя опубликованные ресурсы, часто приходится не только запрещать все подряд на сервере, но и перенаправлять в удаленную сессию локальные ресурсы. И если с принтерами, сканерами, дисками, звуком и COM портами никаких сложностей не возникнет, Parallels RAS прекрасно их перенаправляет без дополнительных настроек со стороны Windows, то с перенаправлением USB устройств и веб камер все не так просто.

Для перенаправления данного типа оборудования нужно, чтобы звезды сошлись в правильном порядке не только на сервере, но и на клиентской машине:

На компьютере пользователя измените следующую групповую политику:

Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Connection Client > RemoteFX USB Device Redirection
Присвойте ей значение Enabled

Теперь в свойствах Parallels клиента (Connection Properties > Local Resources) вы сможете выбрать, какое именно из подключенных USB устройств должно быть перенаправлено на сервер.

Примечание: USB устройство может быть задействовано либо в опубликованном приложении, либо на локальном компьютере, но не одновременно и там, и там.

На стороне сервера необходимо установить драйверы и все необходимое ПО для работы USB устройства. К сожалению, универсального драйвера для всего подряд человечество еще не придумало.

На этом хотелось бы завершить обзор настроек Windows, которые будут важны для работы Parallels RAS.



З.Ы. Таких длинных текстов писать не доводилось давно, отсюда огромная благодарность всем тем, кто осилил эту статью.

Комментарии (20)


  1. dmitry_dvm
    24.10.2017 14:06
    +1

    На какое время ориентируется Logon Hours — серверное или юзерское?


    1. mat_way
      24.10.2017 16:28

      Если вы про часовой пояс то будет использовано значение от пользователя


  1. rionnagel
    24.10.2017 14:41

    Спасибо за статью. А можете дописать аналоги всех действий в ключах реестра?


    1. mat_way
      24.10.2017 18:22

      Можно конечно, но это достаточно трудоемко. Не можете пояснить зачем вам именно ключи реестра. ИМХО груповые политики более удобны


      1. rionnagel
        24.10.2017 21:54

        Для «true way»)) Чтобы код писать в систему версионирования, от туда код пушился на систему управления конфигурациями, система управления конфигурациями раскатывала код на парк серверов/терминалов/рабочих станций/планшетов/информационных панелей и т.д. и т.п… а для этого нужны именно скрипты. Да и не во всех редакциях есть групповые политики, не везде поставишь контроллер домена и систем центр.
        Информации действительно мало по поводу ограничений через реестр, масса ключей deprecated в новых системах, масса ключей не работают в разных редакциях, и приходиться писать километровые скрипты, охватывающие всё, либо по одному тщательно тестить.


        1. rionnagel
          24.10.2017 21:59

          Я понимаю, что статья в контексте RDP серверов, но решение актуально не только для них.


          1. mat_way
            24.10.2017 23:17

            Это займет какое-то время :) Но постараюсь отписаться здесь с ключами реестра.


        1. alan008
          25.10.2017 07:15

          Вы можете установить программу, которая делает снапшоты (копии) реестра, сделать снапшот, поменять настройку в политиках, сделать еще один снапшот, и сравнить получившиеся снимки на предмет изменений


  1. Bronto3
    24.10.2017 16:29

    «все было, при этом вам за это»
    «при этом» — звучит скучно и долго. В поговорках должно быть ОТРИЦАНИЕ или итоги.
    «все было, НО вам за это» — это оригинал. Звучит намного естественней, чем программистский, «толерантный» вариант. )) Исправьте уже.


  1. Bronto3
    24.10.2017 16:37

    описание действий админов есть в курсе подготовки Инженера сетевой инфраструктуры и других… Вы переписали что-ли оттуда у Microsoft?
    А смысл? Кому надо обязан это изучить или он — не человек, ну в смысле не админ. )


    1. mat_way
      24.10.2017 18:33

      Как ни странно такого вида настройки — достаточно частый вопрос :) А нормальной документации на русском почти нет.Но все равно очень рад, что существуют люди для которых это статья бесполезена. Вы действительно круты :)


  1. Cayp
    24.10.2017 22:10

    1. Про локальные диски: с точки зрения безопасности наилучшим решением будет верно настроить ACL на самих дисках. например забрать у пользователей права на создание файлов, CREATOR OWNER и т.п. и оставить только traverse+list folder в корне. Каталоги Windows и Program Files по умолчанию не наследуют разрешения от корня диска, поэтому там права на чтение/выполнение не пропадут. Hide these specified drives in My Computer и Prevent access to drives from My Computer больше косметические политики, чем относящиеся к безопасности.

    2. «Убираем кнопки выключения \ перезагрузки \ сна» — зачем, если SeShutdownPrivilege по умолчанию доступно только Backup Operators и Administrators? Обычные пользователи по умолчанию не входят в эти группы и не видят опций Shutdown/reboot.

    3. «Запрещаем Автозапуск «Управление сервером» при логине». Аналогично. У обычных пользователей Server Manager не включается.

    4. «Запрещаем запуск редактора реестра». Regedit требует прав администратора при запуске. Плюс стандартные ACL в реестре по умолчанию обычному пользователю не дадут что либо редактировать, кроме HKCU.

    5. Почему для запрета запуска некоторых приложений предлагается использовать отдельные политики и реестр, а не AppLocker/SRP, которые специально для этого созданы и в целом более гибкие (можно разрешать/запрещать по хэшу, цифровой подписи)? В AppLocker, например, по умолчанию действует «запрещено всё, что не разрешено» и запустить приложение из собственного профиля (с рабочего стола/temp и т.д.) пользователь не сможет.


    1. mat_way
      24.10.2017 23:16

      Спасибо за конструктивную критику. Попытаюсь ответить по пунктам:
      1. Наверное стоило подробнее остановиться на выдаче пермиссий на файлы и диски, но к сожалению я ограничился только лирическим упоминанием оных. Обычно юзеры путаются и не понимаю когда видят диски терминальника, поэтому прятать их самое дружелюное пользователю решение.

      2.3.4 Добавил на всякий случай, а так же для специфических ситуаций (к примеру пул виртуальных машин вместо терминального сервера либо хочется запретить пользователю копировать реестр) возможно эта информация избыточна.

      5. Данная политика будет работать на любом вин сервере начиная с 2000. AppLoker же появился начиная с 2008 R2 если я ничего не путаю, но все равно стоило уделить ему внимание.

      Еще раз огромное спасибо за конструктивную критику и очень полезный коментарий. Первый блин всегда комковатым выходит.


    1. paranoya_prod
      25.10.2017 10:04

      «Regedit требует прав администратора при запуске.»
      Никогда такого не было, он вполне себе запускается от имени обычного юзера.


      1. Cayp
        25.10.2017 12:12

        Да, не прав. Окно UAC для повышения привилегий появляется только для администраторов. Для обычных пользователей просто запускается regedit.


  1. Cayp
    25.10.2017 12:12

    del


  1. BLOOD_ELF
    25.10.2017 13:31

    Как будет вести себя открытая 1C при статусе Disconnected? Винда сама аккуратно завершит программу, или просто убьет процесс и скорее всего придется переиндексировать БД?

    Как вы решали подобную проблему?


    1. mat_way
      25.10.2017 16:06

      Она будет вести себя как при стандартном logoff. Проблему скорее всего можно будет решить использованием logoff скрипта, который будет проверять запущена ли 1с и если да то завершать её корректно. Нужно тестить и писать скрипт. Подобных запросов у нас не было.Если найду решение отвечу здесь либо отдельной статьёй :)


      1. BLOOD_ELF
        25.10.2017 16:15

        Я искал подобные решения, но пользователи не то, что просто не закрывают 1C, а часто оставляют еще открытым какой-нибудь документ. И вот тут проблема. Возможно есть некие скрипты на закрытие 1С с закрытием открытых документов без их сохранения и проведения. Но не нашел подобного.
        Говоришь-говоришь пользователям, но все-равно рано или поздно кто-то не делает так, как надо.


  1. mvs
    28.10.2017 00:06

    Как наcтроить Logon hours без AD?