Table of Contents

Guacamole - это HTTP шлюз для подключения к RDP и VNC консолям. Оно работает.

У Guacamole наконец-то появились стабильные сборки :)

apt-get update && apt-get install apache2 php5 libapache2-mod-php5 tomcat6 libcairo2 libpng12-0 libvncserver0 libfreerdp1 libfreerdp-plugins-standard

Скачаваем отсюда:
http://guac-dev.org/

http://downloads.sourceforge.net/project/guacamole/current/binary/ubuntu-12.04-i386/guacamole-0.7.0-ubuntu-12.04-i386.tar.gz

http://sourceforge.net/projects/guacamole/files/current/binary/ubuntu-12.04-i386/guacamole-0.6.4-ubuntu-12.04-i386.tar.gz
http://sourceforge.net/projects/guacamole/files/current/binary/ubuntu-12.04-amd64/guacamole-0.6.4-ubuntu-12.04-amd64.tar.gz

Распаковываем и ставим все:

tar -xvf guacamole-0.6.4-ubuntu-12.04-i386.tar.gz
cd guacamole-0.6.4-ubuntu-12.04-i386
dpkg -i ./*

Внимательно следим, чтобы не было ошибок к конце!
Все… Оно запустилось…
Логи Вываливаются в файл /var/log/syslog и в папку /var/log/tomcat6/

Если вдруг в /var/log/syslog написано что
Could not write PID file
то делаем так:

mkdir /var/run/guacd
chown guacd:guacd /var/run/guacd
service guacd restart

Настройка

nano /etc/guacamole/user-mapping.xml
VNC Plugin Parameters
<protocol>vnc</protocol> 

hostname
port
password
read-only
swap-red-blue
encodings

RDP Plugin Parameters

<protocol>rdp</protocol>

hostname #- обязательный
port  #- обязательный
domain
username 
password
initial-program
color-depth
width 	
height 

Если надо несколько соединений для одного пользователя, то есть тег <connection>

  <authorize
            username="username"
            password="pass"
            >
 <connection name="rdpserver">
        <protocol>rdp</protocol>
        <param name="hostname">rdpserver</param>
        <param name="port">3389</param>
        <param name="domain">DOMAIN</param>
        <param name="username">Username</param>
</connection>
<connection name="Debian with wine">
        <protocol>vnc</protocol>
        <param name="hostname">vnchost</param>
        <param name="port">5900</param>
        <param name="password">vncpassword</param>
</connection>
</authorize>

Запуск под конкретного юзера

http://<server>:8080/guacamole/?username=USER&password=PASS

Guacamole через nginx reverse proxy

Проксирование через nginx работает при таких вот настройках location:

location /guacamole/ {
proxy_buffering off;
proxy_pass http://192.168.1.46:8080/guacamole/;
}

Аутентификация LDAP

Компиляция и установка guacamole-auth-ldap

apt-get update
apt-get install maven git default-jdk
git clone git://guacamole.git.sourceforge.net/gitroot/guacamole/guacamole-auth-ldap/
cd guacamole-auth-ldap/
mvn package

В результате в папке ./target должен быть файл guacamole-auth-ldap-0.5.0.jar . Этот файл надо скопировать в папку с библиотеками, указанную в файле /etc/guacamole/guacamole.properties.

mkdir /var/lib/guacamole/lib/
cp ./target/guacamole-auth-ldap-0.5.0.jar /var/lib/guacamole/lib/

Если эта папка не задана, то её надо задать с помощью свойства “lib-directory”.

lib-directory: /var/lib/guacamole/lib

Не рекомендуется складывать библиотеки guacamole в папку /var/lib/tomcat6. При установке guacamole .war файл попадает в папку /var/lib/guacamole , а библиотеки .jar рекомендуется хранить в папке /var/lib/guacamole/lib.

Настройка guacamole-auth-ldap

Для того чтобы пользователи аутентифицировались в домене, в каталог LDAP надо добавить соответствующий класс объектов “guacConfig”.
В папке doc, пакета guacamole-auth-ldap лежат файлы exampleConfigGroup.ldif guacConfigGroup.ldif guacConfigGroup.schema, в которых описаны объекты, необходимые для аутентификации пользователей.
Для создания объектов в схеме предусмотрены файлы guacConfigGroup.ldif и guacConfigGroup.schema.

root@rdp:~/guacamole-auth-ldap/doc# cat guacConfigGroup.ldif
dn: cn=guacConfig,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: guacConfig
olcAttributeTypes: {0}( 1.3.6.4822.112 NAME 'protocol' SYNTAX 1.3.6.1.4.1.1466
 .115.121.1.15 )
olcAttributeTypes: {1}( 1.3.6.4822.113 NAME 'parameter' SYNTAX 1.3.6.1.4.1.146
 6.115.121.1.15 )
olcObjectClasses: {0}( 1.3.6.4822.212 NAME 'guacConfig' DESC 'Guacamole config
 uration' AUXILIARY MUST protocol MAY parameter )
root@rdp:~/guacamole-auth-ldap/doc# cat guacConfigGroup.schema

attributetype ( 1.3.6.4822.112 NAME 'guacConfigProtocol'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

attributetype ( 1.3.6.4822.113 NAME 'guacConfigParameter'
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

objectClass ( 1.3.6.4822.212 NAME 'guacConfigGroup'
    DESC 'Guacamole configuration group'
    SUP groupofnames
    MUST protocol
    MAY parameter )

А пример конфигурации соединения приведен в файле exampleConfigGroup.ldif, который содержит наименование протокола и параметров:

~/guacamole-auth-ldap/doc# cat exampleConfigGroup.ldif

dn: cn=Example Config,dc=guac-dev,dc=org
objectClass: guacConfigGroup
cn: Example Config
protocol: vnc
parameter: hostname=localhost
parameter: port=5900
parameter: password=secret
member: cn=user1,dc=example,dc=com
member: cn=user2,dc=example,dc=com

Добавление информации из файлов *.ldif на контроллере домена AD

Конфигурирование '''/etc/guacamole/guacamole.properties'''

# Use LDAP authentication
auth-provider: net.sourceforge.guacamole.net.auth.ldap.LDAPAuthenticationProvider

# Configuration for LDAP connection
ldap-hostname:           LDAP_SERVER_HOSTNAME
ldap-port:               389

# The attribute which uniquely identifies users
ldap-username-attribute: uid

# The base DN which, when appended to the user identifier attribute,
# produces the full DN of the user being authenticated.
ldap-user-base-dn:       ou=people,dc=example,dc=net

# The base DN within which all guacConfig objects can be found.
ldap-config-base-dn:     dc=example,dc=net