← Objetivo:
El objetivo de este mini tutorial es que desde un Sistema Operativo Windows se controle de forma remota un servidor u ordenador personal con Sistema Operativo Linux distribución Ubuntu Hardy Heron (v8.04).
← Software utilizado:
- Para Windows XP
- Cliente para conexión remota. Descargamos Vnc Viewer para Windows. [ENLACE]
- Implementación de Cliente SSH, para encriptar datos circulantes. Descargamos PuTTY para Windows. [ENLACE]
- Para Ubuntu:
- Instalación de SSH Server, su función es encriptar los datos circulantes. Podemos instalarlo por Sistema -> Administración -> Gestor de paquetes Synaptic buscando openssh; o por consola con sudo apt-get install openssh
- Servidor de conexión remota: Vino. No tenemos que instalar nada dado que se instala por defecto con Ubuntu. Habrá que configurarlo más tarde, lo tenemos en Sistema -> Preferencias -> Control Remoto
- Resolución de nombre para dirección IP dinámica: no-ip, hay que darse de alta, es gratuito, lo único que quedará la dirección como algo así: minombre.no-ip.org. Esto nos permitirá dar un nombre de domino a la dirección IP del equipo a conectar, facilita a la hora de recordar y en caso de tener IP dinámica no cambiará el nombre.
← Configuración del equipo Servidor (Ubuntu):
- Configuración de Servidor SSH. Hay que abrir el archivo /etc/ssh/sshd_config y modificarlo con esta configuración de ejemplo, ofrece seguridad ante amenazas externas:
# See the sshd(8) manpage for details
# Puerto que va a escuchar el demonio SSH
Port 5746
# Direcciones permitidas
#ListenAddress ::
ListenAddress 192.168.1.2
#usuarios permitidos
AllowUsers diego
#número máximo de introducción de contraseña
MaxAuthTries 2
#controla el número de conexiones no autenticadas en el servidor,
MaxStartUps 3
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 30
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don’t read the user’s ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
En la pestaña “General” marcamos lo que está en rojo y ponemos una contraseña.
La pestaña “Avanzado” dejamos todo desmarcado.
← Configuración de router y firewalls:
En caso de tener un router es necesario preparar un puerto para conexiones remotas. Si tenemos un módem no será necesario, pero sí habrá que tener en cuenta el firewall. Pasos a seguir:
- Podemos acceder al firmware de un router mediante el navegador, sabiendo la puerta de enlace; la ponemos en la caja de dirección del navegador, por ejemplo: 192.168.1.1.
- Se nos solicitará una clave en teoría debemos saberla o tenerla escrita debajo del router.
- Una vez dentro hay que buscar el apartado “NAT“, ahí pondremos el puerto TCP con un número mayor de 1024, por ejemplo: 5694. Y la dirección IP del equipo que va a redirigir por ese puerto.
- Ahora hay que configurar el firewall, ya depende del que utilicemos, si hacemos uso de las iptables aquí dejo una configuración básica:
#-s Especifica una dirección de origen
#-d Especifica una dirección de destino
#-p Especifica un prototocolo
#-i Especifica un interface de entrada
#-o Especifica un interface de salida
#-j Especifica la acción a ejecutar sobre el paquete
#–sport Puerto de origen
#–dport Puerto de destino
#Borrar todas las reglas
iptables -F
#Politica general.Cerramos todo.Dejamos entrar y salir lo solicitado
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
###OTRAS PROTECCIONES####
# Permitir el paso si las conexiones han sido iniciadas en esta maquina
iptables -A INPUT -i lo -j ACCEPT
#iptables -A OUTPUT -o lo -d 127.0.0.1 -j ACCEPT
# Quitamos los pings.
/bin/echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_all
# No respondemos a los broadcast.
/bin/echo “1″ > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Para evitar el spoofing nos aseguramos de que la dirección
# origen del paquete viene del sitio correcto.
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
/bin/echo “1″ > ${interface}
done
# Los ICMPs redirigidos que pueden alterar la tabla de rutas.
for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
/bin/echo “0″ > ${interface}
done
# No guardamos registros de los marcianos.
/bin/echo “1″ > /proc/sys/net/ipv4/conf/all/log_martians
# Asegurar, aunque no tenga soporte el nucleo, q no hay forward.
/bin/echo “0″ > /proc/sys/net/ipv4/ip_forward
###Reglas de los puertos####
# Permitimos que se conecten a nuestro servidor web.
#iptables -A INPUT -m state –state NEW -p TCP –dport 80 -j ACCEPT
#Abrimos ssh a la LAN.
#iptables -A INPUT -s 172.26.0.3 -p TCP –dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.4 -p TCP –dport 22 -j ACCEPT
#iptables -A INPUT -s 172.26.0.5 -p TCP –dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.2 -p TCP –dport 5746 -j ACCEPT
#iptables -A INPUT -p TCP –dport 22 -j ACCEPT
# Permitimos la comunicación con el servidor dns
#iptables -A INPUT -p UDP –dport 53 -j ACCEPT
#iptables -A INPUT -p TCP –dport 53 -j ACCEPT
#Permitimos uso de ftp.
#iptables -A INPUT -p TCP –dport 21 -j ACCEPT
#Permitimos acceso pop3.
#iptables -A INPUT -p TCP –dport 110 -j ACCEPT
# Permitimos uso de smtp
#iptables -A INPUT -p TCP –dport 25 -j ACCEPT
#Permitimos acceso imap.
#iptables -A INPUT -p TCP –dport 143 -j ACCEPT
#iptables -A INPUT -p UDP –dport 143 -j ACCEPT
#Permitimos acceso aMule.
iptables -A INPUT -p TCP –dport 6435 -j ACCEPT
iptables -A INPUT -p UDP –dport 5721 -j ACCEPT
#Permitimos acceso Vino (control remoto)
iptables -A INPUT -p TCP –dport 5694 -j ACCEPT
#Permitimos todo el trafico de la LAN
iptables -A INPUT -s 192.168.1.2 -j ACCEPT
#Dejamos a localhost, para mysql, etc..
iptables -A INPUT -i lo -j ACCEPT
← Configuración en Windows XP:
- Una vez intalado “Putty” lo configuramos primero para indicar la dirección y puerto:
- Pasamos a configurar el tunnel que permitirá dar la conexión con VNC. Ponemos puerto 5900 porque Vino trabaja con él por defecto:
- Volvemos al árbol de la izquierda a “Session” y guardamos con una “Saved Session” para así poder recuperarla de nuevo cada vez que sea necesario con tan solo pulsar sobre “Load” en la sesión pinchada.
La conexión
Para conectar debemos llevar a cabo dos pasos:
- Por un lado ejecutar Putty con nuestra configuración, pinchamos sobre “Load” para la recuperar la configuración guardada. Al entrar solicita usuario, es el usuario de Linux que le hemos habilitado conexión remota, y por consiguiente su contraseña; no confundir con la de “escritorio remoto” o Vino.
- Ejecutar VNC como usuario localhost, nos solicitará la contraseña, esta vez la que hallamos configurado para Vino o escritorio remoto.






#1 por yuhn - Agosto 8th, 2009 a las 14:18
muy bien explicado y con imagenes, sería necesario que alguien mas comprobara que funciona correctamente
#2 por diego - Agosto 9th, 2009 a las 13:08
El tutorial se hizo durante una prueba.
#3 por rrdario - Septiembre 1st, 2009 a las 05:24
Excelente publicación,le pusieron un mundo a este tutorial! felicidades.
#4 por jeisson - Noviembre 8th, 2009 a las 22:36
de verdad que buen tutorial soy nuevo en esto del server en linux y tutoriales como estos son los que nos animan a seguir investigando..
gracias
#5 por Andres - Mayo 17th, 2010 a las 06:05
Excelente yo lo hice con dyndns pero es lo mismo y si funciona, ya lo había hecho.