Servicio SSH. Servicios en red. I.E.S. Joan Coromines. Eloi Forés

29 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)

Servicio SSH

Servicios en red

I.E.S. Joan Coromines Eloi Forés

(2)

Índice

1.¿Qué es el servicio SSH? 2.Encriptación.

3.Características de OpenSSH 4.¿Qué es un túnel SSH?

5.OpenSSH bajo Debian / Ubuntu GNU/Linux 6.Autenticación de usuarios

7.Utilización básica de OpenSSH 8.Reenvío X Windows (X11)

9.Transferencia de ficheros (scp sftp) 10.Reenvío por TCP/IP. Túneles

(3)

1. ¿Qué es el servicio SSH?

 La administración remota hasta hace unos años se

hacía con el protocolo Telnet.

Telnet envía la información en texto plano.  Grandes servidores y clientes ligeros.

 No había preocupación por la seguridad.

 En la actualidad se utiliza Secure SHell (SSH).  SSH ofrece autenticación, confidencialidad e

integridad.

(4)

1. ¿Qué es el servicio SSH?

 SSH permite abrir una sesión de terminal desde un

cliente remoto sobre el sistema servidor, como el telnet, pero sobre una conexión cifrada y segura.

 SSH utiliza por defecto el puerto 22.

 Usa el modelo cliente-servidor y la seguridad se

basa en la criptografía.

 Funciona en Unix/Linux, Windows y MacOS.  La versión libre de SSH más importante es

(5)

2. Características Encriptación

La encriptación resuelve:

Privacidad o confidencialidad: Únicamente el

destinatario puede acceder a la información.

Integridad: la información no puede alterarse.  Autenticación: conocemos la identidad de los

participantes en la comunicación.

No rechazo: el emisor no puede negar que es el

(6)

3. Características de OpenSSH

Características de OpenSSH

✔ Proyecto de código abierto. Fiable y seguro ✔ Licencia libre, se puede usar para cualquier

propósito, incluso comercial.

✔ Reenvío por X11 (X Windows). Característica de

GNU/Linux que permite cifrar el tráfico en entornos X Windows remotos.

✔ Reenvío por puertos. Mapeado de un puerto local

(7)

4. ¿Qué es un túnel SSH?

En los sistema o redes de los extremos se

está ejecutando protocolos no seguros

Consiste en crear un túnel que conecta dos

sistemas o redes para que los datos viajen

seguros.

SSH asegura la conexión mediante

criptografía y con el reenvío de puertos (

Port

Forwarding

).

El reenvío de puertos puede activarse o no

(8)

5. OpenSSH en Ubuntu

Instalación en Ubuntu

# apt-get install openssh-server

La instalación genera un par de claves para

la máquina, una pública y una privada.

Para arrancar el servicio SSH:

# systemctl start [stop | restart | status] ssh # service ssh start [stop | restart | status]

(9)

5. OpenSSH en Ubuntu

Los archivos de configuración se encuentran en

/etc/ssh/

 sshd_config: Configuración del servidor SSH  ssh_config: Configuración del cliente SSH

 ssh_host_rsa_key: Clave RSA privada

 ssh_host_rsa_key.pub: Clave RSA pública  ssh_known_hosts: claves de otras máquinas  ~/.ssh/id_rsa: clave privada del usuario

(10)

El archivo sshd_config puede incluir las

siguientes directivas:

Port: indica el puerto de escucha del servicio SSH (por

defecto, se trata del 22).

Protocol: indica la versión de protocolo que se utiliza (por

lo general, la 2).

X11Forwarding: este parámetro permite ejecutar

aplicaciones gráficas en el servidor y visualizarlas en el cliente remoto (X11Forwading yes).

PermitRootLogin: este parámetro indica si el administrador

(root) puede conectarse al servidor SSH. Por motivos de seguridad, no debe permitirse (PermitRootLogin no).

(11)

5. OpenSSH Ubuntu

AllowUsers: con este parámetro se indican los usuarios que

podrán conectarse al servidor. La lista de usuarios debe

aparecer en la misma línea, con los nombres separados por espacios (AllowUsers user1 user2).

DenyUsers: impide que los usuarios especificados se conecten.  LoginGraceTime: número de segundos que tiene un usuario

remoto para hacer login en el servidor SSH.

MaxAuthTries: número de intentos de que dispone el usuario

remoto para hacer login.

MaxStartups: define el número máximo de usuarios que

(12)

5. OpenSSH Ubuntu

AllowGroups: permitir a ciertos grupos (/etc/group) hacer

login utilizando SSH.

DenyGroups: deshabilita la opción que permite que estos

grupos hagan login.

HostbasedAuthentication: informa si se utiliza el método de

autenticación por host o por usuario. Por host, se debe instalar en el servidor un certificado de cada host a los que se les da acceso.

PasswordAuthentication: indica si se permite o no la

(13)

6. Autenticación de usuarios

Autenticación por contraseña

 El usuario debe introducir su contraseña una vez

establecida la conexión con el servidor SSH.

 El servidor SSH comprueba que el usuario tiene

cuenta en el sistema.

 El usuario escribe la contraseña al conectarse

(14)

6. Autenticación de usuarios

Autenticación por clave pública

 El servidor genera un número aleatorio (desafío o

challenge) y se cifra con la clave pública del usuario.

 El usuario lo descifra con su clave privada y

contesta

 El servidor comprueba el texto de respuesta

 El proceso es transparente al usuario, éste tendrá

que teclear la contraseña cuando el programa lo pida

(15)

7. Utilización básica de OpenSSH

Autenticación con contraseña

ssh [nombreusuario@]maquina_remota

Ejemplo: ssh prova@A4server

A continuación el servidor pide la contraseña para el usuario prova.

Nota: El usuario prova debe existir en el servidor. El nombre de usuario no será necesario indicarlo cuando en la máquina remota a la que se quiere acceder existe un usuario con el mismo nombre con el que se esta conectado en la máquina cliente.

Nota 2: Para teminar la conexión con el servidor se utiliza la orden

(16)

7. Utilización básica de OpenSSH

Autenticación con clave pública/privada

Se generan las claves RSA usando SSH-2 (versión 2 del protocolo SSH) que es el protocolo utilizado y recomendado hoy día. Una de las claves generadas será la clave privada que quedará guardada en nuestra máquina y opcionalmente podrá ser protegida con una contraseña. La otra será la clave pública que es la que se transfiere al servidor remoto.

Para generar ambas claves se introduce el siguiente comando:

ssh-keygen -t rsa

El sistema pide una passphrase opcional para proteger la clave privada.

Una vez terminado el proceso, en la carpeta /home/smx2/.ssh/ tendremos un nuevo fichero con la clave pública id_rsa.pub y otro con la clave privada id_rsa.

Lo siguiente que se debe hacer será transferir la clave pública al servidor,

(17)

7. Utilización básica de OpenSSH

Autenticación con clave pública/privada

Transferir la clave pública al servidor:

Con la orden scp (secure copy):

scp ~/.ssh/id_rsa.pub usurari@SSHServer:.ssh/nueva_clave ssh usuari@SSHServer

cd .ssh/

cat nueva_clave >> authorized_keys rm nueva_clave

Con ssh-copy-id:

ssh-copy-id -i .ssh/id_rsa.pub usuari@SSHServer

Si no queremos que pida la passphrase, si la hay, al iniciar una sesión, configuramos ssh-agent añadiéndola mediante ssh-add. Si se ejecuta sin parámetros toma la clave de ~/.ssh id_dsa o fichero equivalente:

(18)

8. Reenvío X11

Al ejecutar un programa X Window desde una conexión SSH, cliente y servidor SSH crean un nuevo canal seguro.

Requisitos:

En la configuración del servidor: X11Forwarding yes

En la del Cliente: ForwardX11 yes

Nota: Para que un cliente pueda visualizar los resultados de la aplicación gráfica ejecutada en el servidor, debe como mínimo tener instaladas las X Windows y para interactuar con las

ventanas, es recomendable tener instalado un gestor de ventanas. Si partimos de un sistema sin entorno gráfico, debemos instalar:

# apt-get install xorg fvwm

$ startx → Arrancar las X11 y el gestor de ventanas

Pasos a seguir:

Conexión al servidor con: ssh -X usuario@servidorSSH

Ejecutar en la sesión remota una aplicación X11. Ejemplo: $ ssh -X usuario@servidorSSH

(19)

9. Transferencia segura de

archivos

Tenemos dos alternativas:

scp

y

sftp

 scp: permite hacer copias seguras de archivos o

directorios completos ('*'). Es una versión segura de la orden cp y además funciona en red

.

$scp ruta/fichero usuario@servidorSSH:ruta/fichero_destino $scp usuario@servidorSSH:ruta/fichero_destino ruta/fichero

 sftp emula la forma de un cliente ftp pero con

conexión segura. Esta orden la estudiaremos en el tema sobre el servicio FTP.

$ sftp [nombre_usuario@]nombre_maquina

 Ayuda de la orden sftp:

(20)

10. Reenvío por TCP/IP. Túneles

Asignación de un puerto local del cliente a un

puerto remoto del servidor.

root para puertos < 1024

El servidor SSH se convierte en un túnel

encriptado para el cliente SSH.

El usuario ha de tener una cuenta en el

sistema remoto

También se conoce como

mapeado de

puertos

(21)

10. Reenvío por TCP/IP. Túneles

 Sintaxis para crear un túnel de reenvío( -L)

ssh -L dir_local:port_local:dir_remota:port_remoto usuario@dir_remota

Si no se indica dir_local se toma localhost, y * cualquier dirección del sistema local:

ssh -f -L *:8080:192.168.1.136:8080 usuario@192.168.1.136 -N

Cuando en el navegador accedamos a una dirección local:8080 nos cargará la página Web de 192.168.1.136:8080

 Sólo puede ser utilizado con aplicaciones TCP (orientadas a

conexión). Con servicios como DHCP, NFS, TFTP, no funciona (UDP).

 Requisito: servicio SSH ejecutándose en la máquina remota y el

servicio al que accedemos.

 Es posible tener el servicio en otro ordenador diferente a la máquina

(22)

11. VPN OpenSSH

 Vamos a crear una VPN (Red Privada Virtual) de forma

que toda la información trasmitida por las interfaces de la VPN va cifrada sobre la conexión de red normal.

 Pasos a seguir:

En el servidor OpenSSH:

 Habilitar root: #passwd root (dar una contraseña)  # mkdir /root/.ssh

 En /etc/ssh/sshd_config:  PermitTunnel yes

(23)

11. VPN OpenSSH

En el cliente, generar clave y copiarla al servidor:

# ssh-keygen -t rsa (No poner nada en la passphrase) # cd .ssh

# ssh-copy-id -i .ssh/id_rsa.pub usuario@SSHServer

Instrucciones para crear la VPN:

Cliente: (Ejecutar primero la parte cliente y luego el servidor)

# modprobe tun (Puede no ser necesario en sistemas actuales)

# ssh -f [-C] -w 0:0 IPServidorSSHD -N (-C para usar compresión)

#ifconfig tun0 10.10.10.2 pointopoint 10.10.10.1 netmask 255.255.255.252

donde: la primera IP del túnel es del cliente y la segunda la del servidor

Servidor:

(24)

11. VPN OpenSSH

Para probar el túnel podemos acceder a una Web

del servidor remoto usando la dirección IP de la

VPN, de forma que el acceso será seguro:

(25)

PRÁCTICA 1: OPENSSH

Al finalizar la práctica se deberá entregar un guión que explique y muestre el proceso y los pasos seguidos para realizar todos y cada uno de los puntos siguientes:

 1. Arranca el servidor SSH en la máquina y comprobar que podemos acceder con cualquier

usuario desde cualquier equipo.

 2. Configura el servicio SSH para que no admita hacer login como root. Después como usuario

no y sí como root. Crea dos nuevos usuarios: usuario2 y usuario3, y un grupo ssh_users, añádelos a este grupo y que sus miembros sean los únicos con acceso a este servicio.

 3. El servicio SSH por defecto escucha en el puerto 22. Modifícalo para que arranque en el

puerto 10022 (u otro) y averigua cuál sería la orden utilizada para poder acceder al servidor. (Ayuda: man ssh).

 4. Por defecto, al autenticarse correctamente en el servidor SSH, éste nos muestra la fecha y

hora de la última vez que nos conectamos. Encuentra la opción que se encarga de modificar este aspecto.

 6. Configura el servidor SSH de forma adecuada para que acepte la redirección X11, de tal

forma que se puedan ejecutar aplicaciones gráficas de forma remota. Haz pruebas y verifica su funcionamiento.

 7. Prueba a conectarte desde un cliente SSH de Windows (ejemplo: Putty) a un servidor de

(26)

PRÁCTICA 2: OPENSSH

Al finalizar la práctica se deberá entregar un guión que explique y muestre el proceso y los pasos seguidos para realizar todos y cada uno de los puntos siguientes:

 Autenticación de cliente: conectarse de una máquina A a

otra B por ssh, autenticándose por los métodos: a) password.

b) clave pública con passphrase nula, siendo iguales usuarios en ambas máquinas. Copiar la clave con scp añadiéndola al final (sin sobreescribir) del fichero authorized_keys.

c) clave pública con passphrase no nula, siendo usuarios iguales en cada máquina.

(27)

PRÁCTICA 3: OPENSSH

Al finalizar la práctica se deberá entregar un guión que explique y muestre el proceso y los pasos seguidos para realizar todos y cada uno de los puntos siguientes:

 En esta práctica usaremos la orden scp para copiar ficheros y directorios

entre el cliente y el servidor.

 En tu directorio HOME, crea un directorio llamado dir1, dentro de este crea

otro llamado dir2 y un par de ficheros de texto f1.txt y f2.txt y dentro de dir2 crea un fichero llamado f3.txt.

 Copia f1.txt y f2.txt en el servidor  Copia dir2 en el servidor

(28)

PRÁCTICA 4: OPENSSH

Al finalizar la práctica se deberá entregar un guión que explique y muestre el proceso y los pasos seguidos para realizar todos y cada uno de los puntos siguientes:

 Vamos a configurar el reenvío de puertos mediante SSH, de forma que las consultas de DNS (puerto 53) que se realicen mediante el protocolo TCP se ejecuten a través del reenvío de puertos, consiguiéndose una transmisión segura de información. En esta práctica puedes usar tu servidor DNS, o bien el del aula si se lo pides al profesor.

 Para probar el reenvío se debe indicar en las órdenes de consulta DNS el uso de TCP con:

 dig -tcp sistema_a_buscar  host -T sistema_a_buscar

(29)

PRÁCTICA 5: OPENSSH

Al finalizar la práctica se deberá entregar un guión que explique y muestre el proceso y los pasos seguidos para realizar todos y cada uno de los puntos siguientes:

 En esta práctica vamos a crear un túnel que facilite una conexión segura entre los sistemas que conecta, de forma que, como hemos visto la información transmitida por las IP asociadas al túnel irán cifradas mediante la conexión SSH.

 El túnel unirá tu servidor SSH y un sistema que actuará como cliente. La configuración de red del túnel será:

 Red 10.1.1.0 / 30 (255.255.255.252) sólo tenemos dos IP, la primera para el servidor y la segunda para el cliente.

 Para probar el funcionamiento del túnel realizaremos lo siguiente:  Servidor: ping 10.1.1.2 y desde el cliente: ping 10.1.1.1  Acceder al servidor Web del sistema servidor con:

Figure

Actualización...

Referencias

Actualización...

Related subjects :