Portál AbcLinuxu, 30. dubna 2025 10:11
V lednu jsem tady zveřejnil příspěvek o tunelování skrz korporátní proxy, samozřejmě takové řešení není zrovna ve shodě s bezpečnostní politikou, ale mít přístup k vlastnímu linuxovému systému se prostě hodí, tak jsem se rozhodl toto řešení "zlegalizovat".
Jednoduše jsem přestěhoval ssh do web browseru, vlk se nažral a koza zůstala celá. Ale když už tak už, co takhle přístup k plnému Xfce desktopu přes webový prohlížeč. Nakonec, taky je to jen otázka instalace několika balíků a jednoduché konfigurace.
Jedná se o kombinaci debian+xfce+xrdp+guacamole+lighttpd (reverzní proxy), a začneme hezky od začátku roztočením nové VM s minimální instalací debianu.
Nainstalujeme základní balíčky a xfce (a lightdm):
aptitude install openssh-server vim xfce4 lightdm sudo
Teď stačí zapnout lightdm pomocí "service lightdm start" a přihlásit se do Xfce (lightdm také naskočí po rebootu).
Osobně mi výchozí vzhled Xfce moc nesedí, takže ještě doinstaluji Greybird téma (které závisí na gtk3-engines-unico a gtk2-engines-murrine) a ikonky elementary.
aptitude install gtk3-engines-unico gtk2-engines-murrine
Samotné greybird téma je možné stáhnout z http://shimmerproject.org/project/greybird/ a stačí rozbalit tarball do ~/.themes. Obdobně, elementary ikonky stačí rozbalit do ~/.icons. A po té v Xfce v menu "Settings->Appearance" vybrat příslušné téma a ikonky.
aptitude install xrdp
Můžeme otestovat buď pomocí "xfreerdp adresa_serveru" z linuxu (xfreerdp je v debianu/ubuntu v balíčku freerdp-x11) a nebo pomoci klienta z Windows. Samozřejmě je potřeba si dát pozor, aby připojení někde po cestě neblokoval firewall (tcp port 3389).
aptitude install guacd libguac-client-rdp0 guacamole guacamole-tomcat
Co se týka konfigurace guacamole, stačí přidat uživatele, nastavit heslo a povolit připojení k vybraným serverům. K tomu slouží /etc/guacamole/user-mapping.xml - ten by měl vypadat přibližně takto (pozn.: heslo zatím nastavte dočasné na otestování, než v posledním kroku přidáme HTTPS reverzní proxy).
<user-mapping> <!-- documentation: http://guac-dev.org/Configuring%20Guacamole --> <authorize username="luv" password="abclinuxu"> <protocol>rdp</protocol> <param name="hostname">localhost</param> <param name="port">3389</param> </authorize> </user-mapping>Poté je potřeba vyresetovat tomcat.
service tomcat6 restart
To je vše . Teď stačí v prohlížeči otevřít http://server:8080/guacamole ... magic! (Ale pozor, v této staré verzi guacamole se kurzor zobrazuje jako vysloveně miniaturní černá tečka, což je ze začátku dost matoucí).
Samozřejmě začneme nainstalovánim lighttpd
aptitude install lighttpd
Vygenerujeme self-signed ssl certifikát
cd /etc/lighttpd/ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out key.pem -days 3650 -nodesV /etc/lighttpd/lighttpd.conf pak stači přidat "mod_proxy" do sekce server.modules a také následující řádky:
server.port = 443 ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/key.pem" proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "8080" ) ) )Ještě můžeme přidat následující rewrite pravidlo, které automaticky přidá "/guacamole/" před vsechny URL (snažší než nastavovat výchozí servlet v tomcatu
url.rewrite-once = ( "(.*)" => "/guacamole/$1" )Kompletní lighttpd config pak může vypdat třeba takto:
server.modules = ( "mod_compress", "mod_proxy", "mod_rewrite", ) server.port = 443 ssl.engine = "enable" ssl.pemfile = "/etc/lighttpd/key.pem" proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => "8080" ) ) ) url.rewrite-once = ( "(.*)" => "/guacamole/$1" ) server.document-root = "/var/www" server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data"Nové nastavení můžeme otestovat z prohlížeče na adrese https://server
<Connector address="127.0.0.1" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />A vyresetujeme tomcat:
service tomcat6 restartJeště bych doporučil změnit heslo v guacamole, když už teď bude všechno chodit přes https. A rovnou můžeme uložit nové heslo v user-mapping.xml jako md5 hash. Nejdříve vygenerujeme md5 hash:
cat | tr -d '\n' | md5sumA do tagu authorize přidáme atribut encoding="md5". Nový /etc/guacamole/user-mapping.xml pak může vypadat takto:
<user-mapping> <!-- documentation: http://guac-dev.org/Configuring%20Guacamole --> <authorize username="luv" password="a1f0ce24f2a7d1731f768c0b655ca3b5" encoding="md5"> <protocol>rdp</protocol> <param name="hostname">localhost</param> <param name="port">3389</param> </authorize> </user-mapping>
Tiskni
Sdílej:
In particular it relies on the Canvas and the WebSockets feature.Neprojde pres korporatni proxy
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.