Triptico - Resumen sobre SSH

Anuncio
SSH (Secure Shell)
SSH es un programa de login remoto que
nos permite realizar una transmisión segura
de cualquier tipo de datos: passwords, sesión
de login, ficheros, etc, sustituyendo a las
habituales formas de acceso (OTP, Telnet y
FTP).
pública/privada, que identificarán al servidor
frente al usuario).
% ssh remoto pwd
permite ejecutar un comando en el servidor.
Su seguridad reside en el uso de
criptografía fuerte, de manera que toda la
comunicación es encriptada y autentificada
de forma transparente para el usuario.
Existe una descripción completa de todas las
opciones en la página de manual (“man ssh”).
Actualmente existen dos versiones de ssh,
con distintos tipos de licencia, la versión
1.2.27 (SSH1) y la 2.0.13 (SSH2). Aunque
parecidos, la documentación de este tríptico
se refiere a la SSH2.
Esta segunda alternativa utiliza un esquema
de clave pública/privada:
Forma de uso de SSH.
Existen dos formas de autentificarse cuando
accedemos por ssh a una máquina:
2.- Autentificación por clave pública.
a) La clave pública, que tiene que residir en
cada uno de los servidores a los que
queremos conectarnos
b) La clave privada, que conoceremos sólo
nosotros y que está cifrada con una frase de
paso, debe residir en la máquina desde la
que iniciemos la conexión.
2.2 Propagación de la clave pública
Para propagar la clave pública a todos los
servidores a los que queramos conectarnos,
tendremos que copiar dicha clave en los
mismos. La forma más sencilla es utilizar el
comando sftp del propio paquete SSH:
% sftp remoto
Introducimos nuestro password Unix, ya que
aún no hemos terminado de configurar el
acceso por clave pública.
Creamos el directorio .ssh2 en la máquina
remota y almacenamos en él nuestra clave
pública.
sftp>mkdir .ssh2
sftp>put .ssh2/id_dsa_1024_a.pub
sftp>bye
2.3 Selección del par de claves
1.- Autentificación por password.
SSH permite autentificar a un usuario
utilizando su password Unix ordinario, con la
ventaja de que el password no viaja nunca en
claro por la red, evitando el peligro de que
sea capturado por posibles "sniffers".
La forma de uso de ssh es muy similar a la
de rsh, por ejemplo:
% ssh remoto -l nombre_de_usuario
Accepting host remoto key without checking.
usuario's password:
permite iniciar una sesión como usuario
“nombre_de_usuario” en el nodo remoto, tras
registrarse de forma automática la clave de
servidor del mismo (cada servidor de SSH
también tiene asociado un par de claves
2.1 Generación de las claves.
Para generar el par de claves pública/privada
se utiliza el programa ssh-keygen:
% ssh-keygen
Durante este proceso, el programa nos pide
una frase de paso (“Passphrase”) que
protegerá nuestra clave privada. Esta frase
puede ser todo lo larga que queramos y
contener espacios en blanco.
Con ésto, el programa genera dos ficheros en
el directorio $HOME/.ssh2:
id_dsa_1024_a: contiene nuestra clave privada
encriptada con nuestra frase de paso.
id_dsa_1024_a.pub:contiene nuestra clave pública
Como un usuario puede manejar distintos
pares de claves públicas/privadas, debemos
tener en la máquina cliente un fichero
identification que liste las claves privadas que
queremos utilizar cuando nos conectemos a
un servidor de SSH:
%
echo
"IdKey
id_dsa_1024_a"
$HOME/.ssh2/identification
>>
Igualmente, en cada una de las máquinas
remotas tendremos que crear un fichero
authorization que liste las claves públicas que
se aceptarán para iniciar una conexión.
% ssh remoto 'echo "Key id_dsa_1024_a.pub" >>
$HOME/.ssh2/authorization'
SSH (Secure Shell)
Una vez configurado el acceso por clave
pública, en lugar del password tendremos que
introducir la frase de paso que protege
nuestra clave privada:
% ssh remoto
Passphrase
for
key
/.ssh2/id_dsa_1024_a" .......
usuario's password:
arranquemos solicitarán esta clave al agente,
sin que sea necesaria nuestra intervención.
Cuando la conexión se realiza desde una
máquina Unix, se puede utilizar un agente de
autentificación y de esta forma no tener que
teclear la frase de paso en cada conexión.
El agente es un proceso que actúa como
depositario de nuestras claves privadas, y se
las suministrará al cliente SSH cada vez que
éste las necesita. Esto es muy útil cuando
nos conectamos a varias máquinas remotas
durante una sesión de trabajo.
Para utilizar el agente, primero tenemos que
arrancarlo:
•
Si usas sh o derivados (bash, ksh, etc.):
% eval `ssh-agent`
•
si usas csh o derivados (tcsh):
% eval `ssh-agent -c`
y posteriormente, añadir nuestra clave al
depósito de claves (originalmente está vacío)
con el comando ssh-add:
% ssh-add
De esta forma, el agente dispondrá en
memoria de nuestra clave privada ya
descifrada. Todos los clientes de SSH que
Enero 2000
Para tener siempre el agente disponible,
podemos arrancarlo en el momento de iniciar
nuestra sesión local y pararlo al cerrarla.
"/home/usuario
El agente de autentificación (ssh-agent)
REV.
Por ejemplo, arrancamos el agente desde el
.login, añadiendo al final estas dos líneas:
SSH (Secure Shell)
eval `ssh-agent -c`
ssh-add
y paramos el agente antes de salir,
añadiendo esta línea al fichero .logout:
kill $SSH2_AGENT_PID
Transferencia de ficheros.
Existen dos alternativas para la transferencia
de ficheros:
a) El comando scp (equivalente al rcp), para
las transferencias simples, por ejemplo:
% scp remoto:/path_del_fichero /path_local
% scp fichero_1 fichero_2 remoto:dir
% scp fichero otro_usuario@remoto:
b)El comando sftp (equivalente al ftp), para
transferencias más complejas, por ejemplo:
% sftp remoto
Existe una documentación muy detallada
sobre SSH (instalación, configuración, uso,
integración
con
plataformas
windows,
información sobre las dudas más frecuentes,
etc) en la siguiente URL:
http://www.cica.es/seguridad/SSH/ssh.es.html
CICA
Centro Informático Científico
de Andalucía
Av. Reina Mercedes s/n
41012-SEVILLA
Tfno.: 95-505 66 00
FAX: 95-505 66 51
http://www.cica.es/seguridad
Descargar