Está en la página 1de 66

SSH

GC-F-004 V.01
INTEGRANTES:
Juan Cuartas
Yadira Osma
Antonio Ocoró
GC-F-004 V.01
Introducción

En la siguiente presentación hablaremos sobre el servicio de ssh, como instalar y configurar con un nivel
decente de seguridad el servicio SSH, como implementar las llaves publicas y privadas para afianzar la
seguridad del equipo local y también mostraremos como copiar, descargar archivos desde un equipo remoto
usando el servicio de ssh.

GC-F-004 V.01
¿Qué es SSH?

(Secure Shell) Servicio que permite que un usuario acceda de forma remota a un sistema Linux, las
comunicación entre cliente y servidor viajan cifradas desde el primer momento.

Seria muy difícil que un usuario malintencionado pueda extraer la información debido a que SSH usa un
algoritmo de cifrado. SSH utiliza el puerto TCP22.

GC-F-004 V.01
SSH...

A diferencia de otros protocolos de comunicación remota tales como FTP o Telnet, SSH encripta la sesión de
conexión, haciendo imposible que alguien pueda obtener contraseñas no encriptadas.

GC-F-004 V.01
SSH...

Soporta autentificación basada en RSA y DSA. RSA fue el


primer algoritmo publicado que permite el cifrado y la firma
digital. Se cree que es seguro si las claves son lo
suficientemente largas. Se usa aún en comercio electrónico. La
alternativa más usada es DSA cuyas iniciales corresponden a
Digital Signature Algorithm. DSA es propiedad del gobierno de
los Estados Unidos de América.

GC-F-004 V.01
Características SSH

El protocolo SSH proporciona los siguientes tipos


de protección:

 Después de la conexión inicial, el cliente puede


verificar que esta conectado al mismo servidor que
se conecto anteriormente.

 El cliente transmite su información de autenticación


al servidor utilizando una encriptación robusta de
128 bits.

GC-F-004 V.01
Características SSH

 Todos los datos enviados y recibidos durante la sesión


se transfieren por medio de la encriptación de 128
bits, lo cual los hacen extremadamente difíciles de
descifrar y leer.

 El cliente tiene la capacidad de reenviar aplicaciones


X11 [1] desde el servidor. Esta técnica llamada
reenvío por X11, proporciona un medio seguro para
usar aplicaciones graficas sobre una red.

GC-F-004 V.01
Características SSH

Seguridad
El cifrado de SSH proporciona autenticidad e
integridad de los datos transmitidos por una red
insegura como internet.
Utiliza llaves públicas para la autenticación en la
máquina remota.
SSH no sólo sirve para usar comandos en
máquinas remotas, sino para transferencias de
ficheros de forma segura ya sea por SCP o sFTP
y servicios de escritorio remoto.

GC-F-004 V.01
Características SSH

Ya que el protocolo SSH encripta todo lo que envía y recibe, se


puede usar para asegurar protocolos inseguros. El servidor SSH
puede convertirse en un conducto para convertir en seguros los
protocolos inseguros mediante el uso de una técnica llamada
reenvío por puerto, como por ejemplo POP, incrementando la
seguridad del sistema en general y de los datos.

GC-F-004 V.01
Versiones SSH

La versión 1 de SSH hace uso de muchos algoritmos de


encriptación patentados (sin embargo, algunas de estas patentes
han expirado) y es vulnerable a un hueco de seguridad que
potencialmente permite a un intruso insertar datos en la
corriente de comunicación.
La versión 2 de SSH fue puesto en libertad por el IETF en 2006.
No es compatible con SSH1.
SSH2 es una facilidad para conectarse a un ordenador y emitir
comandos remotos como si se estuvieran ejecutando en el
equipo local. El protocolo tiene dos sistemas de transferencia de
archivos asociados con él . Se trata de Secure Copy (SCP) y
Secure File Transfer Protocol (SFTP).

GC-F-004 V.01
La suite OpenSSH bajo Red Hat Enterprise Linux utiliza por
defecto la versión 2 de SSH, la cual tiene un algoritmo de
intercambio de llaves mejorado que no es vulnerable al hueco de
seguridad en la versión 1. Sin embargo, la suite OpenSSH
también soporta las conexiones de la versión 1.

GC-F-004 V.01
¿Porque usar SSH?

Los usuarios nefarios tienen a su disposición una variedad de herramientas que les permiten interceptar y
redirigir el tráfico de la red para ganar acceso al sistema. El cliente SSH y el servidor usan firmas digitales para
verificar su identidad. Adicionalmente, toda la comunicación entre los sistemas cliente y servidor es encriptada.
No servirán de nada los intentos de falsificar la identidad de cualquiera de los dos lados de la comunicación ya
que cada paquete está cifrado por medio de una llave conocida sólo por el sistema local y el remoto.

GC-F-004 V.01
Secuencia de eventos de una conexión SSH

La siguiente serie de eventos lo ayudan a proteger la integridad de


la comunicación SSH entre dos host.
Se lleva a cabo un 'handshake' (apretón de manos) encriptado para
que el cliente pueda verificar que se está comunicando con el
servidor correcto.
La capa de transporte de la conexión entre el cliente y la máquina
remota es encriptada mediante un código simétrico.
El cliente se autentica ante el servidor.
El cliente remoto interactúa con la máquina remota sobre la
conexión encriptada.

GC-F-004 V.01
Capa de transporte

El papel principal de la capa de transporte es facilitar una


comunicación segura entre los dos hosts durante la
autenticación y la subsecuente comunicación. La capa de
transporte lleva esto a cabo manejando la encriptación y
decodificación de datos y proporcionando protección de
integridad de los paquetes de datos mientras son enviados y
recibidos. Además, la capa de transporte proporciona
compresión de datos, lo que acelera la transmisión de
información.

GC-F-004 V.01
Al contactar un cliente a un servidor por medio del
protocolo SSH, se negocian varios puntos importantes para
que ambos sistemas puedan construir la capa de transporte
correctamente. Durante el intercambio se producen los
siguientes pasos:

GC-F-004 V.01
 Intercambio de claves
 Se determina el algoritmo de encriptación de la clave pública
 Se determina el algoritmo de la encriptación simétrica
 Se determina el algoritmo autenticación de mensajes
 Se determina el algoritmo de hash que hay que usar

GC-F-004 V.01
El servidor se identifica ante el cliente con una llave de
host única durante el intercambio de llaves. Obviamente
si este cliente nunca se había comunicado antes con este
determinado servidor, la llave del servidor le resultará
desconocida al cliente y no lo conectará. OpenSSH evita
este problema permitiendo que el cliente acepte la llave
del host del servidor después que el usuario es notificado
y verifica la aceptación de la nueva llave del host.

GC-F-004 V.01
Para las conexiones posteriores, la llave del host del servidor se
puede verificar con la versión guardada en el cliente,
proporcionando la confianza de que el cliente se está realmente
comunicando con el servidor deseado. Si en el futuro, la llave
del host ya no coincide, el usuario debe eliminar la versión
guardada antes de que una conexión pueda ocurrir.

GC-F-004 V.01
Un agresor podría enmascararse como servidor SSH durante el
contacto inicial ya que el sistema local no conoce la diferencia
entre el servidor en cuestión y el falso configurado por un
agresor. Para evitar que esto ocurra, debería verificar la
integridad del nuevo servidor SSH contactando con el
administrador del servidor antes de conectarse por primera vez
o en el evento de que no coincidan las claves.

GC-F-004 V.01
SSH fue ideado para funcionar con casi cualquier tipo de
algoritmo de clave pública o formato de codificación. Después
del intercambio de claves inicial se crea un valor hash usado
para el intercambio y un valor compartido secreto, los dos
sistemas empiezan inmediatamente a calcular claves y
algoritmos nuevos para proteger la autenticación y los datos que
se enviarán a través de la conexión en el futuro.

GC-F-004 V.01
Autenticación

Cuando la capa de transporte haya construido un túnel seguro


para transmitir información entre los dos sistemas, el servidor le
dirá al cliente de los diferentes métodos de autenticación
soportados, tales como el uso de firmas privadas codificadas
con claves o la inserción de una contraseña. El cliente entonces
intentará autenticarse ante el servidor mediante el uso de
cualquiera de los métodos soportados.

GC-F-004 V.01
Archivos de configuración de SSH

Openssh tiene dos conjuntos diferentes de archivos de configuración: uno para los programas cliente (ssh, scp,
y sftp) y otro para el demonio del servidor (sshd).
La información de configuración SSH para todo el sistema está almacenada en el directorio /etc/ssh/:

ssh_config — El archivo de configuración del sistema cliente SSH por defecto que se sobrescribe si hay
alguno ya presente en el directorio principal del usuario (~/.ssh/config).
sshd_config — El archivo de configuración para el demonio sshd.
ssh_host_dsa_key — La clave privada DSA usada por el demonio sshd.
ssh_host_dsa_key.pub — La clave pública DSA usada por el demonio sshd.

GC-F-004 V.01
Archivos de configuración de SSH

ssh_host_key — La clave privada RSA usada por el demonio sshd para la versión 1 del protocolo SSH.
ssh_host_key.pub — La clave pública RSA usada por el demonio sshd para la versión 1 del protocolo SSH.
ssh_host_rsa_key — La clave privada RSA usada por el demonio sshd para la versión 2 del protocolo SSH.
ssh_host_rsa_key.pub — La clave pública RSA usada por el demonio sshd para la versión 2 del protocolo
SSH.

GC-F-004 V.01
Archivos de configuración de SSH

La información para la configuración SSH específica para el usuario está almacenada en el directorio principal
~/.ssh/:
authorized_keys — Este archivo que contiene una lista de claves públicas "autorizadas". Cuando un cliente se
conecta al servidor, el servidor valida al cliente chequeando su clave pública firmada almacenada dentro de este
archivo.
id_dsa — Contiene la clave privada DSA del usuario.
id_dsa.pub — Contiene la clave pública DSA del usuario.
id_rsa — La clave RSA privada usada por ssh para la versión 2 del protocolo SSH.
id_rsa.pub — La clave pública RSA usada por ssh para la versión 2 del protocolo SSH.

GC-F-004 V.01
Archivos de configuración de SSH

identity — La clave privada RSA usada por ssh para la versión 1 del protocolo SSH.
identity.pub — La clave pública RSA usada por ssh para la versión 1 del protocolo SSH.
known_hosts — Este archivo contiene las claves de host DSA de los servidores SSH accesados por el
usuario. Este archivo es muy importante para asegurarse de que el cliente SHH está conectado al servidor
SSH correcto.

GC-F-004 V.01
Implementación de servidor SSH

GC-F-004 V.01
Implementación de servidor SSH

Descargamos le paquete de ssh.

Entramos el comando yum –y istall


openssh openssh-clients openssh-
server.

GC-F-004 V.01
Implementación de servidor SSH

Nos vamos a la ruta en la cual se encuentra el archivo de


configuración de ssh /etc/ssh.

Listamos (ls) los archivos que se encuentran en la carpeta


ssh.

Editamos el archivo sshd_config.

GC-F-004 V.01
Implementación de servidor SSH

Nos encontramos en el archivo de configuración de ssh, lo que debemos hacer es


configurar alguno de los parámetros que se encuentran en el archivo. Primero
que todo descomentaremos el puerto por el cual saldrá el servicio ssh port 22.

Configuramos la autenticación de los usuarios.


Es el tiempo que le daremos a los usuarios para que se conecten, el tiempo sera
de 30seg

GC-F-004 V.01
Implementación de servidor SSH

Para permitir o no el logeo de root.

Máximo de intentos que tendrá el usuario para poderse conectar.

Especifica si ssh debe comprobar los permisos de usuario en su directorio personal ya


archivos de host de entrada antes de aceptar. 
Determinaremos el máximo de sesiones que se permitirán para
conectarse a ssh a la vez.

GC-F-004 V.01
Implementación de servidor SSH

Para habilitar las claves RSA


Para habilitar la autenticación con las llaves publicas

Especifica si debemos utilizar la autenticación basada en


contraseñas

GC-F-004 V.01
Implementación de servidor SSH

Activar el protocolo TCP para el reenvio.


Habilitar para que las maquinas que estén unidas por medio de ssh usen el
mismo servidor grafico. No abusar tanto de esta función porque consume
muchos recursos.

GC-F-004 V.01
Implementación de servidor SSH

Iniciamos el servicio de sshd.


/etc/init.d/sshd start.

Colocamos el servicio de
ssh en todos los niveles de
ejecución.

GC-F-004 V.01
Implementación de servidor SSH

Vemos el estado del servicio.


Como podemos ver se esta ejecutando.

GC-F-004 V.01
Implementación de servidor SSH

Instalamos el paquete de openssh en el cliente.

Revisamos que el paquete se haya instalado


correctamente.
Mediante el comando rpm –q openssh-
clients

GC-F-004 V.01
Implementación de servidor SSH

Buscamos el archivo de
configuración y lo abrimos para
editarlo.

GC-F-004 V.01
Implementación de servidor SSH

Des comentamos el puerto 22 por el cual se harán las conexiones de ssh.

GC-F-004 V.01
Implementación de servidor SSH

Configuramos la autenticación de los usuarios. Es el tiempo que


le daremos a los usuarios para que se conecten, el tiempo será
de 30seg. Y le asignamos el numero de intentos que tendrán los
usuarios para conectarse a ssh así como también el numero de
sesiones.

GC-F-004 V.01
Implementación de servidor SSH

La opción PrintMotd especifica si el demonio ssh debe imprimir el contenido del


archivo / etc / motd cuando un usuario inicia sesión en forma interactiva. El
archivo / etc / motd es también conocido como el mensaje del día.

GC-F-004 V.01
Implementación de servidor SSH

Cuando el usuario entra en el sistema, imprima la última vez que se


registran en. Si ves una hora o fecha que no se acuerda iniciar la
sesión, el tiempo para hacer algunas comprobaciones!

GC-F-004 V.01
Implementación de servidor SSH

Nos cercioramos que se este ejecutando el servicio ssh.

GC-F-004 V.01
Implementación de servidor SSH

Comprobamos la conectividad del servidor con


el cliente y viceversa..

GC-F-004 V.01
Implementación de servidor SSH

Iniciamos nuevamente el servicio.

Nos conectamos por ssh desde el servidor.


ssh usuario_cliente@IP_cliente.
Como podemos ver ingresamos al cliente desde el
servidor.

GC-F-004 V.01
Implementación de servidor SSH

Ahora hacemos lo mismo desde el equipo


cliente.
ssh usuario_servidor@IP_servidor.
Como podemos ver, ingresamos a la terminal
del servidor sin problemas.

GC-F-004 V.01
Implementación de llaves

GC-F-004 V.01
Implementación de llaves

Con el comando ssh-keygen –t rsa –b 4096 generamos


las llaves privadas y publicas. Colocamos una frase
secreta ya que si un usuario mal intencionado llega a
obtener las llaves debe saber la passphrase para
utilizarlas.

Esto creara dos archivos en la carpeta .ssh, id_rsa y


id_rsa.pub.

GC-F-004 V.01
Implementación de llaves

Nos dirigimos a la carpeta oculta .ssh.


Como podemos ver se encuentran los archivos de las llaves
publicas que generamos.

Ahora copiaremos la clave que se encuentra en el archivo


id_rsa.pub a un archivo llamado authorized_keys.
Borramos el archivo id_rsa.pub

GC-F-004 V.01
Implementación de llaves

Damos permisos sobre la carpeta oculta .ssh y


al archivo authorized_keys.

GC-F-004 V.01
Implementación de llaves

Reiniciamos el servicio sshd.

GC-F-004 V.01
Implementación de llaves

Ahora copiaremos el archivo que contiene


la llave publica al servidor en la carpeta
oculta .ssh

Como podemos ver nos pide la llave


publica y la contraseña del servidor para
poder enviar el archivo.

GC-F-004 V.01
Implementación de llaves

Verificamos en el equipo servidor que se haya copiado la llave


publica (authorized_keys) del cliente.

GC-F-004 V.01
Implementación de llaves

Volvemos al equipo cliente y copiamos al


servidor la llave privada id_rsa.

Como podemos ver el archivo de la llave


privada se copio satisfactoriamente en el
servidor.

GC-F-004 V.01
Implementación de llaves

Ahora desde el servidor trataremos de ingresar al


cliente.
Como podemos ver nos pide la passphrase de la
llave para poder ingresar.

GC-F-004 V.01
Implementación de llaves

Se encuentran los archivos de las llaves en el servidor. Ya


no tendremos necesidad de generarlas en el equipo.

GC-F-004 V.01
Pruebas
GC-F-004 V.01
Pruebas

Para demostrar que funciona nuestro


servicio de ssh y las llaves
correctamente, vamos a enviar desde el
cliente un directorio llamado dir_prueba
al servidor.

GC-F-004 V.01
Pruebas

Vamos al equipo servidor y revisamos que haya


recibido el directorio dir_prueba.

GC-F-004 V.01
Pruebas

Ahora vamos a descargar el directorio que se encuentra


en el servidor jcuartas-yosma-aocoro en el cliente.

En cliente descargamos el directorio y le


cambiamos el nombre con el cual va
aparecer localmente grupo4.

GC-F-004 V.01
Pruebas

Se han descargado también los archivos que estaban dentro


del directorio.

GC-F-004 V.01
Pruebas con Windows XP

Probamos conectividad con el servidor linux.

GC-F-004 V.01
Pruebas con Windows XP

Probamos conectividad con el cliente XP.

GC-F-004 V.01
Pruebas con Windows XP

Abrimos la herramienta de Putty. Para conectarnos con


el servidor.

GC-F-004 V.01
Pruebas con Windows XP

La primera vez que accedemos, nos


indicara que se creara una clave de
conexión, pulsamos si.

GC-F-004 V.01
Pruebas con Windows XP

Ingresamos con el usuario root.

Podemos ver todos los archivos del servidor.

GC-F-004 V.01
Conclusión

En este presentación aprendimos que además de acceder a maquinas remotas también podemos copiar datos
de forma segura, gestionar claves RSA para no conectar dispositivos y pasar los datos de cualquier otra
aplicación por un canal tunelizado mediante ssh.

Como muchas empresas se encuentran expuestas a amenazas pues se gestionan las llaves criptográficas para
autenticar accesos a sistemas internos y servicios críticos.

GC-F-004 V.01

También podría gustarte