Inicio / Wikis / Tutoriales / SSH Tunneling - De la teoría a la practica

SSH Tunneling - De la teoría a la practica

(1 opiniones)
Tutorial creado por Pablo Garaizar Sagarminaga. Extraido de: http://www.mononeurona.org/index.php?idp=328
27 de Octubre de 2005
Linux

3 - De la teoría a la practica

Veamos cómo llevar esto a cabo. La clave está en usar la opción "-L" de SSH, que se encarga de todo el proceso de "port-forwarding". El siguiente ejemplo muestra cómo utilizar el puerto 10110 de nuestra máquina para establecer una comunicación segura con el puerto 110 del servidor popmail.correo.net:

$ ssh -P -L 10110:popmail.correo.net:110

El símbolo de dólar obviamente no pertenece al comando, indica que lo ha realizado un usuario sin privilegios de root. Esto es un punto importante: si queremos utilizar puertos privilegiados por debajo de 1024 ("well-known ports"), deberemos tener privilegios de root (por lo menos en un sistema con una configuración normal, alejado del "enfoque" de seguridad de Windows98 o similares). Si no disponemos de dichos privilegios, tendremos que optar por la alternativa de utilizar un puerto superior a 1024, como en el ejemplo. Una manera fácil de no liarse con esto es sumar 10000 al número de puerto estándar, así el 110 sería el 10110 en nuestra máquina, el 10080 el 80, o el 16667 el 6667.

SSH da mucho más juego, éstas son algunas de las opciones que podremos incluir en nuestras configuraciones y scripts:

-1 ó -2 : fuerza a utilizar la versión 1 o la versión 2 de SSH. -f : pasa a segundo plano la ejecución de ssh (fork). Esta opción implica además la opción -n, en la que se impide leer de la entrada estándar. -N : impide ejecutar comandos remotos. Muy útil cuando lo único que se desea es "port-forwarding". -P : permite usar un puerto no privilegiado (>1024) para conexiones salientes. Muy usado cuando estamos tras un router o firewall que no permite conexiones a puertos privilegiados.

Para más información acerca de estas y otras opciones, ya sabéis, "man ssh" ;-)

Otros aspectos que deberemos tener en cuenta:

- Compatibilidad en cuanto a versiones de SSH. Bastantes clientes de SSH solamente soportan la versión 1, sin embargo esta versión es vulnerable a diversos ataques, por lo que es aconsejable utilizar la versión 2 convenientemente parcheada (openSSH-3.x.x con los parches para corregir el bug "hang-on-exit" o el "exit-delay"). Aquí se plantea la típica disyuntiva entre seguridad o compatibilidad.

- Para establecer una sesión SSH es necesario autenticación. Si utilizamos autenticación por passphrase (además de las correspondientes claves RSA o métodos similares), deberemos prever este hecho en nuestros scripts o nuestras sesiones interactivas o de lo contrario no podremos establecer el túnel SSH.

- Las reglas de protección en ipchains o iptables. Si tenemos configuradas reglas para bloquear las conexiones entrantes, necesitaremos establecer una excepción a esas reglas para que funcione el "port-forwarding" en local, con algo parecido a esto:

# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
# iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo -j ACCEPT


- Si vamos a utilizar puertos privilegiados en nuestra máquina local (con privilegios de root), deberemos tener en cuenta que esos puertos no se hayan empleado para conexiones entrantes. Si, por ejemplo, queremos hacer "port-forwarding" del puerto 110 para que nuestros usuarios puedan acceder de manera segura a su servidor de correo, deberemos tener cuidado ante un posible servidor POP3 escuchando el puerto 110 en nuestra máquina. Revisad vuestras configuraciones de los demonios que están escuchando puertos y en especial el fichero "/etc/inetd.conf".

- Si queremos establecer un túnel para cada conexión y destruirlo cuando ésta acabe, podemos usar una nueva opción incluida en el último parche (-S) para fijar un tiempo de espera o "delay" en el que se atenderán las conexiones SSH. Cuando ese tiempo expire, no se atenderán más conexiones y el comando finalizará cuando todas la conexiones hayan concluido (esto es importante, no termina cuando se consuma el tiempo fijado). Si disponemos de una versión antigua de SSH, podemos hacer esto mismo de la siguiente manera:

$ ssh -f -L 110:popmail.correo.net:110 usuario@popmail.correo.net sleep 30

esto sería equivalente a:

$ ssh -f -S 30 -L 110:popmail.correo.net:110 usuario@popmail.correo.net

Así estamos fijando un temporizador de 30 segundos para aceptar conexiones, finalizado el cual se esperará únicamente a que las conexiones ya establecidas terminen.
Valora este capítulo: (1 opiniones)
Autor y licencia de 'SSH Tunneling - De la teoría a la practica'
Pablo Garaizar Sagarminaga Extraído de: http://www.mononeurona.org/index.php?idp=328

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'SSH Tunneling - De la teoría a la practica' (1)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'SSH Tunneling - De la teoría a la practica'

Se discuten SSH, SSL, TSL y HTTPS, los protocolos utilizados en la actualidad para intercambiar... Más »
Se discuten SSH, SSL, TSL y HTTPS, los protocolos utilizados en la actualidad para intercambiar... Más »
Esta es una investigación de dos aparatos que han mejorado la practica del computador general. Más »
El currículo se constituye en el puente que permite, fomenta y desarrolla la interactividad entre... Más »
Curso sobre política, la práctica que se ocupa de gestionar, de resolver los conflictos colectivos... Más »
¿Estás seguro de que deseas eliminar este capítulo?