| Lista Articulos: [0-C] [C-I] [I-P] [P-Z] | Todas las categorías | Página aleatoria | Lo que enlaza aquí | ||||||
SSH es el nombre de un protocolo y del programa que lo implementa. Este protocolo sirve para acceder a máquinas a través de una red, de forma similar a como se hacía con telnet. La diferencia principal es que SSH usa técnicas de cifrado para que ningún atacante 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 asi la informacion entre destinos. Al igual que telnet, sólo permite conexiones tipo terminal de texto, aunque puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X arrancado.
Además de la conexión a otras máquinas, 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 las máquinas y pasar los datos de cualquier
otra aplicación por un canal seguro de SSH (esto sólo si tenemos acceso como administrador a ambas máquinas).
La primera versión del protocolo y el programa eran libres y los creó un sueco llamado Tatu Ylönen, pero su licencia fue cambiando y terminó apareciendo la compañía `SSH Communications Security', que lo ofrecía gratuitamente para uso doméstico y académico, pero exigía el pago a otras empresas. En el año 1997 (dos años después de que se creara la primera versión) se propuso como borrador en la IETF.
A principios de 1999 se empezó a escribir una versión que se convertiría en la implementación libre por excelencia, la de OpenBSD, llamada OpenSSH.
El protocolo ssh cuenta con dos versiones, la primera de ellas se mantiene por motivos de compatibilidad, pero se recomienda generalmente el uso de la segunda, por su mayor seguridad. OpenSSH es una implementación, usable en sistemas linux, de cliente y servidor para estos protocolos, la versión disponible para Debian permite usar tanto ssh 1 como ssh 2.
Tal como se describe en uno de los borradores de la especificación temporal "SSH Protocol Architecture" (http://www.ietf.org/internet-drafts/draft-ietf-secsh-architecture-13.txt)
ssh es un protocolo para iniciar sesiones en máquinas remotas que ofrece autenticación, confidencialidad e integridad. Consta de
tres componentes:
Protocolo de transporte. Que normalmente opera sobre TCP/IP dando autenticidad, confidencialidad e integridad.
Protocolo de autenticación de usuario. Que autentica al usuario ante el servidor.
Protocolo de conexión. Que multiplexa un canal encriptado en diversos canales lógicos.
Este protocolo requiere que los servidores tengan "llaves", las cuales son usadas por los clientes cada vez que se conectan a un
servidor para verificar que no fue suplantado. Una llave es un número codificado y encriptado en un archivo. Para la encriptación
de llaves, OpenSSH ofrece los algoritmos RSA y DSA (de los cuales para la versión 2 recomendamos DSA).
Para instalar un servidor OpenSSH, que le permita conectarse a su sistema de forma segura, instale el paquete ssh preferiblemente
tomando la versión más reciente del sitio de seguridad de Debian: http://security.debian.org o compile las fuentes más recientes que puede obtener en http://www.openssh.org. Cuando instale se generarán
un par de "llaves" para su computador, una pública y una privada. Una vez instalado podrá afinar la configuración del servidor en
el archivo /etc/ssh/sshd.conf que puede incluir líneas como las siguientes:
PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes RhostsAuthentication no hostsRSAAuthentication no HostbasedAuthentication no X11Forwarding yes
La última línea permitirá a los clientes que se conecten ejecutar aplicaciones de X-Window y transmitir la información gráfica sobre la conexión segura.
Un usuario también puede crear un par de llaves que le faciliten su autenticación al emplear ssh o scp. Estos programas por
defecto piden clave al usuario que se conecte a un servidor ssh. Si un usuario genera sus llaves pública y privada, puede
saltarse esta autenticación pues se hará de forma automática con las llaves. Para lograrlo su llave pública debe estar en el
computador al cual se conecta (en ~/.ssh/authorized_keys) y su llave privada en el computador desde el cual se conecta
(normalmente en ~/.ssh/id_dsa).
La generación de llaves puede hacerse con:
ssh-keygen -t dsa
que por defecto dejará su llave pública en ~/.ssh/id_dsa.pub y su llave privada en ~/.ssh/id_dsa (que además quedará protegida
por una palabra clave que usted especifica). Como el nombre lo indica la llave privada no debe compartirla, por el contrario la
llave pública puede transmitirla y puede ser vista por cualquiera.
En el computador en el que desee conectarse, agregue en el archivo ~/.ssh/authorized_keys (o ~/.ssh/authorized_keys2 si usa DSA y
una versión de OpenSSH anterior a la 3.1), su llave pública. Por ejemplo el usuario mario desde purpura.micolegio.edu.co puede
configurar la entrada con autenticación automática a la cuenta pepe en amarillo.micolegio.edu.co con:
purpura> scp ~/.ssh/id_dsa.pub amarillo.micolegio.edu.co:/home/pepe/id_dsa_mario.pub purpura> ssh -l pepe amarillo.micolegio.edu.co ... amarillo> cat id_dsa_mario.pub >> ~/.ssh/authorized_keys
Cuando mario se intente conectar desde purpura, a la cuenta pepe en amarillo ya no tendrá que dar la clave de pepe en ese computador sino la palabra clave con la que protegio su llave privada. Incluso esta palabra clave puede darse una sóla vez, aún cuando se realicen diversas conexiones con:
purpura> ssh-agent bash purpura> ssh-add mario
Tras lo cual mario tecleará una vez la palabra clave de su llave privada, y después en esa sesión de bash todo ingreso que haga a
la cuenta pepe en amarillo, no solicitará clave alguna.
Ver También: Informática


