Secure Shell
De Wikipedia, la enciclopedia libre
Nivel de aplicación | DNS, FTP, HTTP, IMAP, IRC, NFS, NNTP, NTP, POP3, SMB/CIFS, SMTP, SNMP, SSH, Telnet, SIP, ver más |
Nivel de presentación | ASN.1, MIME, SSL/TLS, XML, ver más |
Nivel de sesión | NetBIOS, ver más |
Nivel de transporte | SCTP, SPX, TCP, UDP, ver más |
Nivel de red | AppleTalk, IP, IPX, NetBEUI, X.25, ver más |
Nivel de enlace | ATM, Ethernet, Frame Relay, HDLC, PPP, Token Ring, Wi-Fi, STP, ver más |
Nivel físico | Cable coaxial, Cable de fibra óptica, Cable de par trenzado, Microondas, Radio, RS-232, ver más |
* según el Modelo OSI |
SSH (Secure SHell) 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 el ordenador 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 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.
Tabla de contenidos |
[editar] Seguridad
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.
[editar] Historia
Al principio sólo existían los r-commands, que eran los basados en el programa rlogin, el cual funciona de una forma similar a telnet.
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.
[editar] Manejo de SSH
(ejemplificado en un sistema Debian 3.1 GNU/Linux)
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 SSH1 como SSH2.
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_config
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 protegió su llave privada. Incluso esta palabra clave puede darse una sola 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.
[editar] Fuente
[editar] Enlaces externos
Ver También: Informática