Diferencia entre revisiones de «SSH - Secure Shell»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con « = Introdución = O nome SSH fai referencia ó protocolo de nivel de aplicación que permite conectarse de forma remota a un equipo obtendo unha liña de comandos para a s…»)
 
 
Línea 3: Línea 3:
 
O nome SSH fai referencia ó protocolo de nivel de aplicación que permite conectarse de forma remota a un equipo obtendo unha liña de comandos para a súa administración. Trátase dun protocolo baseado no modelo cliente-servidor, onde o servidor ssh escoita por defecto no porto tcp/22.
 
O nome SSH fai referencia ó protocolo de nivel de aplicación que permite conectarse de forma remota a un equipo obtendo unha liña de comandos para a súa administración. Trátase dun protocolo baseado no modelo cliente-servidor, onde o servidor ssh escoita por defecto no porto tcp/22.
  
−
SSH emprega a criptografía para encargarse (dun xeito transparente para o usuario) das operacións necesarias para acadar:
+
SSH emprega a criptografía para encargarse (dun xeito transparente para o usuario) das operacións necesarias para acadar as seguintes características.
  
−
Privacidade: a información que circula pola rede está protexida ó usarse técnicas de cifrado forte. Os datos son 'transformados' de forma que son entendibles unicamente polo seu lexítimo destinatario; polo tanto, aínda que un sniffer os capturase non se poderían recuperar.
+
== Privacidade ==
 +
 
 +
A información que circula pola rede está protexida ó usarse técnicas de cifrado forte. Os datos son 'transformados' de forma que son entendibles unicamente polo seu lexítimo destinatario; polo tanto, aínda que un sniffer os capturase non se poderían recuperar.
  
 
Nas seguintes imaxes poden compararse as capturas dun paquete ssh e dun paquete telnet (protocolo semellante ó ssh pero que non cifra as comunicacións). No caso do telnet, os contidos dos paquetes viaxan en claro pola rede, polo que un atacante podería ver sen problema ningún a información (por exemplo o nome de usuario e contrasinal de acceso ó equipo); sen embargo, o paquete SSH ó ir cifrado o seu contido non é lexible.
 
Nas seguintes imaxes poden compararse as capturas dun paquete ssh e dun paquete telnet (protocolo semellante ó ssh pero que non cifra as comunicacións). No caso do telnet, os contidos dos paquetes viaxan en claro pola rede, polo que un atacante podería ver sen problema ningún a información (por exemplo o nome de usuario e contrasinal de acceso ó equipo); sen embargo, o paquete SSH ó ir cifrado o seu contido non é lexible.
Línea 17: Línea 19:
 
Fig. Captura dun paquete SSH.
 
Fig. Captura dun paquete SSH.
  
−
Integridade: garántese que os datos non se alteraron durante a súa viaxe pola rede. Se un terceiro modifica os datos en tránsito o destinatario será consciente diso. SSH encárgase de verificar que os datos non se modificaron e que ademais proceden realmente do outro extremo da conexión.
+
== Integridade ==
−
Autenticación: antes de poder iniciar unha sesión no equipo remoto compróbanse as identidades do servidor e do cliente:
+
 
−
Server Authentication: o cliente comproba a identidade do servidor ssh para asegurarse que se está conectando ó servidor de verdade e non cun impostor. Compara a clave pública que lle envía o equipo remoto coa clave pública do servidor; e no caso de non coincidir, alerta do erro na identificación do servidor.
+
Garántese que os datos non se alteraron durante a súa viaxe pola rede. Se un terceiro modifica os datos en tránsito o destinatario será consciente diso. SSH encárgase de verificar que os datos non se modificaron e que ademais proceden realmente do outro extremo da conexión.
 +
 
 +
== Autenticación == antes de poder iniciar unha sesión no equipo remoto compróbanse as identidades do servidor e do cliente:
 +
=== Server Authentication ===
 +
O cliente comproba a identidade do servidor ssh para asegurarse que se está conectando ó servidor de verdade e non cun impostor. Compara a clave pública que lle envía o equipo remoto coa clave pública do servidor; e no caso de non coincidir, alerta do erro na identificación do servidor.
 
  $ ssh magasix@192.168.1.254
 
  $ ssh magasix@192.168.1.254
 
<pre>
 
<pre>
Línea 39: Línea 45:
 
Fig. Erro na autenticación do equipo 192.168.1.254 ó non coincidir a clave pública desta conexión coa clave pública gardada en conexións anteriores
 
Fig. Erro na autenticación do equipo 192.168.1.254 ó non coincidir a clave pública desta conexión coa clave pública gardada en conexións anteriores
  
−
User Authentication: o servidor comproba a identidade do usuario que quere conectarse. SSH permite diferentes mecanismos de autenticación de usuarios; negociando o cliente e o servidor cal se vai a usar. Destacan os baseados en:
+
=== User Authentication ===
 +
O servidor comproba a identidade do usuario que quere conectarse. SSH permite diferentes mecanismos de autenticación de usuarios; negociando o cliente e o servidor cal se vai a usar. Destacan os baseados en:
 
Usuario-contrasinal: o usuario envía un contrasinal que é verificada polo servidor. A diferenza de telnet, en ssh tanto o envío do usuario/contrasinal como toda a sesión está cifrada.
 
Usuario-contrasinal: o usuario envía un contrasinal que é verificada polo servidor. A diferenza de telnet, en ssh tanto o envío do usuario/contrasinal como toda a sesión está cifrada.
 
Claves (keys): o servidor comproba a identidade do usuario grazas ás claves da súa identidade dixital.
 
Claves (keys): o servidor comproba a identidade do usuario grazas ás claves da súa identidade dixital.
Línea 72: Línea 79:
 
Fig. Exemplo de autenticación do usuario magasix nun equipo remoto usando a súa identidade dixital (parella de claves privada/pública)
 
Fig. Exemplo de autenticación do usuario magasix nun equipo remoto usando a súa identidade dixital (parella de claves privada/pública)
  
−
Control de acceso: é posible restrinxir os accesos aplicando controis por usuario, máquina e usuario-máquina. No seguinte exemplo, únicamente é permitido o acceso por ssh ó usuario magasix dende a máquina 192.168.56.100. De non cumprirse ambalas dúas condicións á vez, non se pode acceder por ssh como pode verse no arquivo de log:
+
== Control de acceso ==
 +
 
 +
É posible restrinxir os accesos aplicando controis por usuario, máquina e usuario-máquina.  
 +
 
 +
No seguinte exemplo, únicamente é permitido o acceso por ssh ó usuario magasix dende a máquina 192.168.56.100. De non cumprirse ambalas dúas condicións á vez, non se pode acceder por ssh como pode verse no arquivo de log:
  
 
<pre>
 
<pre>
Línea 94: Línea 105:
 
Fig. Exemplo de directiva de control de acceso en ssh
 
Fig. Exemplo de directiva de control de acceso en ssh
  
−
Execución remota e segura de comandos: aínda que o uso máis habitual de ssh é o de obter unha líña de comandos no equipo remoto, tambén ofrece a posibilidade de executar un único comando. Por exemplo:
+
== Execución remota e segura de comandos ==
 +
 
 +
Aínda que o uso máis habitual de ssh é o de obter unha líña de comandos no equipo remoto, tambén ofrece a posibilidade de executar un único comando. Por exemplo:
 
  $ ssh magasix@192.168.56.253 ethtool eth0
 
  $ ssh magasix@192.168.56.253 ethtool eth0
 
<pre>
 
<pre>
Línea 124: Línea 137:
 
Fig. Execución remota de comandos no equipo 192.168.56.253 por ssh
 
Fig. Execución remota de comandos no equipo 192.168.56.253 por ssh
  
−
Transferencia de arquivos segura: permite copiar ficheiros entre dous equipos de forma segura (autenticación e transferencia cifradas) con scp. Ademáis con ssh e sftp pódese ter un reemplazo ó servizo FTP onde todo o tráfico vai en claro.
+
== Transferencia de arquivos segura ==
 +
 
 +
Permite copiar ficheiros entre dous equipos de forma segura (autenticación e transferencia cifradas) con scp. Ademáis con ssh e sftp pódese ter un reemplazo ó servizo FTP onde todo o tráfico vai en claro.
 
  $ scp webmin_1.780_all.deb magasix@192.168.56.253:
 
  $ scp webmin_1.780_all.deb magasix@192.168.56.253:
 
<pre>
 
<pre>
Línea 136: Línea 151:
 
Fig. Exemplo de copia de arquivos de local a remoto e de remoto a local usando scp
 
Fig. Exemplo de copia de arquivos de local a remoto e de remoto a local usando scp
  
−
Tunneling (Port Forwarding): SSH permite crear conexiones cifradas entre dous equipos por onde circula tráfico procedente doutras aplicacións. Esto permitiría usar de forma segura e sen facer modificacións, protocolos non seguros por que no seu deseño orixinal non se contemplou o cifrado.
+
== ''Tunneling'' (''Port Forwarding'') ==
 +
 
 +
SSH permite crear conexiones cifradas entre dous equipos por onde circula tráfico procedente doutras aplicacións. Esto permitiría usar de forma segura e sen facer modificacións, protocolos non seguros por que no seu deseño orixinal non se contemplou o cifrado.

Revisión actual del 19:32 10 feb 2026

Introdución

O nome SSH fai referencia ó protocolo de nivel de aplicación que permite conectarse de forma remota a un equipo obtendo unha liña de comandos para a súa administración. Trátase dun protocolo baseado no modelo cliente-servidor, onde o servidor ssh escoita por defecto no porto tcp/22.

SSH emprega a criptografía para encargarse (dun xeito transparente para o usuario) das operacións necesarias para acadar as seguintes características.

Privacidade

A información que circula pola rede está protexida ó usarse técnicas de cifrado forte. Os datos son 'transformados' de forma que son entendibles unicamente polo seu lexítimo destinatario; polo tanto, aínda que un sniffer os capturase non se poderían recuperar.

Nas seguintes imaxes poden compararse as capturas dun paquete ssh e dun paquete telnet (protocolo semellante ó ssh pero que non cifra as comunicacións). No caso do telnet, os contidos dos paquetes viaxan en claro pola rede, polo que un atacante podería ver sen problema ningún a información (por exemplo o nome de usuario e contrasinal de acceso ó equipo); sen embargo, o paquete SSH ó ir cifrado o seu contido non é lexible.

Sesión telnet

Fig. Captura correspondente a unha sesión telnet.

Paquete ssh cifrado

Fig. Captura dun paquete SSH.

Integridade

Garántese que os datos non se alteraron durante a súa viaxe pola rede. Se un terceiro modifica os datos en tránsito o destinatario será consciente diso. SSH encárgase de verificar que os datos non se modificaron e que ademais proceden realmente do outro extremo da conexión.

== Autenticación == antes de poder iniciar unha sesión no equipo remoto compróbanse as identidades do servidor e do cliente:

Server Authentication

O cliente comproba a identidade do servidor ssh para asegurarse que se está conectando ó servidor de verdade e non cun impostor. Compara a clave pública que lle envía o equipo remoto coa clave pública do servidor; e no caso de non coincidir, alerta do erro na identificación do servidor.

$ ssh magasix@192.168.1.254
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
a9:c4:8c:cb:b8:0c:d3:10:e8:83:1b:4b:02:5d:3b:65.
Please contact your system administrator.
Add correct host key in /home/manuel/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/manuel/.ssh/known_hosts:1
  remove with: ssh-keygen -f "/home/manuel/.ssh/known_hosts" -R 192.168.1.254
ECDSA host key for 192.168.1.254 has changed and you have requested strict checking.
Host key verification failed.

Fig. Erro na autenticación do equipo 192.168.1.254 ó non coincidir a clave pública desta conexión coa clave pública gardada en conexións anteriores

User Authentication

O servidor comproba a identidade do usuario que quere conectarse. SSH permite diferentes mecanismos de autenticación de usuarios; negociando o cliente e o servidor cal se vai a usar. Destacan os baseados en: Usuario-contrasinal: o usuario envía un contrasinal que é verificada polo servidor. A diferenza de telnet, en ssh tanto o envío do usuario/contrasinal como toda a sesión está cifrada. Claves (keys): o servidor comproba a identidade do usuario grazas ás claves da súa identidade dixital.

$ ls -lahF .ssh
total 48K
drwx------  2 manuel manuel 4,0K feb 14 23:51 ./
drwxr-xr-x 77 manuel manuel  12K feb 20 17:12 ../
-rw-------  1 manuel manuel 3,3K dic  5 13:17 id_rsa
-rw-------  1 manuel manuel 3,2K dic  5 13:58 id_rsa_asir01
-rw-r--r--  1 manuel manuel  756 dic  5 13:58 id_rsa_asir01.pub
-rw-------  1 manuel manuel 3,3K dic  4 15:44 id_rsa_magasix
-rw-r--r--  1 manuel manuel  743 dic  4 15:44 id_rsa_magasix.pub
-rw-r--r--  1 manuel manuel  759 dic  5 13:17 id_rsa.pub
-rw-------  1 manuel manuel 2,2K feb 19 02:30 known_hosts
-rw-------  1 manuel manuel 2,0K feb 10 03:38 known_hosts.old
$ ssh -i .ssh/id_rsa magasix@192.168.56.253
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-76-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
  System information as of Sat Feb 20 18:48:14 CET 2016
  System load:  0.09              Processes:           72
  Usage of /:   7.7% of 19.07GB   Users logged in:     1
  Memory usage: 11%               IP address for eth0: 192.168.56.253               
  Swap usage:   0%
  Graph this data and manage this system at:
    https://landscape.canonical.com/
Last login: Sat Feb 20 18:48:14 2016 from 192.168.56.1

Fig. Exemplo de autenticación do usuario magasix nun equipo remoto usando a súa identidade dixital (parella de claves privada/pública)

Control de acceso

É posible restrinxir os accesos aplicando controis por usuario, máquina e usuario-máquina.

No seguinte exemplo, únicamente é permitido o acceso por ssh ó usuario magasix dende a máquina 192.168.56.100. De non cumprirse ambalas dúas condicións á vez, non se pode acceder por ssh como pode verse no arquivo de log:

/etc/ssh/sshd_config
...
AllowUsers magasix@192.168.56.100
...
$ ssh magasix@192.168.56.253
magasix@192.168.56.253's password: 
Permission denied, please try again.
magasix@192.168.56.253's password: 
Permission denied, please try again.
magasix@192.168.56.253's password: 
Received disconnect from 192.168.56.253: 2: Too many authentication failures for magasix
manuel@lubuntu:~$
Feb 20 19:24:31 server sshd[2442]: User magasix from 192.168.56.1 not allowed because not listed in AllowUsers
Feb 20 19:24:31 server sshd[2442]: input_userauth_request: invalid user magasix [preauth]
Feb 20 19:24:33 server sshd[2442]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.56.1  user=magasix

Fig. Exemplo de directiva de control de acceso en ssh

Execución remota e segura de comandos

Aínda que o uso máis habitual de ssh é o de obter unha líña de comandos no equipo remoto, tambén ofrece a posibilidade de executar un único comando. Por exemplo:

$ ssh magasix@192.168.56.253 ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes
Cannot get wake-on-lan settings: Operation not permitted                           

Fig. Execución remota de comandos no equipo 192.168.56.253 por ssh

Transferencia de arquivos segura

Permite copiar ficheiros entre dous equipos de forma segura (autenticación e transferencia cifradas) con scp. Ademáis con ssh e sftp pódese ter un reemplazo ó servizo FTP onde todo o tráfico vai en claro.

$ scp webmin_1.780_all.deb magasix@192.168.56.253:
webmin_1.780_all.deb                                     100%   27MB  26.7MB/s   00:00
$ scp magasix@192.168.56.253:/var/log/iptables.log iptables_20_02_16.log
iptables.log                                             100%  468     0.5KB/s   00:00

Fig. Exemplo de copia de arquivos de local a remoto e de remoto a local usando scp

Tunneling (Port Forwarding)

SSH permite crear conexiones cifradas entre dous equipos por onde circula tráfico procedente doutras aplicacións. Esto permitiría usar de forma segura e sen facer modificacións, protocolos non seguros por que no seu deseño orixinal non se contemplou o cifrado.