Diferencia entre revisiones de «SSH - Secure Shell»
(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 | + | == 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 | + | == Integridade == |
| − | Autenticación | + | |
| − | Server Authentication | + | 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 | + | === 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 | + | == 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 | + | == 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 | + | == 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) | + | == ''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
Sumario
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.