Apache Guacamole, SSH, RDP ve VNC gibi farklı protokolleri kullanarak bilgisayarınıza/sunucunuza uzaktan bağlanmanıza olanak tanıyan ücretsiz ve açık kaynaklı bir uzak masaüstü ağ geçididir. Apache Guacamole, Apache Software Foundation tarafından sağlanır ve Apache License 2.0 ile lisanslanır.
Apache Guacamole, istemcisiz bir uzak masaüstü ağ geçididir. Apache Guacamole’ye herhangi bir zamanda herhangi bir yerden yalnızca bir web tarayıcısı kullanarak erişebilirsiniz. RDP’li Windows, VNC ve SSH’li Linux sistemi gibi farklı protokollere sahip birden fazla uzak işletim sisteminiz varsa Apache Guacamole kullanılması önerilir.
Bu eğitimde, Apache Guacamole’yi bir Debian 11 Bullseye’a kuracak ve yapılandıracaksınız. Bu, bazı paket bağımlılıklarını ve Apache Tomcat 9’u kurmayı, ardından Guacamole sunucusunu kurmayı ve Java uygulaması Guacamole web uygulamasını kurmayı içerir. Sonunda, Nginx’i Guacamole web uygulaması için bir web tarayıcınız olduğu sürece sunucularınıza her yerden erişmenize izin veren bir ters proxy olarak kuracaksınız.
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdaki gereksinimlere ihtiyacınız olacak:
- Debian 11 Bullseye çalıştıran en az 2 GB RAM’e sahip bir sunucu.
- Kök ayrıcalıklarına sahip bir kullanım veya kök olmayan kullanıcı.
- Nano editör ile temel bilgiler. Veya vim gibi tercih ettiğiniz düzenleyiciyi kullanabilirsiniz.
Derleme Bağımlılıklarını Yükleme
İlk başta, Apache Guacamole sunucusunu oluşturmak için bazı derleme bağımlılıkları kuracaksınız. Bu, VNC protokolü için destek sağlayan ‘libvncserver-dev’, SSH protokolü için ‘libssh2-1’, RDP protokolü için ‘freerdp2-dev’ ve Kubernetes desteği için ‘libwebsockets-dev’ gibi bazı temel paketleri içerir.
Dikkate almak için, Telnet destekleri için ‘libtelnet-dev’ kurmayacaksınız. Bunun nedeni, telnet’in eski bir protokol olarak kabul edilmesi ve güvenli olmamasıdır.
1. Şimdi aşağıdaki apt komutunu çalıştırarak paket listenizi güncelleyin.
sudo apt update
2. Bundan sonra, aşağıdaki komutu çalıştırarak Apache Guacamole sunucusunu oluşturmak için bağımlılıkları kurun.
sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl
Bu komutun tamamlanması, sunucunuzun internet bağlantısına bağlı olarak biraz zaman alabilir.
Apache Tomcat 9’u Yükleme
Derleme bağımlılıklarını kurduktan sonra Apache Tomcat 9’u kuracaksınız. Bu paket Java ile yazılmış bir web uygulaması olan Guacamole web uygulaması için gereklidir.
1. Apache Tomcat 9’u sisteminize kurmak için aşağıdaki komutu çalıştırın.
sudo apt install -y tomcat9 tomcat9-admin tomcat9-common tomcat9-user
2. Apache Tomcat 9 yüklendikten sonra aşağıdaki komutu çalıştırarak Apache Tomcat hizmetini başlatın ve etkinleştirin. Debian tabanlı sistemlerde Apache Tomcat 9, 'tomcat9'
adlı hizmetle birlikte gelir.
sudo systemctl enable --now tomcat9
3. Şimdi, her şey yolunda görünüyorsa, aşağıdaki komutu çalıştırarak ‘tomcat9’ hizmetinin durumunu doğrulayın.
sudo systemctl status tomcat9
Aşağıdaki çıktıyı alacaksınız. ‘Tomcat9’ hizmetinin ‘etkin (çalışıyor)’ olduğundan emin olun.
Guacamole sunucusunu derleme
Bu bölümde Guacamole sunucusunu indirip derleyeceksiniz. Bu, uzak sunuculara ve masaüstlerine bağlanmak için kitaplıklar içeren Apache Guacamole’nin ana bileşenidir. Guacamole sunucusu, ‘libguacd’ C kitaplığını ve desteklenen protokoller için tüm kitaplıkları ve ayrıca Guacamole’nin kalbi guacd’yi içerir.
Guacamole, guacamole web uygulamasından tünellenen tüm istemci bağlantılarını yönetir, ardından uzak sunuculara ve masaüstlerine onlar adına bağlanır. Guacamole sunucusunu oluşturup derleyerek, sisteminizde yeni bir ‘guacd’ hizmetine sahip olacaksınız.
1. Çalışma dizininde '/usr/src'
konumuna giderek başlayın. Bir şeyler oluşturmak ve derlemek için tüm kaynak kodları bu dizine gider.
cd /usr/src
2. Şimdi, aşağıdaki wget komutunu çalıştırarak Guacamole-sunucu kaynak kodunu indireceksiniz. Guacamole İndirme sayfasını kontrol ettiğinizden ve Guacamole sunucusunun en son sürümünü kopyaladığınızdan emin olun. Bu yazının yazıldığı sırada en son sürüm 1.3.0’dır.
wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz
3. Ardından, kaynak kodunu çıkarın ve yeni bir ‘guacamole-server-VERSION-NUMBER’ dizini alacaksınız. O dizine gidin.
tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/
4. Şimdi, Guacamole sunucusunu oluşturmak için tüm sistem gereksinimlerini doğrulayın ve aşağıdaki komutu çalıştırarak ortamınızı kurun. '--with-systemd-dir=/etc/systemd/system/'
seçeneği, '/etc/systemd/system/'
dizininde bulunabilecek olan systemd hizmet dosyasını kurmak için kullanılır.
./configure --with-systemd-dir=/etc/systemd/system/
Şuna benzer bir çıktı alacaksınız:
------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... no
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no
Protocol support:
Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ no
VNC ........... yes
Services / tools:
guacd ...... yes
guacenc .... yes
guaclog .... yes
FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
Init scripts: no
Systemd units: /etc/systemd/system/
Type "make" to compile guacamole-server.
‘Kütüphane durumu’ ve ‘Protokol desteği’ bölümlerine bir göz atın. Ek bağımlılıklar ve kitaplıklar kurarak protokol desteklerini ayarlayabilirsiniz.
5. Ardından, aşağıdaki komutu çalıştırarak Guacamole sunucusunu derleyin ve kurun.
make
make install
Derleme ve yükleme işleminin tamamlanması biraz zaman alabilir.
6. Şimdi, her şey tamamlandıktan sonra, tüm yeni sistem kitaplıklarını uygulamak için aşağıdaki komutu çalıştırın.
sudo ldconfig
Bu bölümde Guacamole-sunucu paketini kurdunuz. Ardından, Guacamole sunucusu için bazı gerekli yapılandırmaları oluşturacaksınız.
Guacamole-Server Kurulumu
Guacamole sunucusunun çalışmasını sağlamak için, '/etc/guacamole/'
yapılandırma dizinini oluşturacak, ardından varsayılan Guacamole sunucusu yapılandırması olarak yeni 'guacamole.properties'
dosyasını, Guacamole kayıt sistemi için 'logback.xml'
dosyasını ve Guacamole kullanıcıları kimlik doğrulamasını ve uzak sunuculara ve masaüstlerine bağlantıları tanımlamak için 'user-mapping.xml'
dosyası.
1. Başlamak için, içindeki ‘uzantılar’ ve ‘lib’ ek dizinleri içinde yeni bir '/etc/guacamole/'
dizini oluşturmak için aşağıdaki komutu çalıştırın. Ardından 'GUACAMOLE_HOME=/etc/guacamole'
ortam değişkenini '/etc/default/tomcat9'
dosyasına ekleyin. Bu, Tomcat 9 sunucu uygulaması kapsayıcısına 'GUACAMOLE_HOME'
dizinini '/etc/guacamole/'
dizinine bakmasını söyleyecektir.
mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9
2. Şimdi, nano’yu veya tercih ettiğiniz düzenleyiciyi kullanarak ‘guacamole.properties’ ana yapılandırmasını oluşturun.
sudo nano /etc/guacamole/guacamole.properties
Aşağıdaki yapılandırmayı girin:
# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port: 4822
# user mapping and user connections
user-mapping: /etc/guacamole/user-mapping.xml
'guacd-hostname'
seçeneği, guacd hizmetinin çalışacağı ana bilgisayar adını veya IP adresini tanımlar. Bu öğretici, guacd hizmetini çalıştırmak için yerel ana bilgisayarı kullanır.'guacd-port'
seçeneği, guacd hizmeti için varsayılan bağlantı noktasını tanımlar. Bu öğretici, guacd hizmeti için ‘4822’ bağlantı noktasını kullanır.- ‘Kullanıcı eşleme’ seçeneği, kullanıcıların kimlik doğrulaması için dosya yapılandırmasını ve mevcut bağlantıların bir listesini tanımlar. Bu öğretici, Guacamole sunucusu için kullanıcıları ve bağlantıları tanımlamak için
'/etc/guacamole/user-mapping.xml'
dosyasını kullanır. Başka bir kimlik doğrulama yöntemi kullanmak ilginizi çekebilir, Guacamole Belgelerini kontrol edin.
Dosyayı kaydedin ve kapatın.
3. Ardından, günlüğe kaydetme ve hata ayıklama için yeni bir 'loogback.xml'
yapılandırması oluşturun. Varsayılan olarak, Guacamole yalnızca konsolda oturum açar. Bu yapılandırmayı kullanmak, Guacamole’nin Logback günlük kaydı çerçevesi aracılığıyla oturum açmasına izin verir.
sudo nano /etc/guacamole/logback.xml
Aşağıdaki yapılandırma satırlarını ekleyin.
<configuration>
<!-- Appender for debugging -->
<appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Log at DEBUG level -->
<root level="debug">
<appender-ref ref="GUAC-DEBUG"/>
</root>
</configuration>
Yapılandırma dosyasını kaydedin ve kapatın.
4. Şimdi, yeni bir md5 parola karması oluşturacak ve Guacamole kullanıcı kimlik doğrulaması ve bağlantıları için yeni bir dosya oluşturacaksınız.
md5 parola karmasını oluşturmak için aşağıdaki komutu çalıştırın. Ve şifreyi güçlü şifrenizle değiştirdiğinizden emin olun.
echo -n StrongPasswordUserJohnDoe | openssl md5
Mod5 karma şifresinin bir çıktısını alacaksınız. notunuza kopyalayın.
(stdin)= aca22211ffcfb8aa8ad7627195ad4fce
5. Bundan sonra, nano düzenleyiciyi kullanarak yeni bir 'user-mapping.xml'
dosyası oluşturun.
sudo nano /etc/guacamole/user-mapping.xml
Aşağıdaki konfigürasyonları girin. Ve ‘kullanıcı adı’ ve ‘şifre’yi değiştirdiğinizden emin olun. Ayrıca, '<connection>...</connection>'
bölümüne bir göz atın ve bağlantı ayrıntılarınızı sunuculara veya masaüstlerine ekleyin.
<user-mapping>
<!-- Another user, but using md5 to hash the password
(example below uses the md5 hash of "PASSWORD") -->
<authorize
username="johndoe"
password="aca22211ffcfb8aa8ad7627195ad4fce"
encoding="md5">
<!-- First authorized connection -->
<connection name="SSH localhost">
<protocol>ssh</protocol>
<param name="hostname">localhost</param>
<param name="port">22</param>
<param name="username">johndoe</param>
<param name="password">SSHPASSWORD</param>
</connection>
<!-- Second authorized connection -->
<connection name="localhost">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>
<!-- Third authorized connection -->
<connection name="otherhost">
<protocol>vnc</protocol>
<param name="hostname">otherhost</param>
<param name="port">5900</param>
<param name="password">VNCPASS</param>
</connection>
</authorize>
</user-mapping>
Dosyayı kaydedin ve kapatın.
Artık Guacamole sunucusunun yapılandırmasını tamamladınız. Ardından, tarayıcınızda göreceğiniz web uygulaması olan Guacamole web uygulamasını yükleyip yapılandıracaksınız.
Guacamole İstemci Web Uygulamasını Yükleme
Bu bölümde Guacamole web uygulamasını sisteminize kuracaksınız. Bu, Guacamole web uygulamasının derlenmiş ikili dosyasını indirerek ve onu Tomcat 'webaps'
dizinine dağıtarak yapılabilir.
cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war
2. Şimdi, aşağıdaki komutu çalıştırarak Java ikili uygulamasını 'guacamole-VERSION.war'
Tomcat dizinine '/var/lib/tomcat9/webapps/'
dağıtın. Bu, Guacamole web uygulamasını Apache Tomcat sunucu uygulaması kapsayıcısı aracılığıyla erişilebilir hale getirir.
sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war
3. Bundan sonra, yeni bir web uygulaması uygulamak için Tomcat 9 hizmetini yeniden başlatın.
sudo systemctl restart tomcat9
4. Ardından, aşağıdaki komutu çalıştırarak ‘guacd’ hizmetini başlatın ve etkinleştirin.
sudo systemctl enable --now guacd
Ardından aşağıdaki komutu kullanarak doğrulayın.
sudo systemctl status guacd
Aşağıdaki ekran görüntüsü gibi bir çıktı alacaksınız.
Bu noktada Guacamole-sunucu uygulamasının (arka uç) ve Guacamole web uygulamasının (ön uç) kurulumunu tamamladınız. Ardından, Nginx’i Guacamole web uygulaması için bir ters proxy olarak kuracaksınız.
Guacamole için Nginx Ters proxy kurulumu
Bu bölümde, Nginx web sunucusunu kuracak ve onu Guacamole web uygulaması için bir ters proxy olarak yapılandıracaksınız. Bu, Guacamole web uygulamanız için alan adını ayarlamanıza ve SSL sertifikalarıyla güvenceye almanıza olanak tanır.
1. Başlamak için, Nginx paketlerini kurmak için aşağıdaki 'apt'
komutunu çalıştırın.
sudo apt install nginx -y
2. Tüm Nginx paketleri yüklendikten sonra, '/etc/nginx/sites-available'
dizininde yeni bir sanal ana bilgisayar dosyası 'guacamole'
oluşturun. Guacamole ters proxy ile ilgili tüm yapılandırmalar bu dosyada saklanacaktır.
sudo nano /etc/nginx/sites-available/guacamole
Aşağıdaki yapılandırmayı girin. Ve SSL sertifikalarının alan adını ve yolunu değiştirdiğinizden emin olun. Bu örnek, 'privkey.pem'
SSL özel anahtarı ve 'fullchain.pem'
genel anahtarı ile 'example.io'
etki alanını ve '/etc/letsencrypt/live/exmaple.io/'
dizininde bulunan bot sertifikalarını kullanır.
server {
listen 80;
server_name example.io;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443 ssl http2;
server_name example.io;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;
access_log /var/log/nginx/guacamole-access.log;
error_log /var/log/nginx/guacamole-error.log;
location /guacamole/ {
proxy_pass http://127.0.0.1:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log off;
}
}
Dosyayı kaydedin ve kapatın.
3. Şimdi, '/etc/nginx/sites-enabled/'
dizinine yeni bir sembolik bağlantı oluşturarak 'guacamole'
sanal ana bilgisayar dosyasını etkinleştirin. Ardından, herhangi bir sözdizimi hatası olup olmadığını kontrol etmek için tüm Nginx yapılandırmalarını doğrulayın.
sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t
‘Syntax OK’ çıktısını alacaksınız, bu da konfigürasyonda hata olmadığı anlamına gelir.
4. Ardından, yeni bir yapılandırma uygulamak için Nginx hizmetini yeniden başlatın, ardından aşağıdaki komutu çalıştırarak durumunu doğrulayın.
sudo systemctl restart nginx
sudo systemtl status nginx
Aşağıdaki ekran görüntüsüne benzer bir çıktı alacaksınız. Nginx hizmeti 'etkin (çalışıyor)'.
5. Ayrıca, Guacamole web uygulamasını farklı alt URL’de dağıtmak istiyorsanız, 'location /guacamole/ { ... }'
seçeneğini yeni path 'location /new-path/ { ... }'
olarak değiştirin ve 'proxy_cookie_path'
seçeneğini aşağıdaki gibi yeni yolunuza ekleyin.
location /new-path/ {
proxy_pass http://127.0.0.1:8080/guacamole/;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_cookie_path /guacamole/ /new-path/;
access_log off;
}
Bu bölümde, Guacamole web uygulaması için bir ters proxy olarak Nginx kurulumunu ve yapılandırmasını tamamladınız. Bu noktada Apache Guacamole kurulumunuz tamamlanmıştır ve alan adınızdan erişilebilir.
Apache Guacamole Kurulumunu Doğrulayın
Bu bölümde, Apache Guacamole kurulumunu doğrulayacaksınız.
İlk olarak, web tarayıcınızı açın ve varsayılan '/guacamole'
yolu ile Guacamole kurulumunuz için alan adını yazın.
Şimdi, aşağıda Guacamole giriş sayfasını göreceksiniz. 'user-mapping.xml'
dosyasında yapılandırdığınız kullanıcı adınızı ve şifrenizi girin, ardından Oturum Aç düğmesini tıklayın.
Giriş yaptıktan sonra, kullanıcılarınız için tanımlanmış bağlantıların bir listesini göreceksiniz.
Hedef sunucuya bağlanmak için bağlantı adına tıklayın. Bu örnek yerel sunucuya SSH protokolü ile bağlanacaktır.
Şimdi sunucunuzda yeni bir ssh terminal oturumu göreceksiniz.
SONUÇ:
Tebrikler! Bu öğreticide, Apache Guacamole’yi Debian 11 Bullseye’a nasıl kuracağınızı öğrendiniz. Ayrıca, 'user-mapping.xml'
yapılandırma dosyasını kullanarak kullanıcı kimlik doğrulamasını ve bağlantıları nasıl kuracağınızı ve Nginx’i Guacamole web uygulaması için bir ters proxy olarak ayarlamayı öğrendiniz; bu, alan adını kullanarak Guacamaloe’yu çalıştırmanıza ve SSL sertifikaları kullanarak güvenliğini sağlayın.
Source: howtoforge