Con questa guida vedremo come prendere il controllo di un server vnc alla finestra di login
x11vnc permette di vedere da remoto e di interagire con un display X reale (cioè un display che corrisponde ad un insieme monitor, tastiera e mouse fisico) mediante un qualsiasi visualizzatore VNC. Ha cifratura e autenticazione SSL incorporate, supporto per account e password UNIX, ridimensionamento lato server, HTTPS e VNC su singola porta, trasferimento file TightVNC e UltraVNC
per avere accesso sin dal login ci sono due requisiti:
1- la rete sia gia` configurata = non usare network manager ma /etc/network/interfaces
2- usare un server vnc che supporti l'esecuzione senza display iniziale come x11vnc
Configurazione della rete:
La maggior parte della configurazione di ethernet è raccolta in un singolo file, /etc/network/interfaces. Se non è presente alcun dispositivo ethernet, in questo file è elencata solo l'interfaccia di loopback e il contenuto è simile a quanto segue:
Se nel sistema è presente solo un dispositivo ethernet, eth0, e la sua configurazione viene ottenuta da un server DHCP, allora il dispositivo dovrebbe essere attivato automaticamente al boot e nel file sono richieste solo due righe aggiuntive:# Questo file descrive le interfacce di rete disponibili sul sistema e
# come attivarle. Per maggiori informazioni, consultare interfaces(5).
# L'interfaccia di rete di loopback
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
La prima riga specifica che il dispositivo eth0 dovrebbe essere attivato automaticamente al boot. La seconda riga indica che l'interfaccia (“iface”) eth0 dovrebbe avere un indirizzo nello spazio di IPv4 (sostituire “inet” con “inet6” per un dispositivo IPv6) e che dovrebbe ottenere la sua configurazione da DHCP in modo automatico. Assumendo che la rete e il server DHCP sono propriamente configurati, la macchina in questione non dovrebbe necessitare di ulteriore configurazione per operare propriamente. Il server DHCP fornisce il gateway predefinito (implementato attraverso il comando route), l'indirizzo IP del dispositivo (implementato attraverso il comando ifconfig) e viene usato un server DNS sulla rete (implementato nel file /etc/resolv.conf).auto eth0
iface eth0 inet dhcp
Per configurare il dispositivo ethernet con un indirizzo IP statico e una configurazione personalizzata, sono richieste alcune informazioni aggiuntive. Si fa l'ipotesi di voler assegnare l'indirizzo IP 192.168.0.2 al dispositivo eth1, con la tipica maschera di rete 255.255.255.0. L'indirizzo IP del gateway predefinito è 192.168.0.1. In tal caso si dovrebbe inserire in /etc/network/interfaces qualcosa tipo:
In tal caso è necessario specificare manualmente i server DNS in /etc/resolv.conf, che dovrebbe contenere qualcosa tipo:iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
search miodominio.it
Installazione x11vncnameserver 192.168.0.1
nameserver 4.2.2.2
La prima cosa da fare è disabilitare il ‘Desktop Sharing’ (nel caso lo abbiate attivato) che si trova sotto System -> Preferences -> Remote Desktop.
Installiamo ora il programma e configuriamolo.
Da una shell digitiamo:
E' consigliato a questo punto impostare una password per l'accesso remoto al server vnc; la password impostata verrà memorizzata nel seguente file ~/.vnc/passwd; Il comando da lanciare è:sudo apt-get install x11vnc
Script per avvio automatico (un grazie a il muflone per la realizzazione dello script)$ x11vnc -storepasswd
Aprire un editor di testo con i privilegi di amministratore ed incollare il testo seguente:
salvarlo in /etc/init.d con il nome di x11vnc#! /bin/sh
#
### BEGIN INIT INFO
# Provides: x11vnc
# Required-Start: $syslog $local_fs $remote_fs
# Required-Stop: $syslog $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: X11 VNC server
# Description: VNC server for X11
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/x11vnc
DAEMON_OPTS="-rc /etc/x11vnc/x11vncrc"
NAME=x11vnc
DESC="X11 VNC server"
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet \
--exec $DAEMON -- $DAEMON_OPTS &
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --oknodo --quiet \
--exec $DAEMON
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
lo rendiamo eseguibile con
quindi mettiamolo in avvio automatico consudo chmod +x /etc/init.d/x11vnc
creare in /etc una cartella dal nome x11vnc e sempre con un editor di testo creare il file x11vncrc (questo file serve a settare le opzioni di x11vnc quindi ognuno può personalizzarlo come meglio crede!!!!)sudo update-rc.d x11vnc start 95 2 . stop 5 1 .
Connessione al server vnc-reopen
-shared
-forever
-ultrafilexfer
-solid
-o /var/log/x11vnc.log
-q
-ncache
-wireframe
-wmdt gnome
-nossl
-rfbauth /etc/x11vnc/rfbauth (questo è il percorso dove avete salvato la password di accesso con x11vnx!!!!!)
-loop
Per connettersi al server vnc, un possibile comando è il seguente:
o semplicemente$vncviewer indirizzo.ip.server.vnc::5900:0
Il parametro 5900 indica la porta su cui il server vnc di solito si mette in ascolto per la ricezione delle eventuali richieste (in alternativa potrebbe essere usata la porta 5901 - se dovessero esserci problemi verificare la configurazione del server vnc ).$vncviewer indirizzo.ip.server.vnc:5900
Potete anche omettere la porta lanciando semplicemente:
Ubuntu 11.10 e versioni successive$vncviewer indirizzo.ip.server.vnc
Da Ubuntu 11.10 è stato introdotto lightDM come gestore di login, l'introduzione di lightDM ha modificato il metodo per poter aver accesso alla finestra di login con x11vnc, esistono diverse soluzioni io personalmente preferisco affidarmi a Xinetd
Nelle versioni di Linux più recenti Inetd viene sostituito da un superdemone più versatile e sicuro: Xinetd.
A differenza del precedessore, xinetd:
- Limita o regola l'accesso a determinati servizi sia con un sistema proprio sia inglobando nella sua configurazione i TcpWrappers
- Offre un sistema di logging indipendente da syslog
- Permette di limitare l'accesso ai servizi in determinate ore della giornata
- Supporta il protocollo Ipv6
- Utilizza vari meccanismi che mitigano l'impatto di un attacco DOS.
Come prima cosa installiamo da terminale Xinetd:
Una volta installato Xinetd con il nostro editor di testo creiamo in, /etc/xinetd.d un file con le seguenti caratteristiche che chiameremo x11vncsudo apt-get install xinetd x11vnc
Rendiamolo eseguibile con il seguente comandoservice x11vnc
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -o /var/log/x11vnc.log -display :0 -forever -bg -rfbauth /home/xxx/.vnc/passwd -ultrafilexfer -shared -enablehttpproxy -forever -nolookup -auth /var/run/lightdm/root/:0
port = 5900
flags = IPv6
}
Creiamo una password di accesso a vncsudo chmod a+x /etc/xinetd.d/x11vnc
Riavviamo il sistema e avremo il nostro vnc alla finestra di login anche con le ultime versioni di ubuntusudo x11vnc -storepasswd (VNC password) /home/xxx/.vnc/passwd
PS:ricordarsi di configurare il router ed aprire le porte verso la macchina dove gira il server
PSS:per ovviare il problema dell'ip dinamico (se volete connettervi dall'esterno della vostra rete!!!) usare uno dei vari clientdns (di solito sono già presenti in molti router)
il tutto testato e funzionante su ubuntu 10.10 e Ubuntu 12.10