Mostrando entradas con la etiqueta SSH. Mostrar todas las entradas
Mostrando entradas con la etiqueta SSH. Mostrar todas las entradas

Tuneles con SSH



La metodología desarrollada para este laboratorio consta de tres maquinas un servidor apache, un servicio ssh y un host de verificacion. Se describe graficamente a continuación.


Paso 1 Subir servicio Apache

Se muestra el estado del servicio apache arriba en la imagen 1, que corresponde al HOST apache.

 Imagen 1. Sevicio apache UP

Paso 2 Adicion de variable Sshgateway

Se incluye en el archivo de configuracion de SSH la instrucción gatewayports yes que permite efectuar el desarrollo de la practica sin problemas de puertas de enlace. Ver imagen 2.

Imagen 2. Adicion gatewayports yes

Paso 2 Shell de conexión en Tunel

Se muestra en la imagen 3 es shell creado en /etc/init.d/ que permite utilizar un puerto especifico para la conexión hacia el servidor apache.

 Imagen 3. Shell de conexión
  
Paso 3 Verificacion de archivo

En el directorio /init.d se muestra como lo indica la imagen 4 el script que permite ejecutar este tipo de tuneles.

 Imagen 4. Sshgateway en /init.d
  
Paso 4 Ejecucion de shell

En el servidor ssh se ejecuta el script que permite la conexión en tunel hacia el sevidor apache, esto se hace de una conexión “segura” a una “insegura”, y utilizando los puertos de conexión. 

Imagen 5. Ejecutando Shell
  
Paso 5 Servicio apache

En el servicio apache se encuentra el mensaje que se evidencia en la imagen 6. Donde tambien se muestra la IP configurada.

 Imagen 6. Mensaje servicio Apache

Paso 6 Conexión Tunel

Se hace una primera prueba de conexión a traves del localhost por https y por puerto 8080 como se muestra a continuacion, donde tambien se muestra la conexión en tunel hacia el servidor apache.

Imagen 6. Mensaje servicio Apache


Paso 7 Conexión Tunel externa

Se muestra en la siguiente imagen 7 el servicio desde el navegador del cliente como crea el tunel de forma correcta desde el servicio ssh al servicio apache.

 Imagen 7. Cliente a servicio apache a traves de ssh 

De esta forma no sólo se nos permite realizar conexiones seguras (todos los datos viajan encriptados), sino
que  también nos provee la posibilidad de tunelear a otras conexiones y hacer port forwarding. Ahora una 
conexión remota a una máquina que se encuentra en la intranet, con IP privada y detrás de un firewall es
 totalmente viable como mecanismo de seguridad perimetral aplicando esquemas como este.

Autenticación sin usuario y contraseña mediante “SSH”

Esto se puede conseguir generando una clave RSA en la máquina cliente, y dejando la parte pública de dicha clave en el servidor, de modo que cuando el cliente intente conectarse al servidor, este se refiera al cliente. Para este laboratorio se propuso la siguiente topología de máquinas y usuarios:


Paso 1 Generar claves publicas

Se inicia el servicio SSH y se generan las claves públicas en los servidores a comunicar de forma segura como lo indica la Imagen 1 y la Imagen 2.

 Imagen 1. Clave publica HOST A

 Imagen 2. Clave publica HOST B

Paso 2 Iniciar servicio SSH

Verificar que el servicio SSH está funcionando correctamente después de iniciar el este con el comando indicado. En  la siguiente Imagen 3 se evidencia el servicio del HOST A arriba

# /etc/init.d/shh start

Imagen 3. Conexión HOST A HOST B por SSH

En la imagen 4 se evidencia la conexión funcionando entre los dos host.

 Imagen 4. Conexión HOST B a HOST A por SSH

Paso 3 Compartir claves publicas

Después de haber realizado por primera vez la conexión pidiendo autenticación se deben compartir las claves públicas de cada uno de los host como lo indican las imágenes 5 y 6, donde se muestra la transferencia exitosa de las claves públicas.

 Imagen 5. Transferencia clave publica del HOST B

Imagen 6. Transferencia clave publica del HOST A

Se copiaron los archivos en /root y posterior a ello se renombraron y se llevaron a la carpeta /.ssh donde se almacenaran tantas claves publicas como servidores se deseen conectar.

Paso 4 Authorized_keys

Se realizo la copia de las claves públicas para poder ser ejecutadas por el servidor remoto y que permita la conexión segura la imagen 7 muestra las Authorized_keys en los directorios de cada uno de los servidores.

Imagen 7. Authorized_keys en /.shh
  
Paso 5 Conexión SSH sin password

En las imágenes 8 y 9 se muestran las conexiones SSH evidenciando la IP del equipo remoto del cual se está tomando la sesión, para esto la primera vez se deben aceptar los permisos  y posterior a ello si se decide realizar una conexión con mas servidores por SHH se deben renombrar con Authorized_keys1, Authorized_keys2, Authorized_keysN, de esta forma se podrán evitar conflictos en el sistema con autenticación.

Imagen 8. HOST A por SHH a HOST B sin password

 Imagen 9. HOST A por SHH a HOST B sin password


Paso 6 Creación de Known_host

En la carpeta /.ssh se crea cuando hay una conexión el archivo Known_host que almacena todos los registros de las sesiones enlazadas, este sirve para verificar la conectividad y adicionar como mecanismo de seguridad para auditar las conexiones. En la imagen 10 se evidencia la creación del archivo Known_host después de la conexión del host B.

 Imagen 10. Known_host B

Al igual que en el host A cuando se realizo la conexión por ssh desde el host B este creo a su vez un archivo llamado Known_host que contiene la información anteriormente descrita.

Imagen 11. Known_host A

Es posible aumentar un poco más el nivel de seguridad del manejo de las llaves encriptándolas con una contraseña, y a su vez permite identificar claras fases para el establecimiento de una conexión sin autenticación cifrada, necesaria y requerida de manera cotidiana para el desarrollo de cargas transaccionales de alto nivel garantizando un túnel seguro en cluster o ambientes de máquinas distribuidas, tipo grilla.