openssh
-
Upload
dani-gutierrez-porset -
Category
Technology
-
view
1.582 -
download
1
Transcript of openssh
![Page 2: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/2.jpg)
2
Índice● Introducción
● Arquitectura del protocolo
● Usos
● Autenticación de cliente, de servidor. Agente de autenticación
● Otras funcionalidades
● Comandos varios. Ficheros y directorios
● Software
● Información adicional
● Licencia de uso
![Page 3: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/3.jpg)
3
Introducción● ssh = secure shell
● Establece canales seguros (confidencialidad, autenticidad, integridad) para distintos usos (shell remota, túneles TCP, transmisión de ficheros,...).
● Basado en claves públicas con comprobación manual (no en certificados X.509 y CAs).
● Puerto por defecto: 22
● 2 versiones del protocolo:
– v1:1995. RSA, no DSA. Obsoleto.
– v2: 1998. RSA y DSA. Mejor para confidencialidad (AES, 3DES, Blowfish, CAST128, ArcFour) e Integridad (hmac-md5, hmac-sha1).
![Page 4: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/4.jpg)
4
Introducción● Implementaciones principales del servidor:
– OpenSSH: versión libre, principalmente desarrollada por el proyecto OpenBSD
– SSH Secure Shell (“SSH2”; no confundir con SSH-2, la versión 2 del protocolo)
● Diferencias entre implementaciones:
– Licencia
– Sistemas operativos sobre los que corre
– Funcionalidades
– Formatos de fichero ej. OpenSSH y SSH2 para las claves del protocolo SSH-2.
![Page 5: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/5.jpg)
5
Arquitectura del protocolo● rfc4251
● La arquitectura tiene tres niveles:
Transporte
Conexión
Autenticación
![Page 6: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/6.jpg)
6
Arquitectura del protocolo● Nivel de Transporte (rfc4253): encriptación,
integridad y (opcionalmente) compresión de la comunicación.
– Fase inicial:● Autenticación del servidor● Gestión de intercambio de clave inicial● Negociación de algoritmos:
– Intercambio de clave (Diffie-Hellman)– Autenticación del servidor (rsa, dsa)– Encriptación simétrica– MAC– Compresión
– Renovaciones de clave de sesión (tiempo o volumen de datos)
![Page 7: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/7.jpg)
7
Arquitectura del protocolo● Nivel de Autenticación (rfc4252): autentica al
cliente en base a distintos métodos:
– Contraseña (“password”)
– Clave pública (“publickey”)
– En base a equipo (“hostbased”)
– Interactiva por teclado (“keyboard-interactive”): el servidor solicita datos al usuario, quien responde a través del teclado.
● Permite extender la autenticación sin modificar programas
● Ej: challenge response, OTP=one-time password (ej. S/Key, SecurID)
– “gssapi”, “gssapi-keyex”, “gssapi-with-mic”: kerberos, NTLM,...
![Page 8: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/8.jpg)
8
Arquitectura del protocolo● Nivel de Conexión (rfc4254): gestión (apertura,
multiplexación,...) de distintos tipos de canales:
– "session": terminal interactivo, ejecución remota, subsistema (sftp, scp).
● Solicitudes: pty-req, x11-req, env, shell, exec, subsystem, window-change, xon-xoff, signal, exit-status, exit-signal
– "x11"
– "forwarded-tcpip": reenvío en sentido cliente-srv
– "direct-tcpip": reenvío en sentido srv-cliente
![Page 9: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/9.jpg)
9
Arquitectura del protocolo● Capas de transporte y autenticación:
![Page 10: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/10.jpg)
10
Arquitectura del protocolo
-L 10000:localhost:80 -L 10001:192.168.2.9:110
-L 9000:localhost:80 -R 10001:192.168.1.10:110
● Capa de conexión
![Page 11: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/11.jpg)
11
Usos● Shell remota (sustituto del telnet, rlogin, rsh)
● Ejecución de comandos remotos (sustituto del rexec). Reserva de pseudoterminal.
● Copia de ficheros por red: scp, sftp (sustituto del ftp,rcp), rsync
● Montaje de sistemas de ficheros: sshfs
● Proxy o intermediario:
– Reenvío de las X.
– Túneles tcp (nivel 4) directos e inversos.
– VPNs (túneles de nivel 2 y 3).
– Proxy SOCKS.
– Reenvío de agente de autenticación.
![Page 12: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/12.jpg)
12
Usos: Reenvío de las X● Al reenviarlas, en el servidor ssh se lanza el cliente
X que es presentado en el cliente ssh (servidor X).
● Opciones:
– Habilitar (-X) o deshabilitar (-x) el reenvío de las X. Opción X11Forwarding.
– -Y / ForwardX11Trusted: antigua.
● Peligro: si en el servidor ssh alguien (root) accede al fichero .Xauthority del usuario, podría acceder al escritorio del cliente ssh y ej. capturar teclas.
● Detalles en apartado 9.3 de http://www.unix.org.ua/orelly/networking_2ndEd/ssh/index.htm
![Page 13: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/13.jpg)
13
Usos: Túneles TCP directos● Por cada túnel directo se abre un puerto en el
servidor ssh de modo que si un equipo se conecta a dicho puerto, se establece una conexión a otro puerto de una máquina accesible desde dicho servidor ssh, incluido el mismo servidor ssh.
● Se hacen túneles directos para conectar:
– Desde el cliente o desde equipos con acceso a éste
– Al servidor o a equipos con acceso desde éste
● Posibles utilidades:
– Saltarse firewalls que no permiten acceder a otros servicios
– Encriptación de protocolos no seguros.
● Ej: ssh usr@srv_ssh -L 11020:srv_pop3:110 -L 11025:srv_smtp:25
![Page 14: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/14.jpg)
14
Usos: Túneles TCP directos
Proceso
Proceso
Clientessh
Servidorssh
ssh usrB@B -p p1 -L p
3:localhost:p
4 -L p
2:D:p
5 [-g]
A B
C Dp
5
p1
p2
p3
p4
![Page 15: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/15.jpg)
15
Usos: Túneles TCP inversos● Por cada túnel inverso se abre un puerto en el
servidor ssh de modo que si un equipo se conecta a dicho puerto, se establece una conexión a otro puerto de una máquina accesible desde el cliente ssh, incluido el mismo cliente ssh.
● Se hacen túneles inversos para conectar:
– Desde el servidor o desde equipos con acceso a éste
– Al cliente o a equipos con acceso desde éste
● Posibles utilidades:
– Acceso a máquinas que no tengan IP fija
– Encriptación de protocolos no seguros
● Ej: ssh usr@srv_ssh -R 2200:localhost:22 -R 11000:srv_pop3:110
![Page 16: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/16.jpg)
16
Usos: Túneles TCP inversos
Proceso
Clientessh
Servidorssh
ssh usrB@B -p p1 -R p
3:localhost:p
4 -R p
2:C:p
5 [-g]
A B
C Dp
5
p1
p2
p3
Proceso
p4
![Page 17: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/17.jpg)
17
Usos: Túneles TCP● Se pueden establecer varios túneles directos e
inversos en una misma conexión
● Los protocolos a tunelizar han de ir sobre tcp (no udp). Ej. sí pop3, no dns.
● Conexión desde otros equipos. Opciones:
– Túneles directos: en cliente, -g o GatewayPorts=yes
– Túneles inversos: en servidor, GatewayPorts a yes o clientspecified.
● En ambos casos de túneles directo e inverso se puede especificar por cuál de las interfaces IP del equipo destino se va a habilitar una escucha:
-L [bind_address:]port1:host:port2
![Page 18: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/18.jpg)
18
Usos: VPNs● Se crea un enlace punto a punto entre el cliente y
el servidor (mediante tun), a través del cual se pueden enrutar las comunicaciones entre las dos redes.
● Opciones:
– En cliente: -w, Tunnel, TunnelDevice
– En servidor: PermitTunnel indica el tipo permitido: punto a punto (nivel 3), ethernet (nivel 2) o ambos
● No es una VPN de mucha calidad (sobrecarga, latencia). Mejor emplear otras soluciones.
● Para entrar a una máquina remota suele haber más disponibilidad con ssh (ej. openssh, putty.exe) que con un cliente VPN (openssh, openvpn, ipsec,...).
![Page 19: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/19.jpg)
19
Usos: proxy SOCKS● Permite que otros equipos se conecten a un cliente
ssh que hace de SOCKS proxy. Ej:
ssh -D 1080 srv_ssh
![Page 20: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/20.jpg)
20
Autenticación de cliente● Tipos de autenticaciones. Las principales son:
– PubkeyAuthentication: basada en claves públicas y privadas. Permite agente de autenticación.
– PasswordAuthentication. Tiene interface a PAM.
– HostbasedAuthentication: peligro de spoofing● La clave pública del host cliente ha de ponerse
previamente en uno de los fichero de hosts conocidos.● (RSAAuthentication y RHostRSAAuthentication no
aplican en la versión 2)
– ChallengeResponseAuthentication (corresponde al “keyboard-interactive” del protocolo ssh). Tiene interface a PAM.
● En el servidor se puede indicar una lista de cuáles se habilitan o no.
![Page 21: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/21.jpg)
21
Autenticación de cliente● Claves públicas/privadas:
– Host. La clave privada nunca está encriptada.
– Usuario:● Se pueden tener varias claves para entrar a distintas
máquinas (si una está comprometida, el resto no).● Su clave privada puede estar o no encriptada con una
contraseña. Si no lo está:– Útil para conexiones no interactivas, ej. cron– Peligro: si alguien tiene el fichero, puede entrar a otros
equipos sin necesidad de saber una contraseña.– Solución: limitar los comandos ejecutables en
authorized_keys, ej.command="/usr/local/backup.sh", from="cliente" ssh-dss ...
![Page 22: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/22.jpg)
22
Autenticación de servidor● Autenticación antispoofing del servidor (en el
cliente): basada en la clave pública del servidor y su huella:
– ¿Se ha conectado alguna vez al servidor S?● No: se muestra la huella de la clave pública del
servidor. Comprobación “humana”.● Sí: el fichero known_hosts guarda correspondencias de
equipos (nombres DNS y/o IPs), puertos y sus claves públicas. Se detecta si ha habido cambio.
– Otros métodos para ver la huella de la clave pública:● A partir del fichero de la clave pública:
ssh-keygen -l -f fich_clave_publica● Con registros DNS de tipo SSHFP:
ssh-keygen -r host
![Page 23: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/23.jpg)
23
Autenticación de servidor● Opciones de interés (cliente):
– StrictHostKeyChecking: formas de añadir nuevos servidores a known_hosts (sí/no/preguntar)
– VerifyHostKeyDNS: chequeo con registros DNS SSHFP.
– CheckHostIP: además de la clave se verifica la IP
![Page 24: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/24.jpg)
24
Agente de autenticación● En el lado cliente, válido sólo para autenticación
por clave pública.
● Es un proceso residente en memoria que gestiona las conexiones ssh (al llamar a ssh hay una conexión con éste), almacenando las claves privadas que se le van añadiendo con ssh-add.
● Usos:
– Sólo es necesario introducir la contraseña de la clave privada la primera vez (cuando se añade), y en el resto de conexiones ssh no.
– El servidor se puede configurar para permitir un reenvío del agente de autenticación hacia otras conexiones ssh, de modo que siempre se haga la validación contra el cliente inicial.
![Page 25: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/25.jpg)
25
Agente de autenticación● Para la comunicación local con el agente se emplea
un socket unix y las variables de entorno SSH_AUTH_SOCK y SSH_AGENT_PID, siendo el uso de dos formas posibles:
– Trabajar desde procesos hijos del ssh-agent:ssh-agent xterm &
– Emplear eval:eval $(ssh-agent)
● Problema de seguridad "agent hijacking": si el usuario root establece SSH_AUTH_SOCK al socket de otro usuario podría entrar a sistemas remotos.
● Opciones de reenvío: ForwardAgent, permitir (-A) o denegar (-a) el reenvío del agente.
![Page 26: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/26.jpg)
26
Otras funcionalidades● Escucha por múltiples puertos (en servidor)
● Compresión: -C, Compression
● Pseudo-terminal: -t. Necesario para:
– lanzar programas que requieran pty, ej. emacs, vi, ncurses
– sentencias de escape
● Uso de proxy: ProxyCommand. Especifica un comando de conexión de modo que se puede indicar el establecimiento de una conexión vía proxy.
– Utilidad, ej: si en una red sólo hay habilitada una conexión hacia el exterior vía proxy
![Page 27: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/27.jpg)
27
Otras funcionalidades●Multiplexación de sesiones
– Múltiples conexiones interactivas en una misma sesión ssh.
– Conexiones establecidas por socket unix. Ventajas:● Más rápido: sin tener que establecer la autenticación
inicial e intercambio de claves.● Menos recursos: sin necesidad de abrir otra conexión
tcp/ip
– La lógica está en el lado cliente (desde v4) y el servidor puede ser más antiguo
– Opciones:● ControlMaster y ControlPath (path del socket unix)● -M (activación), -O (comandos), -S (path del socket)
![Page 28: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/28.jpg)
28
Otras funcionalidades● Modos de ejecución:
– -f: queda en background tras pedir la contraseña y ejecutar un comando remoto (obligatorio). Ej. para sólo redirigir túneles sin lanzar shell. Implica -n.
– -n: impide leer de stdin (redirección a /dev/null)
– -N: no ejecutar ningún comando ni lanzar shell. Si se usa -f es necesario. Si no útil ej. para redirigir túneles y mantener ventana abierta.
![Page 29: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/29.jpg)
29
Comandos varios● Más empleados:
– sshd: servidor
– ssh: cliente ssh
– scp: copia ficheros entre máquinas
– ssh-keygen: gestión de claves
– ssh-agent: agente ssh
– ssh-add: añadir clave a agente ssh
![Page 30: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/30.jpg)
30
Comandos varios● Menos empleados:
– ssh-keyscan: se conecta a servidores para obtener las claves públicas dsa o rsa. Si el fichero ssh_known_hosts se construye a partir de este comando y sin verificación, riesgo de ataque "man in the middle"
– sftp: semejante a cliente ftp encriptado a través de ssh
– ssh-copy-id: se conecta a un equipo remoto por ssh e instala la clave pública en el destino
– ssh-argv0: obvia el comando ssh para conexiones a máquinas por ssh
– slogin: softlink a /usr/bin/ssh
![Page 31: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/31.jpg)
31
Ficheros y Directorios● /etc/ssh/ contiene:
– Configuración del cliente (ssh_config) y del servidor (sshd_config)
– Claves privada y pública del servidor: ssh_host_rsa_key,ssh_host_dsa_key,ssh_host_rsa_key.pub,ssh_host_dsa_key.pub
– Equipos (nombre, IP) y claves públicas desde los que se quiere conectar con autenticación Host based: ssh_known_hosts.
– Comandos que se ejecutan tras la conexión: sshrc
● Otros para autenticación por host:● /etc/hosts.equiv, /etc/ssh/shosts.equiv● Para TCP wrappers: /etc/hosts.allow, /etc/hosts.deny
![Page 32: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/32.jpg)
32
Ficheros y Directorios● ~/.ssh/ contiene información asociada al usuario:
– Configuración del usuario: config
– Claves privada y pública del usuario: id_dsa, id_rsa, id_dsa.pub, id_rsa.pub:
– Claves públicas de otros equipos autorizados a entrar: authorized_keys
– Equipos (nombre, IP), puerto y claves públicas a los que se ha conectado previamente: known_hosts. La opción HashKnownHosts hace que estén encriptados.
– Comandos que se ejecutan tras la conexión: rc
– Variables de entorno: environment
● Otros para autenticación por host: ~/.rhosts, ~/.shosts
![Page 33: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/33.jpg)
33
Software● Clientes ssh: http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
● Paquetes ubuntu(apt-cache search ssh | grep -i ssh)
– Básicos:● openssh-client - Secure shell client, an rlogin/rsh/rcp replacement
● openssh-server - Secure shell server, an rshd replacement
● ssh - Secure shell client and server (transitional package)
– Interesantes:● autossh - Automatically restart SSH sessions and tunnels
● sshfs - filesystem client based on SSH File Transfer Protocol
– Password agents: para Xwindow, gnome, no interactivos,...(apt-cache search ssh | grep -i ssh | grep pass)
– Librerías para distintos lenguajes: C, perl, ruby, python...
![Page 34: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/34.jpg)
34
Software● Otros paquetes ubuntu:
– clusterssh - administer multiple ssh or rsh shells simultaneously– denyhosts - an utility to help sys admins thwart ssh hackers– dpsyco-ssh - Automate administration of access via ssh– dropbear - lightweight SSH2 server and client– gstm - Gnome SSH Tunnel Manager– jta - Java telnet/ssh applet– kdessh - ssh frontend for KDE– keychain - key manager for OpenSSH– kssh - KDE front end to ssh– libpam-ssh - enable SSO behavior for ssh and pam– lsh-...– putty... - Telnet/SSH client for X– python-twisted-conch - The Twisted SSH Implementation– rssh - Restricted shell allowing only scp, sftp, cvs, rsync and/or rdist– scanssh - get SSH server versions for an entire network– secpanel - A graphical user interface for SSH and SCP– ssh-krb5 - Secure shell client and server (transitional package)– sshguard– sshm - A command-line tool to manage your ssh servers– zssh - interactive file transfers over ssh
![Page 35: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/35.jpg)
35
Información adicional● openssh: http://www.openssh.org
● http://www.unix.org.ua/orelly/networking_2ndEd/ssh/index.htm
● Grupo de trabajo del IETF: http://www.ietf.org/html.charters/OLD/secsh-charter.html
● http://www.linuxjournal.com/article/9566
![Page 36: openssh](https://reader033.fdocuments.es/reader033/viewer/2022052906/558a67d8d8b42a5f7a8b45a4/html5/thumbnails/36.jpg)
36
Licencia de uso
http://creativecommons.org/licenses/by-sa/3.0/