index.html (4323B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 <title>SSH Tunneling</title> 7 <link rel="icon" type="image/png" href="/favicon.png" /> 8 <link rel="stylesheet" type="text/css" href="../article.css" /> 9 </head> 10 <body> 11 <header> 12 <p class="title">SSH Tunneling</p> 13 <p class="date">28 de marzo de 2019 • fjbalon</p> 14 </header> 15 <p>El tunneling es un proceso por el que se utiliza el protocolo SSH para fortificar la comunicación entre otros protocolos inseguros, por ejemplo para realizar peticiones HTTP, SMTP, etc.</p> 16 <p>Los túneles pueden ser locales o remotos. En los túneles locales, la máquina del administrador o cliente redirecciona un puerto local hacia un puerto de la máquina remota, a la que se disponga de acceso. En los túneles remotos se redirecciona un puerto remoto dela máquina remota, a la que se disponga de aacceso, a un puerto de la máquina local, donde se encuentra el administrador.</p> 17 <p>La sintaxis para la creación de un túnel local hacia el puerto remoto de la máquina remota es la siguiente:</p> 18 <pre><code>ssh -L [direccion de escucha:]puerto escucha:maquina remota: puerto remoto usuario@server</code></pre> 19 <img class="color-invertible" src="resources/ssh01.png"/> 20 <p>El escenario idóneo para la utilización de túneles SSH locales es el siguiente:</p> 21 <ul> 22 <li>Máquina A con conexión a Internet requiere conexión a máquina C, que se encuentra detrás de un servidor que impide el paso. En otras palabras, la máquina C no es accesible desde Internet.</li> 23 <li>El usuarioo de la máquina A dispone de cuenta en una máquina B. La máquina B es el servidor que proporciona la salida a Internet a la máquina C. La máquina A creará un túnel con la máquina B y a través del forwarding (véase sección \ref{sshforwarding} para más detalle) de la máquina B llegará a la máquina C.</li> 24 <li>Lo importante es proteger la comunicación en Internet entre la máquina A y B. La comunicación entre B y C puede ir sin cifrar, ya que se encentra en una Intranet. Aunque también puede ser altamente recomendable fortificar dicha comunicación.</li> 25 </ul> 26 <p>El túnel remoto, por su lado, generará un socket a la escucha en un servidor, el cual al recibir una petición reenviará el tráfico mediante SSH a la máquina local donde se encuentre el administrador. La sintaxis es:</p> 27 <pre><code>ssh -R puerto local:maquina remota:puerto remoto</code></pre> 28 <img class="color-invertible" src="resources/ssh02.png"/> 29 <p>Un ejemplo sería querer que una máquina en Internet llegase al interior de la Intranet a través de una máquina puente de la propia red privada, manteniendo una interfaz hacia Internet. El escenario sería el siguiente:</p> 30 <ul> 31 <li>Máquina A, la máquina se encuentra en una red interna.</li> 32 <li>Máquina B, máquina con conectividad con A e interfaz en Internet.</li> 33 <li>Máquina C, máquina externa con conectividad con B, pero no con A.</li> 34 </ul> 35 <p>Estas técnicas cuentan con una serie de escenarios muy interesantes, siendo los más usuales:</p> 36 <ol> 37 <li>Usar un túnel externo para atravesar el firewall y acceder a un recurso que ofrece un equipo de la intranet.</li> 38 <li>Usar un túnel externo para atravesar el firewall y acceder a un recurso de una intranet. Pero además cualquier equipo puede conectarse a dicho equipo de la intranet a través de una conexión con el equipo externo.</li> 39 <li>Usar un túnel interno para que los equipos de fuera de la red se conecten al interior. Esta acción se realizará mediante túneles remotos.</li> 40 <li>Túnel interno para que equipos de fuera de la red se conecten al interior, pero además que otros equipos del exterior puedan conectarse a través del externo remoto.</li> 41 <li>Utilizar un túnel para que desde una máquina externa se pueda atravesar el firewall y realizar el forwarding en una máquina interna, y que esta reenvíe el tráfico a la segunda máquina interna.</li> 42 </ol> 43 <pre><code>ssh -L 7900:localhost:5900 usuario@internal #1 44 ssh -L 0.0.0.0:7900:localhost:5900 usuario@internal #2 45 ssh -R 7900:localhost:5900 usuario@internal #3 46 ssh -R 0.0.0.0:7900:localhost:5900 usuario@internal #4 47 ssh -L 7900:internal2:5900 usuario@internal #5</code></pre> 48 </body> 49 </html>