Portál AbcLinuxu, 22. prosince 2025 02:02
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:
K testování spice-html5 jsem se nedostal, nicméně podle ohlasů by to chodit mělo.
In particular it relies on the Canvas and the WebSockets feature.Neprojde pres korporatni proxy
kliknul na odkaz/stahnul exe/nebo tak ... a ja jsem mel v tu chvili moznost se k nemu pripojit.
Zasadni problem je, ze zakaznik (i ja) muzeme byt v tu chvili za natem.
Jedine co jsem nalezl, je ultravnc single click.
http://www.uvnc.com/downloads/single-click.html
nicmene je to celkem krkolomne, a pouziva to nejaky nekompatabilni RFB protokol. - nefunguje to na linuxu s kazdym vnc.
navic, nejdriv u sebe musim udelat ssh tunel na server s port forwardem a pustit vnc klienta v modu listen, a pak zakaznik muze spusit jakysi exe, (ktery se mimochodem generuje na strankach uvnc).
Moje predstava je:
zakaznik vleze na www.mujserver.nekde/link_pro_remote
stahne + spusti exe/stahne + spusti jar
ja provedu vncview mujserver:nejakyport a hotovo.
Nejake tipy ?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.