martes, 12 de junio de 2012

Linux - Trabajando con SSH

SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.

Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.

SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible y ninguna tercera persona pueda descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión; aunque es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular así la información entre destinos.

Conectarse a una máquina mediante ssh

Para conectarnos mediante ssh a una máquina, simplemente debemos ejecutar:
ssh <usuario>@<ip o host>
ejemplo:
ssh root@192.168.1.2
copiado de ficheros a través de ssh

Para poder copiar ficheros a través de ssh simplemente:
$scp ruta/fichero_a_copiar usuario@<ip o host remoto>:/ruta/donde/dejamos/el/fichero
ejemplo:
$scp /home/miusuario/imagen.jpg root@192.168.1.2:/root/imagen.jpg

Generación de relación de confianza.

Cuando nos conectamos mediante ssh nos pide la contraseña del usuario para realizar con éxito la conexión, esto si bien es cierto es un grado de seguridad, puede resultarnos útil que a nuestra máquina no le pida la contraseña, esto se logra creando una relación de confianza, lo que hace es que nuestra máquina sea reconocida por la máquina remota como equipo de confianza y SOLO a la máquina la deje ingresar sin contraseña, las demás les pedirá dicha contraseña, para realizar esto, debemos:

Antes de comenzar a escribir comandos, debemos saber la diferencia entre rsa y dsa, para así saber cual de estos queremos aplicar.
RSA: Es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye y otra privada, guardada en secreto por su propietario.Su funcionamiento reside en el uso de expresiones exponenciales dentro de la aritmética modular. Obteniendo una completa seguridad, debido a que aún no se conocen formas óptimas de factorizar un número grande en sus factores primos utilizando ordenadores personales.El RSA se basa en dos problemas matemáticos: el problema de factorizar números grandes y el problema RSA. El descifrado completo de un texto cifrado con RSA es computacionalmente intratable. Por otro lado la factorización de números grandes proponen métodos para longitudes de 600-700 bits de longitud. Y generalmente, las claves RSA usan entre 1024-2048 bits.

DSA: (Digital Signature Algorithm o Algoritmo Estándar de Firmado) es el algoritmo de firmado digital incluido en el DSS (Digital Signature Standard o Estándar de Firmas Digitales) del NIST Norteamericano. Está basado en el problema de los logaritmos discretos y únicamente puede emplearse para las firmas digitales. A diferencia del RSA, que puede emplearse también para encriptar.La elección de este algoritmo como estándar de firmado generó multitud de críticas puesto que perdía bastante flexibilidad respecto al RSA.
Sabiendo esto, comenzamos a teclear.
usuario@maquinalocal:$ssh-keygen -t <rsa/dsa>
Nos aparecera una sería de preguntas le tecleamos a todas ENTER dejando vacías las respuestas. Esto nos creará un directorio .ssh, dentro del home de nuestro usuario, ahora en la maquina remota, hacemos el mismo proceso:
usuario@maquinalocal:$ssh root@<ip_maquina_remota>
usuario@maquinaremota:#ssh-keygent -t <rsa/dsa>
Ahora nuevamente desde nuestra maquina local, copiamos nuestro id_rsa.pub o id_sda.pub, ingresamos a la máquina remota (ingresaremos por última vez la contraseña) y colocamos nuestro fingerprint como relación de confianza.
usuario@maquinalocal:$scp .ssh/id_rsa.pub usuario@<ip>:/root/.ssh/id_dsa.pub
usuario@maquinaremota:#cat .ssh/id_rsa.pub >> .ssh/authorized_keys
El fichero authorized_keys no existe, pero al hacer la instrucción descrita lo creará.

Una vez hecho esto, cada vez que ingresemos a la máquina remota, ingresaremos sin necesidad de ingresar nuevamente la contraseña.

0 comentarios:

Publicar un comentario