Apache guacamole rdp windows 10

Windows в браузере без регистрации и СМС — обзор RDP-клиентов HTML5

Когда-то давно, когда деревья были высокими, а я был молодым и зеленым системным администратором, довелось мне внедрять терминальный сервер на Windows 2000. Я тогда думал, что хорошо бы, если бы для подключения к серверу не нужен был никакой отдельный клиент. Шло время, деревья выросли, олени на свитере отпустили рога, а я — бороду, на рынке начали появляться решения для работы в терминале через браузер. Но они были или нестабильные, или дорогие, и пробные внедрения ушли в долгий ящик.

Прошло еще немного времени, в бороде появилась седина, а решений на базе HTML5 стало куда больше. И мне захотелось сделать краткий обзор бесплатных вариантов — как для начинающих системных администраторов, так и для тех, кто пропустил этот момент, как я.

Итак, хотите пускать сотрудников на терминалки через браузер или админить серваки через него же? Добро пожаловать под кат.

Удобство подключения без отдельного клиента сложно переоценить — браузер есть практически на любом пользовательском устройстве. Помимо удобства пользователей есть и аспект безопасности: поскольку такой клиент является веб-сервисом, защищать его гораздо проще. Действительно, классический RDP с интересными уязвимостями высовывать наружу просто так довольно опасно, работать через VPN не всегда удобно, а сервисы fail2ban и нестандартный порт хоть и помогают, но 100% защиты не дают. В то время как веб-сервис можно защитить авторизацией по сертификату и другими методами двухфакторной аутентификации.

Есть мнение, что использование RDS-Gateway с заворачиванием RDP-трафика через HTTPS и установка сертификатов на клиентах является хорошей защитой. На самом деле это не так — установка сертификатов для RDS-Gateway нужна для проверки подлинности не клиента, а сервера. Убедиться в этом можно, попробовав подключиться сторонними RDP-клиентами. Конечно, часть ботов, ищущих открытый RDP, такой способ отсеет. Но решения fail2ban в таком случае тоже необходимы.

Оставлю настройку безопасности за рамками этой статьи и перейду к конкретным примерам реализации. Тестировать будем на терминальном сервере на базе Windows Server 2019, в качестве приложения для проверки RemoteApp будем использовать 1С 7.7. Потому что можем.

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

Microsoft Remote Desktop Web Client

Установка и настройка клиента подробно описана в документации, приведу основные шаги под спойлером.

Подготовка. Ролям шлюза удаленных рабочих столов и\или посреднику подключений должен быть назначен такой сертификат, которому бы доверяли клиенты. Да, примерно как при обычной работе RDP-клиента через https. Можно завести публичный доверенный сертификат, можно использовать внутреннюю CA, в целях тестирования можно использовать и самоподписанный.

Сначала может понадобиться обновить модуль PowerShellGet.

Это делается командой:

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

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

Теперь нужно настроить сертификат для этого клиента. Делается это командой:

Где cert.cer — путь к сертификату посредника удаленных рабочих столов в формате cer.

Теперь можно опубликовать клиента командой:

После установки клиент становится доступен по ссылке вида:

После успешного логина видны все опубликованные в коллекции приложения RemoteApp.

Опубликованные приложения в браузере.

Попробуем запустить 1С, подключившись Firefox с Kubuntu.

Kubuntu, Firefox, 1C 7.7.

Можно запускать и другие опубликованные приложения. В таком случае они будут работать в одном окне, а верхняя панель будет представлять из себя что-то вроде панели задач.

1С, Paint и WordPad.

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

Подтверждение копирования с удаленного рабочего стола.

А вот чего пока нет, так это трансфера файлов с сервера и на сервер, и это существенная ложка дегтя. Подведем итог.

Что ж, посмотрим, что нам предложит мир opensource.

Apache Guacamole

Пожалуй, одно из самых известных решений. Но версия 1.0 появилась относительно недавно. К ее минусам можно сразу отнести отсутствие официальной поддержки Windows в качестве точки установки — нужна отдельная linux-машина или образ Docker. Документация доступна, как обычно, на официальном сайте. Стоит отметить, что помимо RDP, решение поддерживает доступ через браузер к серверам ssh, telnet и vnc.

Если вам не хочется собирать свежую версию из исходников и разбираться с зависимостями, можно воспользоваться готовыми скриптами установки, вроде скрипта guac-install. Но — как обычно — за сторонние скрипты редакция ответственности не несет.

После установки согласно документации нужно так или иначе создать пользователей и настроить подключения. Я использовал работу с MySQL в качестве хранилища пользователей и их настроек и настраивал все это дело через веб-интерфейс. Через него доступно создание и настройка пользователей, подключений и групп, которые позволяют делать общие подключения для разных пользователей.

Настройка простого RDP-подключения.

Стоит отметить, что если мы хотим прозрачно подключаться, авторизовавшись только через веб-интерфейс, то понадобится или вручную создавать каждому пользователю подключение, вводя его пароль (!), или делать более сложную установку. Например, использовать для хранения настроек и авторизации БД Active Directory, что потребует модификации схемы AD. Или настраивать авторизацию через LDAP, также создавая пользователей и в классической БД вроде MySql.

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

Читайте также:  Philips pta317 драйвера для windows 7

Помимо полноценного рабочего стола есть и поддержка RemoteApp. Важный нюанс — прописывать имя программы в настройках нужно точно так же, как и в файле RDP.

И если все было сделано правильно, наша «семерка» откроется в браузере.

И снова 1С 7.7 в браузере.

Печать работает так же: скачивается PDF, но — в отличие от решения от MS, — есть возможность файлового обмена с сервером.

По сути, Apache Guacamole запускает у себя freerdp и может прокидывать папки со своей линуксовой машины на виндовый сервер.

Перенаправленный диск в 1С.

В свою очередь из браузера можно скачать или загрузить файл через специальное меню. В этом меню можно еще и настроить эмуляцию мыши и экранную клавиатуру. Вызывается оно сочетанием клавиш Ctrl+Alt+Shift.

Текстовый буфер обмена также работает, но немного неудобно (бесит куда больше, чем решение от MS). Современные браузеры в паре с Apache Guacamole позволяют легко копировать текст с удаленного приложения при помощи Ctrl+C, но для вставки текста с локальной машины понадобится использовать меню по Ctrl+Alt+Shift.

Зато практически «из коробки» реализована двухфакторная аутентификация (особенно, если делать установку сторонним скриптом). Например, при помощи алгоритма TOTP.

Вкратце напомню: TOTP (Time-based One-time Password Algorithm) — это алгоритм генерации одноразовых паролей на основе времени. При первом входе пользователю будет предложено считать двухмерный штрих-код или записать набор символов, «скормить» их приложению (например, Google Authenticator). И на основе этого набора символов (security string) приложение каждые 30 секунд будет генерировать новое число-код для входа.

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

На просторах сети я нашел еще один малоизвестный проект, запускающий freerdp и отображающий получившееся через браузер. Попробуем и его.

Myrtille

Проект со всей документацией располагается на github автора. В отличие от Guacamole, Myrtille устанавливается на Windows, да ещё и практически в режиме «Далее — Далее — ОК». Устанавливаем, запускаем браузер.

Windows в браузере.

Помимо RDP поддерживается SSH и подключение к виртуальной машине Hyper-V. Меню управления подключением вызывается по кнопке с тремя точками в левом верхнем углу.

Меню управления подключением.

Работа с файлами производится через веб-интерфейс — по кнопке Files открывается доступ к папке «Мои документы» пользователя для загрузки и скачивания файлов. При этом если Myrtille установлен не на терминальном сервере, придется настраивать перенаправление папки. Печать, в отличие от двух других решений, сразу вызывает окно с диалогом печати PDF.

Чуть хуже дела с RemoteApp при работе приложения в обычном режиме. Для запуска несчастной 1С нужно сформировать ссылку вида:

В которой нужно явно указать пользователя и его пароль (или хэш пароля). Программу необходимо прописать так же, как и в файле RDP — в случае нашей 1С это будет ||1cv7l. Все параметры должны быть URL-encoded.

И в третий раз 1С в браузере.

Для получения хэша пароля можно также воспользоваться myrtille, просто перейдя по ссылке (выполнив GET-запрос):

Двухфакторная аутентификация также доступна «из коробки» и основана на сервисе oliveinnovations.com.

Для работы в доменной среде у приложения есть отдельный режим работы — Enterprise mode. Для его включения нужно при установке (или потом, в файлах конфигурации) указать имя домена и группу администраторов (пользователей, которые могут настраивать подключения). Тогда при входе будет запрашиваться только имя пользователя и пароль, и администратор может создавать предопределенные конфигурации подключения для групп пользователей. Это и позволит нам сделать удобный ярлык для запуска 1С.

Создание подключения в панели управления Enterprise-режима.

Теперь пользователь при входе будет видеть доступные ему подключения и запускать 1С по кнопке, а не по странной ссылке с паролем.

Интерфейс при входе обычного пользователя.

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

Вместо послесловия

Конечно, существуют и другие решения, в том числе и платные. Приведу несколько самых популярных, не трогая монстров вроде Xen Desktop:

В них уже есть поддержка принтеров и работы с файлами, но в принципе и бесплатные решения более-менее дошли до аналогичного уровня.

По результатам исследования я решил остановиться на решении от MS, благо перенос файлов в моем случае не был нужен (точнее, был категорически не нужен).

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Источник

Information Security Squad

stay tune stay secure

Как включить передачу файлов RDP / SSH через Guacamole

Сегодня мы узнаем, как включить передачу файлов RDP / SSH через Guacamole.

Прежде чем продолжить, убедитесь, что у вас есть и работает Guacamole.

Как включить передачу файлов RDP / SSH через Guacamole

С помощью Guacamole можно передавать файлы между удаленными системами и локальными.

В настоящее время передача файлов поддерживается для VNC, RDP и SSH с использованием собственной поддержки передачи файлов протокола или SFTP.

Вы можете передавать файлы, перетаскивая их или используя кнопку загрузки в меню Guacamole.

Передача файлов по SSH по протоколу SFTP

Чтобы включить передачу файлов по SSH в Guacamole по протоколу SFTP, вам нужно отредактировать /etc/guacamole/user-mapping.xml и установить значение параметра enable-sftp в true для соединения SSH.

После внесения изменений перезапустите демоны Tomcat и Guacamole.

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

Перейдите к веб-интерфейсу Guacamole и инициируйте SSH-соединение с удаленным сервером для передачи файлов.

После того как вы вошли на удаленный сервер, нажмите Ctrl + Shift + Alt, чтобы открыть окно настроек

Нажмите кнопку «Upload Files» в верхней части окна настроек, чтобы загрузить файлы.

Ход передачи файла показан в левом нижнем углу окна.

Затем закройте окно настроек, нажав Ctrl + Shift + Alt, и запустите ls в каталоге удаленной загрузки, чтобы просмотреть список доступных файлов.

Вы также можете перетащить файл на сервер и обратно.

Передача файлов через RDP на Guacamole.

Поскольку передача файлов по умолчанию отключена, вам нужно определить параметры enable-drive и drive-path в файле конфигурации /etc/guacamole/user-mapping.xml, чтобы включить его.

enable-drive включает функцию передачи файлов, в то время как путь к диску определяет каталог, в котором будут храниться переданные файлы.

Читайте также:  Generic key for windows 10

Убедитесь, что путь, указанный в параметре drive-path, должен существовать на сервере Guacamole и быть доступным для пользователя guacd, доступен для чтения и записи пользователем, который запускает guacd.

Обратите внимание, что это не относится к каталогу на сервере RDP.

Затем проверьте, доступен ли объект библиотеки guacdr-client.so в каталоге /usr/lib/x86_64-linux-gnu/freerdp.

Если каталог также не выходит из библиотеки guacdr-client.so, создайте каталог и сделайте символическую ссылку для объекта библиотеки guacdr-client.so из /usr/local/lib/freerdp/guacdr-client.so, как показано ниже;

Как только это будет сделано, перезапустите Tomcat и Guacd.

Это автоматически создаст виртуальный диск, с которого пользователи могут передавать файлы в и из.

Этот виртуальный диск будет отображаться как сетевой диск в сеансе RDP.

Загруженные и скачанные файлы будут сохранены на этом диске даже после отключения.

Войдите в веб-панель Guacamole и установите соединение с системой Windows.

После входа в систему вы сможете увидеть созданный виртуальный диск RDP.

Чтобы перенести файлы на удаленный сервер, используйте кнопку загрузки в окне настроек Guacamole, которое вы можете запустить, нажав Ctrl + Shift + Alt.

Файл автоматически поместит файл на виртуальный диск RDP в удаленной системе.

Чтобы загрузить файлы из удаленной системы, просто поместите файлы в папку «Download» на виртуальном диске RDP. Это автоматически предложит вам сохранить файл в вашей локальной системе.

Вы всегда можете проверить сообщения системного журнала либо системного журнала, либо Tomcat на всякий случай.

Это все о том, как включить передачу файлов RDP / SSH через Guacamole.

Вы можете узнать больше о передаче файлов Guacamole здесь.

Источник

Apache Guacamoleв„ў

All recent Guacamole releases are listed here, along with several historical releases. Each release below is listed by the version of the overall software bundle and the date on which it was released. Clicking on the version number will take you to the release notes and downloads for that release, including a pre-built guacamole.war file and all associated source code.

Please be sure to read the installation instructions in the manual thoroughly. If you do not wish to build things from source, you can also install Guacamole using Docker.

If you are looking for the absolute latest unreleased code (or extremely old code not archived here), please check our git repositories on GitHub.

Which version should I download?

Unless you already know that you need a very specific version (your custom or third-party extensions use an older version of the Guacamole API, for example), you should always download the most recent release. Guacamole development is very active, and recent releases will contain bug fixes and performance improvements that will be absent in older releases.

Version Summary Release Date
1.3.0 Automatic prompting for remote desktop credentials, user group support for CAS and OpenID, bug fixes. 2021-01-01
1.2.0 Support for SAML 2.0, Wake-on-LAN, and easy switching between active connections, numerous fixes for RDP, improvements to TOTP, database support, and behavior on iOS devices. 2020-06-28
1.1.0 Dynamic image quality, support for Kubernetes, migration to FreeRDP 2.0.0 and Apache Directory API, fixes and improvements to Docker images, terminal behavior, and user groups. 2020-01-29
1.0.0 User groups, improved clipboard integration, TOTP (Google Authenticator), RADIUS, dead keys. 2019-01-08
0.9.14 OpenID Connect single sign-on, SQL Server support, CAS «ClearPass», user login/logout history, fixes and improvements for RDP, clipboard, file transfer, and terminal emulation. 2018-01-18
0.9.13-incubating CAS single sign-on, fixes for VNC/RDP/SSH/telnet, in-browser playback of screen recordings, automatic connection failover, 256-color console codes. 2017-07-30
0.9.12-incubating Thumbnails as tab icons, HTTP header authentication, performance improvements, and fixes for printing, file transfer, and terminal emulation. 2017-04-01
0.9.11-incubating Two-factor authentication, password policies, improvements to Docker and LDAP. 2017-02-02
0.9.10-incubating Screen sharing, recording, improved file transfer, audio input, Docker support for LDAP. 2016-12-29

Pre-Apache releases

All releases below are from prior to Guacamole’s acceptance into the Incubator. They are not Apache Software Foundation releases, and are licensed under the MIT license.

Version Summary Release Date
0.9.9 Dynamic JPEG/WebP, improved LDAP support, central connection history, filterable connection/user lists. 2015-12-18
0.9.8 Multiple auth extensions, file browsing, VNC audio and file transfer, RDP performance flags. 2015-09-09
0.9.7 Simpler installation/configuration, theming support, Docker support, translations, multiple bug fixes. 2015-06-10
0.9.6 PostgreSQL support, database speed improvements, RDP memory fixes, session management. 2015-03-30
0.9.5 Fixes for iOS, regressions from 0.9.4, and printing issues. Scrollbar for SSH and telnet. 2015-02-16
0.9.4 Completely new interface, single-tab layout, WebSockets by default, simultaneous connections. 2015-01-06
0.9.3 Config file for guacd, improved keyboard, HTTP Basic auth, C0 control codes, bug fixes. 2014-09-30
0.9.2 Wide character support, automated telnet login, keyboard-interactive auth, bug fixes. 2014-07-21
0.9.1 Performance enhancements, improved UI, better mobile support, telnet, MySQL auth fixes 2014-05-23
0.8.4 MySQL auth fixes 2014-05-23
0.9.0 Adds support for file transfer, RemoteApp, public key auth, and improved error handling. 2014-03-28
0.8.3 LDAP support, connection grouping and balancing, improved performance, SSL support. 2013-08-28

Copyright © 2020 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. The HTML5 shield logo has been modified from the original work of the World Wide Web Constortium (W3C), which is licensed under the Creative Commons Attribution 3.0 license.

Apache Guacamole, Guacamole, Apache, the Apache feather logo, and the Apache Guacamole project logo are trademarks of The Apache Software Foundation.

Источник

Setting Up Web-Based Guacamole Tool to Access Remote Linux/Windows Machines

As a system administrator, you may find yourself (today or in the future) working in an environment where Windows and Linux coexist. It is no secret that some big companies prefer (or have to) run some of their production services in Windows boxes and others in Linux servers. If that is your case, you will welcome this guide with open arms (otherwise go ahead and at least make sure to add it to your bookmarks).

Install Guacamole for Remote Desktop and SSH Access

In this article we will introduce you to guacamole, a remote desktop gateway powered by Tomcat that only needs to be installed on a central server.

Читайте также:  Run linux program on windows

Guacamole will provide a web-based control panel that will allow you to switch quickly from one machine to another – all within the same web browser window.

Testing Environment

In this article we have used the following machines. We will install Guacamole in an Ubuntu box and use it to access a Windows 10 box over Remote Desktop Protocol (RDP) and a RHEL 7 box using SSH:

That said, let’s get started.

Installing Guacamole Server

1. Before installing guacamole, you will need to take care of its dependencies first.

In Debian and Ubuntu (use sudo):

In RHEL / CentOS / Fedora 18-21:

In Fedora 22-23:

2. Download and extract the tarball.
As of early February, 2016, the latest version of Guacamole is 0.9.9. You can refer to the Downloads page to find out the latest version at a given time.

3. Compile the software.

As it is to be expected, configure will check your system for the presence of the required dependencies and for supported communication protocols (as can be seen in the highlighted square, Remote Desktop Protocol (RDP) and SSH are supported by the dependencies installed earlier).

If everything goes as expected you should see this when it completes (otherwise, make sure you installed all the necessary dependencies):

Guacamole Server Installation

As the last line in the above image suggests, run make and make install to compile the program:

4. Update the cache of installed libraries.

and hit Enter.

Installing Guacamole Client

After completing the above steps, the guacamole server will have been installed. The following instructions will now help you to set up guacd (the proxy daemon that integrates Javascript with communication protocols such as RDP or SSH) and guacamole.war (the client), the component that makes up the final HTML5 application that will be presented to you.

Note that both components (guacamole server and client) need to be installed on the same machine – there is no need to install a so-called client on the machines you want to connect to).

To download the client, follow these steps:

5. Download the web application archive and change its name to guacamole.war.

Note: Depending on your distribution, the Tomcat libraries directory may be located at /var/lib/tomcat.

6. Create the configuration file (/etc/guacamole/guacamole.properties). This file contains the instructions for Guacamole to connect to guacd:

Insert the following contents to /etc/guacamole/guacamole.properties. Note that we are referencing a file we will create in the next step (/etc/guacamole/user-mapping.xml):

And create a symbolic link for Tomcat to be able to read the file:

7. Guacamole uses the user-mapping.xml, create this file to define which users are allowed to authenticate to the Guacamole web interface (between tags) and which connections they can use (between tags):

The following user mapping grants access to the Guacamole web interface to user tecmint with password tecmint01. Then, inside the SSH connection we need to place a valid username to log in to the RHEL box (you will be prompted to enter the corresponding password when Guacamole initiates the connection).

In the case of the Windows 10 box, there is no need to do that as we will be presented with the login screen over RDP.

To obtain the md5 hash of the password tecmint01, type the following command:

Then insert the output of the command in the password field inside the tags:

As it is the case with all files that contain sensitive information, it is important to restrict the permissions and change the ownership of the user-mapping.xml file:

Start Tomcat and guacd.

Launching the Guacamole Web Interface

8. To access the Guacamole web interface, launch a browser and point it to http://server:8080/guacamole where server is the hostname or IP address of your server (in our case it is http://192.168.0.100:8080/guacamole ) and login with the credentials given earlier (username: tecmint, password: tecmint01):

Guacamole Login Interface

9. After clicking on Login, you will be taken to the administrative interface where you will see the list of connections user tecmint has access to, as per user-mapping.xml :

Guacamole User Connections

10. Go ahead and click on the RHEL 7 box to login as gacanepa (the username specified in the connection definition).

Note how the connection source is set to 192.168.0.100 (the IP of the Guacamole server), regardless of the IP address of the machine that you use to open the web interface:

Guacamole: Access Remote Linux

11. If you want to close the connection, type exit and hit Enter. You will prompted to return to the main interface (Home), reconnect, or logout from Guacamole:

Guacamole Session Disconnection

12. Now it’s time to try the remote desktop connection to Windows 10:

Connect Windows Machine from Linux

Congratulations! Now you can access a Windows 10 machine and a RHEL 7 server from within a web browser.

Summary

In this article we have explained how to install and configure Guacamole to allow access to remote machines over RDP and SSH. The official website provides an extensive documentation to help you set up access using other protocols, such as VNC and other authentication mechanism, such as DB-based..

As always, don’t hesitate to drop us a note if you have any questions or suggestions about this article. We also look forward to hearing your success stories.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Поделиться с друзьями
Советы экспертов и специалистов
Adblock
detector