1с терминальный сервер ограничить доступ
Возникла у нас тут интересная задача.. Сделать так, чтобы некоторые пользователи могли подключаться к 1С на терминальном сервере через Интернет, но при этом не могли слить себе базу :) Да-да, пользователи бывают разные, иногда стоит лишить их такой возможности. Итак, что было сделано.
Дано:
- группа неблагонадёжных пользователей, которой нужно ограничить доступные на сервере операции работой с одной программой;
- Windows Server 2003 с доменом;
- 1C Бухгалтерия v8 и 1C Бухгалтерия v7;
- пользователи подключаются через интернет (т.е. их компьютеры не входят в домен, что важно).
Требуется:
- запретить пользователям всё, кроме работы с 1С. При этом:
- должна быть возможность выбора, какую именно версию запускать
- должна быть возможность распечатывания и сохранения отчётов в виде файлов.
Первым делом было решено отключить пользователям вообще запуск любых программ, кроме 1С. Однако, это требовалось не для всех пользователей, а только для одной группы. Делается такое с помощью групповых политик. Чтобы применить политики к группе пользователей, нужно перенести их в отдельный контейнер - политики задаются для контейнеров. Поэтому для начала я переместил нужную группу в отдельный контейнер доменных политик. (Здесь и далее буду делать разъяснения для тех, кто плохо представляет себе, о чём речь. Я и сам таким был недавно, и учился на практике, так что не вижу в этом ничего зазорного :)) Делается это в оснастке Active Directory - пользователи и компьютеры. Выбираем нужный домен и из контекстного меню выбираем пункт "Create - Organisational unit". Создав этот самый юнит, я перетащил туда нужную мне группу пользователей. Точнее, я перетащил туда самих пользователей, потому что убедился, что перенос туда просто группы не влияет на пользователей, в ней состоящих. (Да, я не читал полной документации по Active Directory, поэтому дохожу до всего экспериментальным путём. Честно говоря, как-то не возникало необходимости изучать её досконально, есть куда более интересные вещи, на которые можно потратить время.)
Так вот. Поместив в новый контейнер нужных пользователей, идём в свойства контейнера, затем - во вкладку "Групповая политика", и там нажимаем "Создать". Создав политику, заходим в её настройки с помощью кнопки "изменить". Кстати, можно в её свойствах отключить раздел "компьютеры", потому что он не влияет никак на компьютеры, не входящие в домен. Но нужно это только для небольшой экономии памяти.
Подробно рассказывать о настройках политик не буду - у каждого свои задачи. Скажу только о ключевом (и повторю: нас интересует только раздел "конфигурация пользователя"). Во-первых, для того, чтобы запретить пользователю лазить по дискам, запускать другие программы и т.д., я сделал следующее: в разделе "Административные шаблоны - Компоненты Windows - Проводник" повключал почти все ограничения. В результате единственное, куда может попасть мой пользователь - это на свой рабочий стол, но не через Проводник, который не работает, а только через диалог "Сохранить" 1С Бухгалтерии (позже расскажу, для чего это надо); в разделе "Административные шаблоны - Система - Возможности Ctr+Alt+Del" отключил возможность запуска Диспетчера задач; и на всякий случай - тупо удалил файл System32\sethc.exe :)) (Это программа, запускающая "специальные возможности" Windows. Говорят, в ней есть какие-то уязвимости, так что, запустив её, можно получить контроль над некоторыми функциями системы. Я просто переименовал файл, хотя можно запретить запуск с помощью раздела "Конфигурация Windows - Параметры безопасности - Политики ограниченного использования программ - Дополнительные правила", где можно запретить запуск нужной программы по её хешу, но мне было просто лень - вещь-то всё равно бесполезная). Во-вторых, для того, чтобы при входе пользователя не было даже видно рабочего стола, я настроил службу терминалов так, чтобы сразу запускалась 1С, а после её закрытия сеанс завершался. Делается это в разделе "Административные шаблоны - Компоненты Windows - Службы терминалов - Запускать программу при подключении" и рядом, в разделе "Сеансы". Честно говоря, добиться того, чтобы при закрытии 1С сеанс всегда завершался, мне так и не удалось: оно то срабатывает, то нет. С чем это связано, не знаю. Но после отключения клиента сеанс завершается однозначно. Иначе нельзя: у пользователя теперь нет возможности щёлкнуть "Выход из системы", так как у него нет ничего: ни Control+Alt+Del, ни меню Пуск, ни рабочего стола, куда можно было бы вынести ярлык "Завершение работы".
Теперь при подключении к своей терминальной сессии пользователь сразу видит окно выбора баз 1С. Однако, возникает вопрос: что делать, если пользователю необходимо запускать не одну 1С, а разные? Выход один: в качестве запускаемой при подключении терминальной сессии программы задать что-нибудь самописное, что позволит делать этот выбор. Так как я не владею Визуальным Бейсиком, я воспользовался для этого скриптами командной оболочки. И тут оказалось несколько подводных камней :)
Изначально скрипт выглядел так:
---------------script1.bat-------------- --------------------
@echo off
echo ЏаЁўҐв! Џ®¦ «г©бв , ўлЎҐаЁвҐ, Є Єго ўҐабЁо 1‘ ўл е®вЁвҐ § ЇгбвЁвм:
choice /C 12 /D 1 /T 50 /N /M " ¦¬ЁвҐ 1 ¤«п § ЇгбЄ 1‘ ўҐабЁЁ 8 Ё«Ё ¦¬ЁвҐ 2 - ¤«п § ЇгбЄ 1‘ ўҐабЁЁ 7:"
if errorlevel 2 goto v7
cd "C:\Program Files\1cv81\bin"
start 1cv8.exe
goto exit
:v7
cd "C:\Program Files\1Cv7ic\BIN"
start 1cv7s.exe
:exit
exit
---------------------------------------- ----------
(только без строчки exit в конце)
Угадайте, что это за набор символов во второй строке? :) Правильно: это приглашение пользователю в кодировке cp866, которой пользуется виндовая консоль. Чтобы сохранить скрипт в этой кодировке, пришлось воспользоваться программой AkelPad, потому что сделать это средствами самого Виндовс невозможно. Да, и для умных: использование команды chcp в скрипте не помогает, так как оно не изменяет кодировку выводимых надписей, оно изменяет только кодировку ВВОДИМЫХ (если можно так выразиться) данных, т.е., например, путь в строке запуска команды (c:\Document and settings\user\Рабочий стол) оно переведёт в нужную кодировку, а вот выводимую на экран надпись - нет.
Ключевое в скрипте - комада Choice, которая тоже выводит некоторую надпись: она говорит, что, если нажать 1, запустится 1С версии 8, если 2 - 1С версии 7, и в зависимости от выбора возвращает тот или иной код, который затем воспринимается командой errorlevel, и с помощью if и goto запускается нужный экзешник.
Однако, запустив этот скрипт, я убедился, что пользователю надо ещё сообразить щёлкнуть сначала по окну, где предлагается выбор, потому что фокус почему-то уходит с него при старте. Очевидно, в этот момент Винда запускает что-то в фоне, что и перехватывает фокус окна. Тогда пришлось сделать второй скрипт, который ждёт несколько секунд и только потом запускает первый, чтобы быть уверенным, что уже ничто не перехватит фокус. Вот как он выглядит:
Но после этого выяснилась ещё одна фигня: после отработки script1 почему-то остаётся на экране окно консоли :) Вот тогда я и добавил в конец script1 команду exit.
Таким образом, в настройках терминальной сессии у меня прописано запускать script2.bat.
-----------Как сделать отдельное подключение к серверу терминалов на другом порту-------
1. Запустите regedit.exe на своём сервере терминалов.
2. Найдите ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Terminal Server\WinStations\RDP-Tcp
3. Экспортируйте этот ключ в reg-файл.
4. Отредактируйте в только что созданном файле 3-ю строку, задав там иное имя терминального подключения. Например, так: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Terminal Server\WinStations\RDP-Tcp-New
5. Найдите в reg-файле надпись PortNumber и измените номер порта на нужный вам. Убедитесь, что пишете в шестнадцатеричном формате. Например, для 3390 вы должны ввести D3E.
6. Импортируйте ваш файл обратно в реестр.
---------------------------------------- ----------------------------------------
Теперь у нас получилось отдельное подключение. Запрещаем в настройках этого подключения мапирование дисков. Также в настройках безопасности обоих подключений задаём разрешения так, чтобы наша группа неблагонадёжных пользователей могла подключиться только к тому подключению, в настройках которого введены соответствующие ограничения. Теперь осталось подкорректировать настройки клиентов, и вуаля: наши неблагонадёжные пользователи ходят по другому порту, не по тому же, что все остальные, и им ограничено всё, что только можно.
Однако, в моём случае и этого оказалось мало :)) Выяснилось, что пользователям всё-таки необходимо выгружать платёжки, чтобы потом вручную вносить в них изменения (конкретно - добавлять штрихкод, но это другой вопрос). Что делать? Я решил поступить так: дать им возможность сохранять платёжки в одну директорию, из которой всё сохранённое будет раз в минуту отправляться на мыло и удаляться. Я извращенец? Возможно. Но ничего лучше я не придумал. Правда, это является некоторой уязвимостью: технически возможно по кускам перегнать всю базу. Однако, почти с таким же успехом её можно всю распечатать и переписать вручную :) Так что это - оправданный риск, я считаю. Итак, реализуем этот проект.
Первым делом я создал почтовый ящик на mail.ru. Почему именно там? Потому, что, в отличие от того же gmail.com, например, там нормально пересылаются любые вложения (гмейл тупо режет всё, что кажется подозрительным). Хотя никто не мешает пользоваться собственным smtp-сервером, но у меня его в распоряжении нет.
Теперь нам нужна программа. В VBS разбираться я опять не захотел, поэтому нашёл вот что: http://www.blat.net/
У этой программы есть все нужные функции, а также - одна особенность. Почему-то она не умеет брать параметры smtp-сервера из командной строки, если требуется авторизация. Его нужно "проинсталлировать", т.е. добавить адрес и учётные данные в реестр. Как это сделать - см. в руководстве к программе. Итак, программа есть. Раз в минуту она должна отправлять письмо с вложением на почтовый ящик клиента. Для этого надо, по-первых, чтобы это вложение было. Вот тут нам и понадобится возможность сохранять что-то из 1С на рабочий стол. Скрипт будет искать что-то на рабочем столе, и всё, что найдёт, будет отправлять на почтовый адрес клиента. Не вдаваясь в долгие рассказы о том, как я разбирался с работой почтового клиента и как выяснял, как заставить его скушать все вложения, приведу сам скрипт:
-------------sendmail.bat--------------- -----------------
@echo off
rem Скрипт для отправки отчётов на почту клиента.
chcp 1251
for %%n in ("C:\Documents and Settings\user\Рабочий стол\*.*") do goto mail
goto exit
:mail
blat262\full\blat.exe message.txt -q -to user@mail.ru -subject "1c report" -attach "C:\Documents and Settings\user\Рабочий стол\*.*"
move /y "C:\Documents and Settings\user\Рабочий стол\*.*" "C:\Documents and Settings\user\Sendmail\"
:exit
---------------------------------------- --------------
Вот, собственно, и всё :) Подытожим.
В результате у меня получилась система, не позволяющая подключающемуся через терминал пользователю сделать ничего, кроме работы с базой и сохранения отчётов, которые приходят к нему на почту. Способ не самый элегантный, но лучше мне пока придумать не удалось. Буду благодарен всем, кто прокомментирует мои методы и укажет, как можно было бы сделать лучше (только не общими словами, а приводя конкретные инструкции), а также - какие ещё уязвимости, позволяющие пользователю выполнить некие несанкционированные действия на сервере (включая сохранение себе базы 1С), остались в моей системе. Разумеется, пользователи имеют ограниченные права в системе, и админские аккаунты в базах 1С запаролены, чтобы не было доступа к конфигурированию и выгрузке баз.
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.
З.Ы. Таких длинных текстов писать не доводилось давно, отсюда огромная благодарность всем тем, кто осилил эту статью.
В первой части мы успешно развернули роль "терминальный сервер Windows" и приступили к его конфигурированию. Разобрались в методах организации хранения данных пользователей и определились что из этого мы будем использовать. Давайте приступим к настройке.
Конфигурирование хранения персональных данных пользователей
Для активации дисков профилей пользователя необходимо перейти в Службы удаленных рабочих столов > в разделе Свойства открываем меню Задачи > изменить свойства > Диски профилей пользователя
Ставим флаг напротив "Включить диски профилей пользователей".
Указываем путь до каталога на файловом сервере, где будут храниться VXDX диски профилей, и указываем размер 1 гб (Больше места нам не нужно, так как в диске будет храниться совсем мало данных но и меньше 1 гб сделать нельзя) и нажимаем применить
В результате в указанном каталоге будет создан базовый диск на основе которого будут создаваться диски профилей
Устраняем проблему с хромом
При использовании дисков профилей в Google Chrome возникает ошибка Error COULD NOT GET TEMP DIRECTORY, это связанно с тем что хром не может получить доступ к общей папке TEMP, потому переместим ее в другое место и дадим на нее права
Вам нужно настроить объект групповой политики, который выполняет две функции:
Для каждого пользователя, который входит в систему, создает личную папку в папке C: TEMP Изменить переменные среды TEMP и TMP Есть две настройки, которые можно применить на уровне пользователя.
1 - Создание личной папки в папке TEMP:
2 - Модификация переменных окружения:
Далее нам необходимо настроить миграцию профилей
Открываем "Управление групповой политикой "
Создаем объект Групповой политики и связываем его с Подразделением в котором расположены пользователи терминального сервера
Далее переходим Конфигурация пользователя > политики > Конфигурация Windows > Перенаправление папки
По каждому из представленных каталогов ПКМ > Свойства
В окне выбираем пункты
Перенаправлять папки для всех пользователей в одно расположение.
Создать папку для каждого пользователя на корневом пути
Указываем корневой путь (!Важно: данный путь должен быть доступен пользователям на запись)
На вкладке параметры снимаем все галочки и выбираем "После удаления политики оставить папку в новом расположении"
В результате данной настройки в указанном корневом пути будут создаваться каталоги с правами для своего владельца на изменение а для других с запретом чтения
Настройка политики ограниченного использования программ
Одним из важнейших аспектов настройки сервера является его безопасность . Потому нам необходимо ограничить список функций и программ которые имеет право использовать пользователь на сервере.
Спрячем логические диски от пользователей
Конфигурация пользователя > политики > Административные шаблоны > Компоненты windows > Проводник > выбираем политику Скрыть выбранные диски из окна мой компьютер > ставим включено и выбираем Ограничить доступ ко всем дискам
Убираем все лишнее с рабочих столов пользователей
Для этого создадим следующие групповые политики
Ограничение функционала проводника
Очищаем меню пуск
Ограничение функционала проводника
Идем Конфигурация пользователя > Политики > Административные шаблоны > Компоненты Windows > Проводник и включаем следующие политики
Запрашивать подтверждение при удалении файлов
Отключить возможности библиотеки Windows, использующие данные индексированных файлов
Запретить изменение видеоэффектов для меню
Скрыть значок «Вся сеть» в папке «Сеть»
Удалить меню «Файл» из проводника Удалить вкладку «Оборудование»
Скрыть команду «Управление» из контекстного меню проводника
Удалить «Общие документы» из окна «Мой компьютер»
Удалить команды «Подключить сетевой диск» и «Отключить сетевой диск»
Удалить ссылку «Повторить поиск» при поиске в Интернете
Удалить вкладку «Безопасность» Удалить кнопку «Поиск» из проводника
Набор правил Определяется в зависимости от ваших потребностей. Данные правила выбраны как хорошо зарекомендовавшие себя для нагруженного терминального сервера
Очищаем меню пуск
Идем Конфигурация пользователя > Политики > Административные шаблоны > Меню "Пуск" и панель задач
В данном разделе, все зависит от ваших потребностей. как показывает практика рядовой пользователь меню пуск особо не пользуется, так что зачем ему оставлять лишние кнопки, посему можно запретить все.
Запрет запуска программ
Для решения данной задачи есть 2 способа
1-й способ
При помощи политики "Выполнять только указанные приложения Windows" Указать список всех exe приложений которые будут доступны"
Данный метод проще в настройке, и однозначно блокирует все приложения кроме указанных (те что относятся к windows тоже)
У данного метода есть несколько недостатков
сложность администрирования, так как не всегда удается указать все необходимые EXE для корректной работы приложения (например с CryptoPro, или публикациями приложений и т.д)
назовем их "Энтузиасты " , которые пытаются запускать приложения переименовав их исполнительный файл в один из разрешенных
Проблема с обновлением приложений (Зачем же разработчикам ПО оставлять старые названия своих exe, и правда Зачем? )
Отсутствие какого либо журнала заблокированных политикой приложений
Настраивается следующим образом
Создаем объект Групповой политики и связываем его с Подразделением в котором расположены пользователи терминального сервера
Идем Конфигурация пользователя > Административные шаблоны > Система > Находим политику "Выполнять только указанные приложения Windows"
Включаем политику > Нажимаем кнопку "Показать" > В таблицу вносим разрешенное приложение. Крайне рекомендую для каждого приложения делать отдельную политику, для облегчения администрирования.
Далее нам Желательно на рабочем столе разместить ярлыки запуска приложения
Идем Конфигурация пользователя > Настройка > Конфигурация Windows > Ярлыки > Создать > Ярлык
После чего задаем параметры. !ВАЖНО на вкладке "Общие параметры поставить "Выполнять в контексте. "
Ура политика создана
Так как не всем пользователям нужны одни и те-же программы и права, то нацеливаем политику на группу безопасности В фильтрах безопасности удаляем группу "Прошедшие проверку" а на ее место добавляем группу в которую включены все пользователи данного приложения"
после чего ВАЖНО не забыть на вкладке Делегирование добавить группе "Прошедшие проверку" право на чтение политики (Иначе работать не будет)
2-й способ
Используем функцию AppLocker
Важно применять эту политику на подразделение где лежит ваш терминальный сервер. это позволит вам более оперативно редактировать список разрешенных приложений, так же когда она настроена работать под пользователем возникают непонятные баги. в данный момент я полностью перешел на использование данного метода для большинства внедрений
Создаем Групповую политику и связываем ее с подразделением, где лежит ваш терминальный сервер
идем Конфигурация компьютера > Конфигурация Windows > Параметры безопасности > Политики управления приложениями >applocker > Исполняемые правила > Создать правила по умолчанию
после чего идем Конфигурация компьютера > Конфигурация Windows > Параметры безопасности > Политики управления приложениями >applocker и тыкаем "Настроить применение правил"
в свойствах ставим настроено и выбираем только аудит для правил исполняемых файлов
в результате при заходе пользователя и попытке запуска программ в журнале просмотра событий на терминальном сервере расположенном
Журналы приложений и служб > Microsoft > Windows > AppLocker > EXE и DLL будут появляется события содержащие сведения о запускаемых приложениях, которые мы будем использовать для дальнейшей настройки политики
Вернемся в исполняемые правила и создадим правило на основе отчета журнала событий
ПКМ > Новое правило
выберем действие Разрешить, и в данном случае мы хотим чтобы под всеми пользователями данное приложение могло быть запущенно, но так же мы можем создать в домене группу безопасности в которую включим пользователей для которых данное правило будет применяться, тогда на этом шаге следует ее указать
Выберем условие Путь
Скопируем путь из отчета о событии
в исключения мы добавлять ничего не будем так что далее > Создать
Шаги следует повторить для каждого события из журнала, отсеивая те которые мы хотим запретить
После чего в свойствах applocker следует переключить "Только аудит" на "Принудительное применение правил"
В результате данных действий мы имеем эффективное хранение данных пользователей, и первично настроенную безопасность терминального сервера
И вновь у меня закончились буквы) продолжим в следующей части, рассмотрим настройку 1с , разграничения доступа к базам, поднимем производительность 1с на терминальном сервере фактически в двое, в обще продолжим в следующей части
В одном из прошлых видео мы рассматривали процесс поднятия роли сервера терминалов.
В этом же уроке предлагаю более детально рассмотреть процесс ограничения прав пользователя на терминальном сервере. Да, по умолчанию он лишен административных прав и много чего не может, однако, все равно к этому вопросу нужно отнестись более внимательно, так как пользователь все же находится на самом главном устройстве в вашей компании.
Регистрируйся на следующий вебинар по системному администрированию!
Так что стоит детально проанализировать, что пользователю делать можно, а что нет.
По сути тут может быть две ситуации, когда терминальный сервер реализован в рамках доменной сети, и все пользователи хранятся на контроллере домена. И в ситуации, когда сеть одноранговая и учетками, под которыми будут подключаться пользователи к терминальному серверу, мы управляем непосредственно на терминальном сервере.
Как правило такая схема подходит для небольших компаний, у которых какая-то служба реализована на терминальном сервере, допустим 1С.
Все это я более подробно рассказывал и показывал в видео по настройке терминального сервера! Для тех, кто его не видел, я оставлю ссылку к данному видео. И если вы не понимаете, о чем речь, то для начала посмотрите его.
И так, когда мы попадаем на сервер под учеткой обычного терминального пользователя, мы не можем установить софт, однако, нам доступно довольно много различных возможностей:
- доступ к системным дискам
- можно запускать приложения, которые могут не относиться к работе пользователя
- запустить диспетчер серверов
- доступ к элементам панели управления
- доступ к диспетчеру задач
- доступ к командной строке
Давайте приступим к устранению этих недостатков.
Скажу сразу, что все что я буду показывать, это скорее базовые ограничения пользователей, которые нужно выполнить в первую очередь. Однако, на практике бывает множество различных дополнительных ограничивающих политик, так что буду очень рад, если вы в комментариях также поделитесь своим опытом из разряда, что запретили, зачем и как. Таким образом можно будет составить более развернутую картину, ну и записать вторую, а может быть и третью часть данного видео.
Думаю, что нам это вполне по силам ;-) Так как тема действительно интересная и меня уже не один раз расспрашивали по поводу ограничивающих политик.
1) Доступ к жестким дискам сервера
Запретить доступ к данным системных дисков можно через групповую политику, но, если мы попытаемся её изменить через Выполнить \ gpedit.msc то мы изменим групповую политику для всех пользователей на данном сервере, так что изменения затронут как терминальных пользователей, так и административные учетные записи.
А нам нужно ограничить в правах именно учетные записи, которые не имеют административные права на сервере. Для этого запустим редактор групповой политики через консоль (Выполнить \ mmc \ Файл \ Добавить \ Редактор объектов групповой политики \ Обзор \ Пользователи \ Не администраторы \ ОК \ Готово \ ОК) При желании таким образом можно настроить политики для отдельных пользователей.
Конфигурация пользователя \ Административные шаблоны \ Компоненты Windows \ Проводник \ Запретить доступ к дискам через Мой компьютер \ Включена \ Выполнить \ cmd \ gpupdate /force
Причем у вас не получится не просто получить доступ к корню диска, а к любой папке через проводник (Рабочий стол, Загрузки и т.д. Даже если на рабочем столе создать папку и зайти в неё) В общем, везде где есть путь к расположению файла.
Однако, через файловые менеджеры, например тотал коммандер получить доступ к файлам можно. Или через командную строку
Поэтому, более тонко можно настроить через редактирование NTFS прав на файлы и папки (Диск D \ ПКМ \ Свойства \ Безопасность \ Удалить Все и Пользователи \ Добавить к нужной папке пользователя в права, как правило это папка с базой данных и т.д.
Тут уже через файловый менеджер не получится открыть диск и файлы.
Если какая-то нужная папка, то можно разместить ярлык на рабочем столе, где будет фактический путь и поместить в папку для всех пользователей (C:\Users\Public\Desktop \ Разрешить отображение скрытых файлов и папок \ Копировать туда ярлык с папкой и у всех удаленных пользователей появится на рабочем столе эта папка)
Так же от сюда можно убрать различные приложения, которые могут мешать пользователю и засорять его рабочий стол.
2) Запрет запуска приложений (Административные шаблоны \ Система \ Не запускать указанные приложения Windows \ TOTALCMD.EXE)
3) Запретить элементы панели управления (Административные шаблоны \ Панель управления \ Запретить доступ к панели управления и параметрам компьютера)
4) Запретить диспетчер серверов (Административные шаблоны \ Система \ Не запускать указанные приложения Windows \ ServerManager.exe)
5) Запретить диспетчер задач (Административные шаблоны \ Система \ Варианты действий после нажатия CTRL+ALT+DEL \ Удалить диспетчер задач \ Включено)
6) Запрет командной строки (Административные шаблоны \ Система \ Запретить использование командной строки)
Удобная штука, чтобы убрать какие-то ограничения, можно не искать где вы их прописали, а перейти во все параметры, сортировка по состоянию и быстро узнать какие параметры включены.
Пишите в комментариях или мне в личку свои заметки по различным ограничениям, которые внедряете на практике. Как будет достаточно интересных дополнений, выпущу вторую часть ;-)
Во время поиска решения "как лучше настроить терминальный сервер" для нужд компании, в основном сталкивался с разрозненной информацией по каждой из проблем в отдельности, но единой статьи как настроить от и до так и не нашел. Данный материал является компиляцией различной информации.
Вводные
Настроенный и работающий AD
Наличие файлового сервера (Желательно на основе Windows server)
Установка системы
Во время установки системы важно учесть только один нюанс — дисковую систему необходимо разбить на два логических раздела. Первый (малый, 70 – 120 Гб) выделить для системных файлов, второй — под пользовательские данные.
На это есть две основные причины:
Системный диск малого размера быстрее работает и обслуживается (проверка, дефрагментация, антивирусное сканирование и так далее)
Пользователи не должны иметь возможность хранить свою информацию на системном разделе. В противно случае, возможно переполнение диска и, как результат, медленная и нестабильная работа сервера.
Установка служб удаленных рабочих столов
После перезагрузки открываем Диспетчер серверов и нажимаем Управление - Добавить роли и компоненты:
В окне «Выбор типа установки» выбираем Установка служб удаленных рабочих столов и нажимаем Далее:
В окне «Выбор типа развертывания» выбираем Быстрый запуск и нажимаем Далее:
В «Выбор сценария развертывания» — Развертывание рабочих столов на основе сеансов — Далее:
Еще раз Далее — при необходимости, ставим галочку «Автоматически перезапускать конечный сервер, если это потребуется» и кликаем по Развернуть.
Настройка лицензирования удаленных рабочих столов
Для корректной работы сервера, необходимо настроить службу лицензирования. Для этого открываем диспетчер серверов и кликаем по Средства - Terminal Services - Диспетчер лицензирования удаленных рабочих столов:
В открывшемся окне кликаем правой кнопкой мыши по нашему серверу и выбираем Активировать сервер:
В открывшемся окне дважды кликаем Далее - заполняем форму - Далее - Далее - Снимаем галочку «Запустить мастер установки лицензий» - Готово.
Снова открываем диспетчер серверов и переходим в «Службы удаленных рабочих столов»:
В «Обзоре развертывания» кликаем по Задачи - Изменить свойства развертывания:
В открывшемся окне переходим в Лицензирование - Выбираем тип лицензий - прописываем имя сервера лицензирования (в данном случае локальный сервер) и наживаем Добавить:
Применяем настройки, нажав OK.
Добавление лицензий
Открываем диспетчер серверов и кликаем по Средства - Terminal Services - Диспетчер лицензирования удаленных рабочих столов:
В открывшемся окне кликаем правой кнопкой мыши по нашему серверу и выбираем Установить лицензии:
В открывшемся окне нажимаем Далее - выбираем программу, по которой куплены лицензии, например, Enterprise Agreement - Далее - вводим номер соглашения и данные лицензии - выбираем версию продукта, тип лицензии и их количество - Далее - Готово.
Проверить статус лицензирования можно в диспетчере серверов: Средства - Terminal Services - Средство диагностики лицензирования удаленных рабочих столов.
Тюнинг терминального сервера
Ограничение сессий
По умолчанию, пользователи удаленных рабочих столов могут находиться в системе в активном состоянии без ограничения. Это может привести к зависаниям или проблемам при повторном подключении. Для решения возможных проблем установите ограничения на терминальные сессии.
Открываем диспетчер серверов и кликаем по Службы удаленных рабочих столов
Выбираем ранее созданную коллекцию сеансов, далее в разделе Свойства открываем меню Задачи > изменить свойства
В открывшемся окне в разделе Сеанс устанавливаем ограничения, их следует выбирать опираясь на особенности работы сотрудников для которых выполняется настройка сервера
Диски профилей пользователей + миграция профилей
Одной из задач при настройке терминального сервера является организация хранения данных пользователей работающих на нем.
1-й способ
Во многих компаниях используется миграция профилей пользователей. Это дает возможность перенести место хранения данных на специально выделенное место для данных задач. данный способ позволяет перемещать все персональные каталоги пользователя (Документы, Загрузки, Рабочий стол и др.)
Но не позволяет перемещать
Данные о профиле
В результате чего, в процессе работы терминального сервера происходит "захламление" реестра сервера, и крайне осложняет перенос конфигурации пользователя.
2-й способ
Использовать Диски профилей пользователя
Данная технология является крайне полезной для обеспечения более высокого уровня безопасности , так же позволяет легко, бесследно удалять старые профили пользователей, и переносить в случае необходимости настройки на другой терминальный сервер, так как все данные пользователя хранятся на отдельном VHDX Диске для каждого пользователя.
Проблемой данного метода является сложность изменения размера дискового пространства выделенного пользователю, и вносит изменение в конфигурацию оборудования сервера, что вызывает проблемы с лицензиями 1С, но об это будет дальше.
3-й способ
Скомбинировать лучшее из первых 2х методов. а именно.
Активируем Диски профилей пользователя, но данные каталогов пользователя перемещаем на файловый сервер.
Для активации дисков профилей пользователя необходимо перейти в Службы удаленных рабочих столов > в разделе Свойства открываем меню Задачи > изменить свойства > Диски профилей пользователя.
Читайте также: