SSH

(Redirigido desde «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.

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.

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 finlandés 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.

Autenticación

Autenticación por password

SSH permite autentificar a un usuario utilizando su password Unix ordinario. La única (e importante) diferencia es que el password no viaja nunca en claro por la red. Si utilizamos SSH para sustituir a telnet,rlogin o ftp evitaremos el peligro de que nuestro password sea capturado por posibles "sniffers" en la red.

Por otra parte, seguiremos siendo vulnerables a los llamados "ataques de diccionario" contra el password: si un atacante tiene acceso al fichero /etc/passwd, no resulta difícil averiguar passwords formados a partir de palabras susceptibles de figurar en un diccionario. Esto significa que sigue siendo extremadamente importante que el administrador proteja debidamente el fichero /etc/passwd y que los usuarios utilicen passwords "seguros" (lo más aleatorios posible, combinando mayúsculas, minúsculas, dígitos y puntuación).

Autenticación por clave pública

La segunda alternativa de autentificación utiliza un esquema de clave pública/privada, también conocido como clave asimétrica. En este esquema se utiliza un par de claves:

  1. Una clave pública, que se copia a todos los servidores a los que queremos conectarnos.
  2. Una clave privada, que solamente nosotros poseemos; para mayor seguridad, esta clave está cifrada con una frase de paso.

Estas dos claves poseen una característica importante: un texto cifrado con la clave pública sólo puede ser descifrado usando la clave privada, mientras que un texto cifrado con la clave privada sólo puede descifrarse mediante la clave pública.

Veamos cómo se aplica esta propiedad al proceso de autentificación:

  1. El servidor nos envía un mensaje, que debemos devolver cifrado con nuestra clave privada.
  2. El servidor descifra el mensaje de respuesta con nuestra clave pública.
  3. El servidor compara el mensaje resultante con el texto original; si coinciden, el servidor nos considera debidamente autentificados


Por supuesto, todo este proceso es transparente para el usuario; solamente tendremos que preocuparnos de teclear la frase de paso cuando el programa lo pida. El punto más débil de este esquema es cómo hacer llegar nuestra clave pública al servidor. De momento no existe ninguna forma automática de hacerlo, y no hay más forma que hacerlo a mano.

La principal ventaja de este método de autentificación es que, aunque un atacante lograra comprometer el servidor, sólo podría conseguir acceso a nuestra clave pública, pero nunca a nuestra clave privada. De todas formas, en prevención de un posible compromiso del cliente, es necesario que la clave privada esté protegida con una frase de paso adecuada. De esta forma, nadie podrá utilizarla aún en el caso de que consiguiera de alguna manera hacerse con ella.

En el caso de realizar la conexión desde una máquina Unix, una ventaja secundaria es que se puede utilizar un agente de autentificación para evitar tener que teclear la frase de paso en cada conexión.

El mayor inconveniente de la autentificación por clave pública es la fase de configuración previa, que puede resultar algo engorrosa. Los pasos a seguir son:

  1. Generación de las claves.
  2. Propagación de la clave pública.
  3. Selección del par de claves

Conexión a un servidor remoto

Para conectarnos con un servidor SSH remoto desde un cliente tipo Unix/Linux podemos abrir una consola y teclear:

$ ssh nombre.maquina.com

Si queremos conectar como root en el servidor remoto, pero en cliente estamos como otro usuarios podemos teclear:

$ ssh -l root nombre.maquina.com

Véase también

Enlaces externos