База знаний

www. IT-Mehanika .ru --  журнал доброго админа

Web доступ к RDP. Guacamole в Ubuntu 13.04

Мне не давала покоя возможность доступа к RDP через WEB. Citrix - дорого, MS решения - это смешно, ActiveX грузится тебе на комп и ты получаешь тот же RDP-клиент, но  с большим гимором и меньшей безопасностью. Зачем это вообще нужно? Для админов это нужно в случае если ты находишься в месте где гад-провайдер оставил только 80 и 443 порт (гостиница или общественные места), а ситуация требует вмешательства. Для начальства - зайти глянуть в финансовой аналитике красивый рост доходов находясь на яхте в океане. Для бухов и манагеров быстро залезть и внести данные или скорректировать текущие.
Во многих случаях хватает VPN соединений или проброшенных портов. А если находясь в другом городе (стране) провайдер режет порты и VPN? Не раз нарывался на это. Для этого нужен софт позволяющий через стандартные порты 80 и 443, со стандартного браузера влезть и поработать. Раньше реально работал только Citrix. Но они жмоты. Очень дорого покупать лицензии Citrix, а что бы работало еще и лицензии MS. Появился стабильный релиз Guacamole. Оказалось - работает. Guacamole в Ubuntu 13.04 берется из стандартных репозитариев. Но если хочется можно подцепить их репозитарий
sudo add-apt-repository ppa:guacamole/stable
Строка установки проста, надо установить apache, guacamole и tomcat :
apt-get install guacamole-tomcat apache2 php5 libapache2-mod-php5 libguac-client-rdp0
буду установлены следующие пакеты с guacamole:
guacamole - HTML5 web application for accessing remote desktops
guacamole-tomcat - Tomcat-based Guacamole install with VNC support
guacd - Guacamole proxy daemon
libguac-client-rdp0 - RDP client plugin for Guacamole
libguac-client-vnc0 - VNC client plugin for Guacamole
libguac-dev - Development headers for the core Guacamole library
libguac3 - Core Guacamole library used by guacd and client plugins

Также установится и Tomcat c Apache. Не забывайте про пакет libguac-client-rdp0. Он по умолчанию не ставится. Только VNC клиент. Если вам нужен еще и SSH-клиент, не забудьте родной репозитарий guacamole. В Убунте его нет! Дальше настройка пользователей с полагающимися им коннекшенсами :). Это безобразие лежит в файлике /etc/guacamole/user-mapping.xml . Как пример :
<authorize
                    username="pupkin"
                   password="samdurak"
                   >
  <connection>
        <protocol>rdp</protocol>
        <param>rdpserver.nonet.local</param>
        <param>3389</param>
        <param>NONET</param>
       <param>pupkin</param>
  </connection>
  <connection>
         <protocol>vnc</protocol>
         <param>192.168.2.10</param>
         <param>5900</param>
         <param>samdurak</param>
  </connection>
</authorize>

И так для каждого пользователя которому мы хотим дать доступ через WEB морду. После добавления пользователя в user-mapping.xml не надо перегружать guacd.
Он сам все подхватит. Соответственно можно тестить - http://mytomcat:8080/guacamole . Что касается безопасности. Хранить пароли можно и в md5. Как пример :
<authorize username="pupkin"
             password="319f4d26e3c536b5dd871bb2c52e3178"
             encoding="md5">
...
</authorize>

Порт 8080 не всегда удобен, поэтому желательно запустить все через Apache.
Для начала настроим mod_proxy в Apache. Установим модули в Apache и разрешим их.
sudo apt-get install libapache2-mod-proxy-html libapache2-mod-gnutls
Разрешаем:
sudo a2enmod proxy
sudo a2enmod ssl
sudo a2enmod cache
sudo a2enmod proxy_connect
sudo a2enmod proxy_html
sudo a2enmod proxy_ftp
sudo /etc/init.d/apache2 restart
Дальше в конфиге по умолчанию вставляем :
<Location /guacamole/>
     Order allow,deny
     Allow from all
    ProxyPass http://localhost:8080/guacamole/ max=20 flushpackets=on
    ProxyPassReverse http://localhost:8080/guacamole/
</Location>

В tomcat надо прописать или раскомментировать коннектор в файле conf/server.xml.
<Connector port="8080" protocol="HTTP/1.1"
         connectionTimeout="20000"
         URIEncoding="UTF-8"
          redirectPort="8443" />

Заставляем apache втянуть новый конфиг sudo /etc/init.d/apache2 reload и так же рестартуем tomcat - /etc/init.d/tomcat6 restart .
Для связки Apache с Tomcat по AJP, необходимо вставить или раскомментировать коннектор Tomcat
<Connector port="8009" protocol="AJP/1.3"
         URIEncoding="UTF-8"
         redirectPort="8443" />

А в Apache прописать :
<Location /guacamole/>
Order allow,deny
Allow from all
ProxyPass ajp://HOSTNAME:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse ajp://HOSTNAME:8009/guacamole/
</Location>

Соответственно рестартануть службы не забудьте :)
Помните! Guacamole жестко прописан к каталогу /guacamole . Схему проксирования указанную на сайте Guacamole на другой каталог, мне не удалось реализовать. Видимо руки кривые.
Но попрбуйте рекомендуемую авторами схему:
<Location /new-path/>
Order allow,deny
Allow from all
ProxyPass ajp://HOSTNAME:8009/guacamole/ max=20 flushpackets=on
ProxyPassReverse ajp://HOSTNAME:8009/guacamole/
ProxyPassReverseCookiePath /guacamole/ /new-path/
</Location>

Дальше все просто в браузере http://www.mycontora.org/guacamole и залогинится. Если появился список серверов - все правильно! Работайте и удачи Вам. А еще фига с маком MS и Citrix :)

Комментарии   

0 #5 mrbublik 25.01.2014 11:00
Самое простое, если у вас Апач, впихните в default. или как у вас называется конфиг-файл для веб-сервера по умолчанию.
Разница ощущается только между клонами красной шапки(редхата) и клонами дебиана. Там по разному конфиги называются.
0 #4 rapida 24.01.2014 20:22
подскажите пожалуйста в какой именно конфиг надо добавить следующее:
Location /guacamole/
Order allow,deny
Allow from all
ProxyPass localhost:8080/guacamole/ max=20 flushpackets=on
ProxyPassRevers e localhost:8080/guacamole/
/Location
0 #3 Виталий 05.09.2013 23:18
Только в адресной строке браузера надо набрать ...mycontora.or g:8080/guacamol e/
0 #2 Виталий 02.09.2013 15:53
Еще бы добавить сюда установку libguac-client- ssh0 и вообще будет отпадно. :) Ну это конечно излишество.
+1 #1 Виталий 02.09.2013 15:48
Вов, статья супер. отличное решение для большого количества распределенных серверов, с быстрейшим доступом к ним. Отличная статья. Спасибо.

You have no rights to post comments