Вы находитесь на странице: 1из 28

Crear un Túnel

y
Navegar a través de él

Autor: Hevercking 16/04/2010


Índice
Instalar el servidor Open SSH…………………………………………………Página 3
Configurar el servidor Open SSH……………………………………………..Página 3
Configurar IP…………………………………………………………………. Página 8
Abrir puertos del router………………………………………………………..Página 9
Configurar Putty……………………………………………………………….Página 10
Navegar a través del túnel con Mozilla Firefox……………………………….Página 14
Navegar a través del túnel con Mozilla Firefox des de otro PC de la red……..Página 19
Conectarse a Windows Live Messenger……………………………………….Página 21
Instalar SSH
Instalar en fedora:

$ Yum install ssh-server

Instalar en Debian:

$ sudo apt-get install ssh-server

Configurar el servidor Open SSH


una vez instalado editamos el siguiente fichero:

$ vi /etc/ssh/ssh_config

Y lo dejamos de la siguiente forma:

Para Fedora:

# $OpenBSD: sshd_config,v 1.75 2007/03/19 01:01:29 djm Exp $

# This is the sshd server system-wide configuration file. See


# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.

Port 443
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# Disable legacy (protocol version 1) support in the server for new


# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2

# HostKey for protocol version 1


#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key


#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!


#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes

# Change to no to disable s/key passwords


#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes

# Set this to 'yes' to enable PAM authentication, account processing,


# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes

# Accept locale-related environment variables


AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
PermitTunnel yes

# no default banner path


#Banner /some/path

# override default of no subsystems


Subsystem sftp /usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis


#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server

Para Debian:

# Configurion Personalizada para DeHevernyx


# S.O Debian n 5.0

# Este es el archivo de configuración del Servidor Ssh.


# Consulte sshd_config(5) para mas informacion.

# Las opciones por defecto en sshd estan desabilitadas como


# comentario. Si los descomenta podra canviar las opciones por
# defecto.

# Archivo de configuracion de paquetes generados


# Mire la pagina (8) del manual de sshd

# Puertos, direcciones IP y protocolos para escuchar.


Port 443

# Utilice estas opciones para restringir que las interfaces y


# protocolos de sshd se puedan vincular a
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2

# HostKey for protocol version 1


#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

#Separacion de privilegios, se activa por seguridad.


#UsePrivilegeSeparation yes

# Tiempo de vida de las clabes y tanyo de la clave.


#KeyRegenerationInterval 3600
#ServerKeyBits 768

# Logging
# Modos QuietMode y FascistLogging anticuados
# SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:
#LoginGraceTime 120
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6

#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
# Change to yes if you don't trust ~/.ssh/known_hosts for
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts yes

# To disable tunneled clear text passwords, change to no here!


#PasswordAuthentication yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
#PermitEmptyPasswords no
PasswordAuthentication yes

# Change to yes to enable challenge-response passwords (beware issues with


# some PAM modules and threads)
# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
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
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes

# Set this to 'yes' to enable PAM authentication, account processing,


# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes

# Accept locale-related environment variables


AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
PermitTunnel yes

#MaxStartups 10:30:60
# no default banner path
Banner /etc/ssh/ban

# Allow client to pass locale environment variables


AcceptEnv LANG LC_*

# override default of no subsystems


Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

# Example of overriding settings on a per-user basis


#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server

# Archivo actualizado el 25/04/2009 a las 12:37

Una vez configurado esto editamos el fichero

$ vi /etc/services

Y lo dejamos de la siguiente forma, cambiando los puertos TCP y UDP que por defecto
apuntan al 22 por el 443

ssh 443/tcp # SSH Remote Login Protocol


ssh 443/udp

ahora reiniciaremos el servicio ssh

En fedora:

$ /etc/init.d/sshd stop
Parando sshd: [ OK ]
Comprobamos si el servicio está corriendo bien
$ ps aux | grep sshd

En caso que no se cerrara bien “Como en este ejemplo” deberíamos matarlo


root 2003 0.0 0.3 5416 884 ? Ss Mar31 0:03
/usr/sbin/sshd
root 9710 0.0 1.1 8448 3024 ? Ss 02:41 0:02 sshd:
root@pts/0
root 14315 0.0 0.3 3148 772 pts/0 S+ 03:59 0:00 grep sshd

$ kill -9 2003

NOTA! – Fíjate bien cual es el proceso que intentas matar ya que si mataras por
ejemplo este: root 9710 0.0 1.1 8448 3024 ? Ss 02:41 0:02
sshd: root@pts/0 lo que estarías haciendo seria desconectar el usuario que esta
conectado por ssh “en el caso que lo hubiera” y si intentaras matar root 14315
0.0 0.3 3148 772 pts/0 S+ 03:59 0:00 grep sshd estarías haciendo una
tontería ya que este proceso ya no esta en uso, se genera cada vez que ejecutas el grep
pero se elimina al segundo de ser ejecutado.

Una vez nos hemos asegurado que el proceso esta muerto lo ejecutamos de nuevo:

$ /etc/init.d/sshd start
Iniciando sshd: [ OK ]

En Debian:

$ /etc/init.d/ssh stop
Parando sshd: [ OK ]
Comprobamos si el servicio está corriendo bien
$ ps aux | grep sshd

En caso que no se cerrara bien “Como en este ejemplo” deberíamos matarlo


root 2003 0.0 0.3 5416 884 ? Ss Mar31 0:03
/usr/sbin/sshd
root 9710 0.0 1.1 8448 3024 ? Ss 02:41 0:02 sshd:
root@pts/0
root 14315 0.0 0.3 3148 772 pts/0 S+ 03:59 0:00 grep ssh

$ kill -9 2003

NOTA! – Fíjate bien cual es el proceso que intentas matar ya que si mataras por
ejemplo este: root 9710 0.0 1.1 8448 3024 ? Ss 02:41 0:02
sshd: root@pts/0 lo que estarías haciendo seria desconectar el usuario que esta
conectado por ssh “en el caso que lo hubiera” y si intentaras matar root 14315
0.0 0.3 3148 772 pts/0 S+ 03:59 0:00 grep ssh estarías haciendo una
tontería ya que este proceso ya no esta en uso, se genera cada vez que ejecutas el grep
pero se elimina al segundo de ser ejecutado.

Una vez nos hemos asegurado que el proceso esta muerto lo ejecutamos de nuevo:

$ /etc/init.d/sshd start
Iniciando ssh: [ OK ]

Configurar IP
Recuerda que la IP de tu PC debería ser estática, si no sabes como configurarla, sigue
este procedimiento:

En Debian:
Primero editaremos el fichero /etc/network/interfaces

$ nano /etc/network/interfaces

Un ejemplo de cómo podría quedar el fichero es la siguiente:

# This file describes the network interfaces available on your system


# and how to activate them. For more information, see interfaces(5).

# The loopback network interface


auto lo
iface lo inet loopback

# config
allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.5
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

Creo que queda bastante claro la función de cada línea.

Ahora reiniciaremos el servicio

$ /etc/init.d/networking restart

Y ya tendríamos la IP renovada.

En Fedora:

Primero editaremos el fichero /etc/sysconfig/network-scripts/ifcfg-eth0 (puede ser eth1,


eth2, etc. Hay un archivo para cada una de las tarjetas.)

$ nano /etc/sysconfig/network-scripts/ifcfg-eth0

Un ejemplo de cómo podría quedar el fichero es la siguiente:

DEVICE=eth0 (la interface)


HWADDR=12:34:56:f0:ed:00 (esta es la mac de tu tarjeta. Puedes eliminar esta
linea)
ONBOOT=yes
DHCP_HOSTNAME=hermes2.corporacion.cl (esta linea tambien la puedes eliminar,
ya que el hostname esta escrito en otro archivo)
IPADDR=192.168.0.22
NETMASK=255.255.248.0
GATEWAY=192.168.1.1
TYPE=Ethernet

Una vez modificado el fichero guardamos y reiniciamos el servicio network


$ /etc/init.d/network stop

Abrir los Puertos del router


ahora ya tenemos el servidor ssh preparado para que escuche en ese puerto, he puesto el 443
por una sencilla razón, podéis meter cualquier otro puerto pero pueden cerrártelo y te
joderia hasta que no llegases a tu casa para poderlo cambiar, en cambio el 443 es el puerto
asociado al protocolo http, y, de este modo si te caparan este puerto te anularían la
posibilidad de conectarte a cualquier página web. Y también la ip del servidor SSH de forma
estática.

para terminar la configuración del servidor tenemos que ir al router i abrir el puerto
mapeandolo hasta el host en el que está el servidor SSH, como esto puede variar en función
del router que tengas en casa no lo boy a documentar pero si fuese el caso que no supieras
hacerlo puedes mirar cualquiera de estas dos webs donde seguramente encontraras un
manual que te explique el procedimiento a realizar para tu modelo concreto:

http://www.adslzone.net/
http://www.adslayuda.com/

Conectarse al túnel remotamente


Primero de todo descargaremos el Putty de la web
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

O directamente des de este link: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Una vez descargado lo ejecutaremos haciendo doble clik en:

Un vez lo hemos ejecutado lo que nos aparecerá será algo similar a esto:
En Host Name (or IP address) ponemos nuestra IP pública o dominio, si no lo
tenemos es conveniente crear uno gratuito des de aquí:

http://www.dyndns.com/
http://www.no-ip.com/

ya que es mas fácil recordar un nombre de dominio que tener que mirar cada vez que ip
nos a asignado nuestro ISP, la pega es que cada vez que cambie nuestra ip tendremos
que cambiarla manualmente tal y como lo tenemos configurado hasta ahora. Tenemos 2
alternativas que yo conozca, des de Linux es instalar un software tipo DDClient que
podemos hacer que nos sincronice nuestra ip con cualquiera de los 2 servicios anteriores
y des de Windows tenemos la opción del software que nos ofrece dyndns para
sincronizarla automáticamente. No se si no-ip dispone de uno, ya que yo solo trabajo
con dyndns. Pero en este manual no boy a explicar ni como instalar el sincronizador de
dyndns (ya que el software bajo windos es muy intuitivo) ni el DDClient, esto lo
contare en otro manual.

En Port ponemos el puerto que configuramos en el archivo /etc/ssh/sshd_config que en


nuestro caso seria el 443.

En Connection type: marcamos SSH

Putty nos permite guardar la configuración de la conexión para no tener que repetirla
cada vez, si la maquina des de la que os conectáis es de confianza y lo hacéis a menudo
os aconsejo que guardéis las opciones básicas de conexión.
Ahora desplegamos la subcategoría de la izquierda SSH y vamos al apartado túnel y nos
saldrá algo parecido así

Marcamos las opciones Local ports accept connections froms other hosts y Remote
ports do the same (SSH-2 only) en

Source port nos inventamos cualquiera que no esté en uso esto conectara el tunel con un
puerto de nuestro PC “No importa que no este mapeado en el router ya que la conexión
pasara únicamente por dentro del túnel, ningún Proxy podrá espiar en que páginas web
te conectas o que te descargas”

En Destination escribimos localhost o 127.0.0.1 o las dos separadas por ;


localhost;127.0.0.1

Pulsamos en Add y nos quedara algo así:


Marcamos las opciones Dynamic y Auto, Una vez hecho esto podemos guardar la configuración
tal y como os a aconsejado antes o si ya estamos le damos a Open

La primera vez nos saldrá un mensaje preguntándonos si queremos guardar la clave RSA,
como el que aparece a continuación.

Le damos al YES y a continuación nos aparecerá la pantalla de Login donde introduciremos el


Usuario y el password
Una vez dentro no debemos cerrar esta ventana bajo ningún motivo, de lo contrario se crearía
el túnel, a veces por motivos de configuración se cierra la conexión tras un tiempo de
inactividad. Lo que ago es ejecutar una aplicación tipo htop y me olvido de la ventana

Configurar el Mozilla Firefox para navegar a


través del túnel.
Ahora solo nos queda configurar el navegador Mozilla Firefox. Este procedimiento varia en
función de si hacemos tuneling des de Windows o Linux pero podemos hacerlo de la misma
forma.
Ejecutamos el navegador Firefox

Nos dirigimos a Herramientas >> Opciones…

Ahora pulsamos en Avanzado


Nos dirigimos a la pestaña Red
Y pulsamos en Configuración…

Marcamos la opción Configuración manual del proxy


En Servidor SOCKS escribimos localhost y en puerto 5050 que es el puerto que
hemos puesto en la configuración del putty al crear el túnel.

Marcamos SOCKS v4 o SOCKS v5, es cuestión de probar si no funciona uno


funcionara el otro, pero el 90% de las veces funcionan los dos.

En No usar Proxy para: ponemos esto: 127.0.0.1;localhost y le damos en


Aceptar

Y gualá aquí tienes la prueba des de Chrome en este caso estamos navegando
sin el túnel y des del Firefox a través del túnel.
Las ventajas de navegar de esta manera es que todo nuestro trafico circula
encriptado a través del túnel y en caso de que pusieran un Proxy espiando las
conexiones http solo les aparecería una, la primera que es inevitable y
necesaria para crear el túnel, las otras pasaran a través de él, el problema es
que tu velocidad quedara limitada a la de subida del servidor donde te
conectas, así que no te hagas ilusiones pero sirve para salir del paso si solo
quieres consultar.

Navegar a través del túnel des de otro pc


conectado en la misma red
En algunos casos nos podría interesar que una segunda o una tercera persona
navegase a prevés de nuestro túnel, y aunque es posible facilitar los datos de
acceso no es muy seguro ni agradable, por esto voy a comentaros como con
una simple modificación en el procedimiento anterior se puede convertir tu
maquina (la que tiene el Terminal putty abierto) en un servidor SOCKS que
proporcione ancho de banda al resto de tus compañeros
Como ya sabréis lo primero que necesitamos es saber la dirección IP de
nuestra máquina, una vez la sepamos nos dirigimos a la ventana de
configuración del Firefox de nuestro compañero y en Servidor SOCKS ponemos
la IP de la máquina que tiene el Terminal putty abierto, con el puerto que
hemos puesto en la configuración del túnel de putty
Es posible que esta maquina tenga 2 túneles creados, y que quieras que unos
naveguen a través de uno y los otros a través del otro, solo tendrías de asignar
al nuevo túnel un puerto distinto a la hora de abrir el túnel con el putty y ya
estaría.

Navegar a través del Túnel con Live


Messenger

Puede interesarnos conectarnos al Messenger a través de un túnel,


Para ello cuando estemos encima de él pulsamos la tecla ALT izq. Y nos
aparecerá el menú convencional de opciones,
Nos dirigimos a Herramientas y pulsamos en Opciones…
Ahora se nos a abierto la ventana de opciones de Live Messenger
Vamos al apartado Conexión
Y pulsamos en Configuraciones avanzadas y nos aparecerá esta ventana
En SOCKS escribimos localhost y al lado 5050 que es el puerto que hemos
configurado en el apartado túnel del putty y le damos a Probar
Si todo ha ido OK en el ultimo mensaje nos lo dirá con Puedes conectarte al
servicio Windows Live Messenger.

NOTA: Igual que he comentado antes, es posible que otras personas se


conecten a través de tu túnel poniendo la IP de la maquina que tiene el
Terminal putty abierto “es decir, tiene el túnel creado” y el puerto que en él
se a configurado.

Вам также может понравиться