SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
Presentación de manejo de llaves SSH y cómo asegurarlas cuando son utilizadas por aplicaciones. 
(nivel inicial-intermedio) 
1. 01 - Validando destino 
2. 02 - Validando orígen 
3. 03 - Resumen esquema de seguridad (estándar) 
4. 04 - Uso ssh para comandos remotos 
5. 05. Automatizar mis procesos y la seguridad 
6. 06. Asegurar en destino 
7. 07. Resumen esquema de seguridad para aplicaciones 
Rodolfo Pilas @pilasguru http://pilas.guru rodolfo@pilas.guru 
. 
01 - Validando destino 
( asignando confianza en mi usuario de origen para conectar en el servidor como el usuario destino ) 
$ ssh root@104.131.165.19 
The authenticity of host '104.131.165.19 (104.131.165.19)' can't be established. 
RSA key fingerprint is f7:d1:2c:22:9c:f3:2d:2a:fc:be:9f:ec:2b:2f:e8:cd. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added '104.131.165.19' (RSA) to the list of known hosts. 
Linux techmeetupUY 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 
root@techmeetupUY:~# 
Archivo ~/.ssh/known_hosts contiene la llave publica del servidor destino y verificará el destino cada vez que volvamos a 
conectarnos. 
Si nos conectamos al mismo destino y no verifica: 
$ ssh root@104.131.165.19 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
@ 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 RSA key sent by the remote host is 
8e:8b:7e:7b:35:2d:99:92:ce:3c:77:86:33:86:8b:85. 
Please contact your system administrator. 
Add correct host key in /Users/rodolfo/.ssh/known_hosts to get rid of this 
message. 
Offending RSA key in /Users/rodolfo/.ssh/known_hosts:1280 
RSA host key for 104.131.165.19 has changed and you have requested strict 
checking. 
Host key verification failed. 
Si estamos seguros que el servidor está correcto (sabemos por qué cambiaron las llaves SSH) podemos borrar del 
~/.ssh/know_hosts la llave publica “vieja” y volver a conectar para proceder a registrar con YES la nueva clave pública del 
servidor.
02 - Validando orígen 
Map 
( asignando confianza a mi usuario origen para ingresar como el usuario destino en el servidor ) 
$ ssh-keygen -t ecdsa 
Generating public/private ecdsa key pair. 
EEnntteerr ppaasssspphhrraassee ((eemmppttyy ffoorr nnoo ppaasssspphhrraassee)):: 
EEnntteerr ssaammee ppaasssspphhrraassee aaggaaiinn:: 
Your identification has been saved in id_ecdsa. 
Your public key has been saved in id_ecdsa.pub. 
The key fingerprint is: 
e4:5b:0c:c3:51:1d:13:0c:58:b7:f6:e7:80:8e:55:d7 rodolfo@barbie 
The key's randomart image is: 
+--[ECDSA 256]---+ 
| .+++=o | 
| ... .oo .| 
| = o . E| 
| o + . + . | 
| S o o o .| 
| o + + | 
| . . . .| 
| | 
| | 
+-----------------+ 
Llave Privada: 
$ ls -l ~/.ssh/id_ecdsa 
-rw------- 1 rodolfo staff 396 Jun 9 01:14 /Users/rodolfo/.ssh/id_ecdsa 
Llave Pública: 
$ ls -l ~/.ssh/id_ecdsa.pub 
-rw-r--r-- 1 rodolfo staff 396 Jun 9 01:14 /Users/rodolfo/.ssh/id_ecdsa.pub 
Copiar la llave pública al servidor y agregarla en el home de usuario destino ~/.ssh/authorized_keys 
$ ssh-copy-id root@104.131.165.19 
root@104.131.165.19's password: 
Now try logging into the machine, with "ssh 'root@104.131.165.19", and check in: 
~/.ssh/authorized_keys 
to make sure we haven't added extra keys that you weren't expecting. 
(los servicios en la nube ya hacen esto automáticamente al crear una instancia)
03 - Resumen esquema de seguridad (estándar) 
Map 
Valido el destino cada conexión 
Se cifra el tráfico (RFC-4419) 
Mi usuario autentica con el usuario destino mediante mi llave privada 
Llave privada con seguridad discreta por permisos archivo ("lo que tengo”) 
Llave privada con seguridad alta por passphrase (“lo que se”) 
04 - Uso ssh para comandos remotos 
Map 
Aparte de login en el servidor remoto puedo ejecutar comandos desde mi sesión local: 
$ ssh root@104.131.165.19 cat /proc/cpuinfo 
processor : 0 
vendor_id : GenuineIntel 
cpu family : 6 
model : 62 
model name : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz 
stepping : 4 
microcode : 0x1 
cpu MHz : 2399.998 
cache size : 15360 KB 
fpu : yes 
fpu_exception : yes 
cpuid level : 13 
wp : yes 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up 
arch_perfmon rep_good nopl pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic 
popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt 
vnmi ept fsgsbase smep erms 
bogomips : 4799.99 
clflush size : 64 
cache_alignment : 64 
address sizes : 40 bits physical, 48 bits virtual 
power management: 
$ _ 
La salida estándar de los comandos ejecutados remotamente es mi STDOUT, los puedo entubar (pipe) 
$ ssh root@104.131.165.19 cat /proc/cpuinfo | grep "model name" 
model name : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz 
$_ 
Por lo tanto puedo empezar a hacer cosas interesantes: 
$ ssh root@104.131.165.19 "tar czf - /etc/passwd" | cat > passwd.server19.tgz 
tar: Removing leading `/' from member names 
$ _ 
$ tar tzvf passwd.server19.tgz 
-rw-r--r-- 0 root root 1027 Nov 15 00:40 etc/passwd 
$ _
05. Automatizar mis procesos y la seguridad 
Map 
Automatizar mis procesos por SSH resulta en un compromiso de seguridad: 
Quitar la passphrase -> seguridad 100% sobre archivo de llave privada 
06. Asegurar en destino (llaves sin passphrase) 
Map 
En llavero remoto tengo colección la llaves publicas: 
$ cat ~/.ssh/authorized_keys 
ecdsa-sha2-nistp256 
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOO 
ecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= 
rodolfo@origen 
Asegurar orígen: 
$ cat ~/.ssh/authorized_keys 
ffrroomm==220044..2233..1111..1122 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHA 
yNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQC 
EQvGP7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen 
Asegurar comando: 
$ cat ~/.ssh/authorized_keys 
from=204.23.11.12,ccoommmmaanndd==""//bbiinn//ttaarr cczzff -- //eettcc//ppaasswwdd"" ecdsa-sha2-nistp256 
AAAAE2VjZHNhLXNoYT 
ItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP7d6IPbR6Df 
rW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen 
$ ssh root@104.131.165.19 “ls" | cat > passwd.server19.tgz 
tar: Removing leading `/' from member names 
$ _ 
Asegurar del todo: 
$ cat ~/.ssh/authorized_keys 
ffrroomm==220044..2233..1111..1122,,ccoommmmaanndd==""//bbiinn//ttaarr cczzff -- //eettcc//ppaasswwdd””,,nnoo--ppttyy,,nnoo--aaggeenntt-- 
ffoorrwwaarrddiinngg,, 
nnoo--ppoorrtt--ffoorrwwaarrddiinngg,,nnoo--XX1111--ffoorrwwaarrddiinngg,,nnoo--uusseerr--rrcc ecdsa-sha2-nistp256 
AAAAE2VjZHNhL 
XNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP 
7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen
07. Resumen esquema de seguridad para aplicaciones 
Map 
Valido el destino cada conexión 
Se cifra el tráfico (RFC-4419) 
Mi usuario autentica con el usuario destino mediante mi llave privada 
Llave privada con seguridad discreta por permisos archivo ("lo que tengo”) 
Llave privada no tiene passphrase 
Riesgo de seguridad controlado con: 
Llave privada solo aceptada desde servidor origen específico 
Llave privada solo permitida para comando específico 
Llave privada no valida para login (ni otros usos) 
08. Un paso más 
Map 
cert-authority 
man sshd 
Security of Automated Access Management Using Secure Shell (SSH) 
NISTIR 7966 (Draft) Agosto 2014 
National Institute of Standard and Technology (NIST) 
Automation - Monitoring - Expiration 
.

Más contenido relacionado

La actualidad más candente

Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Janneth Parra
 
Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Janneth Parra
 
Instrucciones basicas de mySQL
Instrucciones basicas de mySQLInstrucciones basicas de mySQL
Instrucciones basicas de mySQLchapagarciaea
 
Ethical hacking 01
Ethical hacking 01Ethical hacking 01
Ethical hacking 01Tensor
 
2.6.montajes y accesos a medios
2.6.montajes y accesos a medios2.6.montajes y accesos a medios
2.6.montajes y accesos a mediosFernando Solis
 
Pecha kucha
Pecha kuchaPecha kucha
Pecha kuchaTerrafx9
 
Linux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversLinux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversMartin Baez
 
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...rameses
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistemaAprende Viendo
 

La actualidad más candente (20)

Codigos de terminal linux
Codigos de terminal linuxCodigos de terminal linux
Codigos de terminal linux
 
Entorno PHP
Entorno PHPEntorno PHP
Entorno PHP
 
Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7Instalar oracle 12 c on linux red hat 7
Instalar oracle 12 c on linux red hat 7
 
Instrucciones basicas de mySQL
Instrucciones basicas de mySQLInstrucciones basicas de mySQL
Instrucciones basicas de mySQL
 
Ethical hacking 01
Ethical hacking 01Ethical hacking 01
Ethical hacking 01
 
0 entorno php
0 entorno php0 entorno php
0 entorno php
 
1. system ctl
1. system ctl1. system ctl
1. system ctl
 
2.6.montajes y accesos a medios
2.6.montajes y accesos a medios2.6.montajes y accesos a medios
2.6.montajes y accesos a medios
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 
Preguntas Apache
Preguntas ApachePreguntas Apache
Preguntas Apache
 
39 o profile
39  o profile39  o profile
39 o profile
 
Mantenimiento de una computadora linux
Mantenimiento de una computadora linuxMantenimiento de una computadora linux
Mantenimiento de una computadora linux
 
Archlinux
ArchlinuxArchlinux
Archlinux
 
Pecha kucha
Pecha kuchaPecha kucha
Pecha kucha
 
Linux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversLinux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - Drivers
 
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
Montando un Servidor FreeNX en CentOS - Freenx-I - Instalación y Configuració...
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistema
 
37 reunir información del sistema
37  reunir información del sistema37  reunir información del sistema
37 reunir información del sistema
 

Similar a Administración de llaves SSH para aplicaciones

Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiTelefónica
 
El caso de la habitacion 1020
El caso de la habitacion 1020El caso de la habitacion 1020
El caso de la habitacion 1020Agustin Mattioli
 
Practica 15 21 qde cota
Practica 15  21 qde cotaPractica 15  21 qde cota
Practica 15 21 qde cotaJulio Padilla
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valeraguestf280e2
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redesguest5d7f33c
 
Configuracion https owcloud
Configuracion https owcloudConfiguracion https owcloud
Configuracion https owcloudsebastianrock
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Procedimeintos llaves compartidas ssh Linux
Procedimeintos llaves compartidas ssh LinuxProcedimeintos llaves compartidas ssh Linux
Procedimeintos llaves compartidas ssh LinuxEcatel SRL
 
Debian Lenny Asterisk
Debian Lenny AsteriskDebian Lenny Asterisk
Debian Lenny Asteriskmanzurek
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashRolando Caldas
 
Pecha kuchassh windows
Pecha kuchassh windowsPecha kuchassh windows
Pecha kuchassh windowsJavier Pérez
 
Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)Remigio Salvador Sánchez
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada bcoca
 
Mejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningMejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningAntonio Ognio
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0wcuestas
 

Similar a Administración de llaves SSH para aplicaciones (20)

OpenSSH
OpenSSHOpenSSH
OpenSSH
 
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry PiServicio VPN con OpenVPN y Latch sobre Raspberry Pi
Servicio VPN con OpenVPN y Latch sobre Raspberry Pi
 
El caso de la habitacion 1020
El caso de la habitacion 1020El caso de la habitacion 1020
El caso de la habitacion 1020
 
Practica 15 21 qde cota
Practica 15  21 qde cotaPractica 15  21 qde cota
Practica 15 21 qde cota
 
Memorias
MemoriasMemorias
Memorias
 
Lw2010 Pedro Valera
Lw2010 Pedro ValeraLw2010 Pedro Valera
Lw2010 Pedro Valera
 
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En RedesLw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
Lw2010 - Uso De La Programacion En Linux Para La Seguridad En Redes
 
Configuracion https owcloud
Configuracion https owcloudConfiguracion https owcloud
Configuracion https owcloud
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Procedimeintos llaves compartidas ssh Linux
Procedimeintos llaves compartidas ssh LinuxProcedimeintos llaves compartidas ssh Linux
Procedimeintos llaves compartidas ssh Linux
 
Debian Lenny Asterisk
Debian Lenny AsteriskDebian Lenny Asterisk
Debian Lenny Asterisk
 
PHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hashPHPVigo #17 - lightning password hash
PHPVigo #17 - lightning password hash
 
Pecha kuchassh windows
Pecha kuchassh windowsPecha kuchassh windows
Pecha kuchassh windows
 
Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)Firewall Casero con gnu/linux (Ubuntu Server 14.04)
Firewall Casero con gnu/linux (Ubuntu Server 14.04)
 
Servidor ssh oscar cortez
Servidor ssh oscar cortezServidor ssh oscar cortez
Servidor ssh oscar cortez
 
Qué es ssh
Qué es sshQué es ssh
Qué es ssh
 
Ansible administracion simplificada
Ansible   administracion simplificada Ansible   administracion simplificada
Ansible administracion simplificada
 
Mejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningMejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - Hardening
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 
Ssh
SshSsh
Ssh
 

Más de Rodolfo Pilas

Linux Containers, un enfoque práctico
Linux Containers, un enfoque prácticoLinux Containers, un enfoque práctico
Linux Containers, un enfoque prácticoRodolfo Pilas
 
Nadie entiende la nube, es un misterio
Nadie entiende la nube, es un misterioNadie entiende la nube, es un misterio
Nadie entiende la nube, es un misterioRodolfo Pilas
 
Gestion y administracion centralizada para sistemas de Cloud Computing
Gestion y administracion centralizada para sistemas de Cloud ComputingGestion y administracion centralizada para sistemas de Cloud Computing
Gestion y administracion centralizada para sistemas de Cloud ComputingRodolfo Pilas
 
OpenStack Virtualización
OpenStack VirtualizaciónOpenStack Virtualización
OpenStack VirtualizaciónRodolfo Pilas
 
Virtualizacion libre para sistemas Linux
Virtualizacion libre para sistemas LinuxVirtualizacion libre para sistemas Linux
Virtualizacion libre para sistemas LinuxRodolfo Pilas
 
Gestión de Datacenter con Software Libre
Gestión de Datacenter con Software LibreGestión de Datacenter con Software Libre
Gestión de Datacenter con Software LibreRodolfo Pilas
 
Virtualizacion con Software Libre en el camino hacia la nube
Virtualizacion con Software Libre en el camino hacia la nubeVirtualizacion con Software Libre en el camino hacia la nube
Virtualizacion con Software Libre en el camino hacia la nubeRodolfo Pilas
 
Licencias de software, esos documentos con letra menuda
Licencias de software, esos documentos con letra menudaLicencias de software, esos documentos con letra menuda
Licencias de software, esos documentos con letra menudaRodolfo Pilas
 
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)Rodolfo Pilas
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioRodolfo Pilas
 
Virtualización Libre para sistemas Linux
Virtualización Libre para sistemas LinuxVirtualización Libre para sistemas Linux
Virtualización Libre para sistemas LinuxRodolfo Pilas
 
Presentaciones Efectivas
Presentaciones EfectivasPresentaciones Efectivas
Presentaciones EfectivasRodolfo Pilas
 
Actividad Terminal (Parte II)
Actividad Terminal (Parte II)Actividad Terminal (Parte II)
Actividad Terminal (Parte II)Rodolfo Pilas
 
Actividad Terminal (Parte I)
Actividad Terminal (Parte I)Actividad Terminal (Parte I)
Actividad Terminal (Parte I)Rodolfo Pilas
 
Tecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsTecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsRodolfo Pilas
 

Más de Rodolfo Pilas (20)

Linux Containers, un enfoque práctico
Linux Containers, un enfoque prácticoLinux Containers, un enfoque práctico
Linux Containers, un enfoque práctico
 
Nadie entiende la nube, es un misterio
Nadie entiende la nube, es un misterioNadie entiende la nube, es un misterio
Nadie entiende la nube, es un misterio
 
Gestion y administracion centralizada para sistemas de Cloud Computing
Gestion y administracion centralizada para sistemas de Cloud ComputingGestion y administracion centralizada para sistemas de Cloud Computing
Gestion y administracion centralizada para sistemas de Cloud Computing
 
OpenStack Virtualización
OpenStack VirtualizaciónOpenStack Virtualización
OpenStack Virtualización
 
Virtualizacion libre para sistemas Linux
Virtualizacion libre para sistemas LinuxVirtualizacion libre para sistemas Linux
Virtualizacion libre para sistemas Linux
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 
Linux containers
Linux containersLinux containers
Linux containers
 
Gestión de Datacenter con Software Libre
Gestión de Datacenter con Software LibreGestión de Datacenter con Software Libre
Gestión de Datacenter con Software Libre
 
Virtualizacion con Software Libre en el camino hacia la nube
Virtualizacion con Software Libre en el camino hacia la nubeVirtualizacion con Software Libre en el camino hacia la nube
Virtualizacion con Software Libre en el camino hacia la nube
 
Licencias de software, esos documentos con letra menuda
Licencias de software, esos documentos con letra menudaLicencias de software, esos documentos con letra menuda
Licencias de software, esos documentos con letra menuda
 
Linux Corporativo
Linux CorporativoLinux Corporativo
Linux Corporativo
 
Sea Ud. la Nube
Sea Ud. la NubeSea Ud. la Nube
Sea Ud. la Nube
 
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)
Licencias Aplicables a Contenidos Digitales (Creative Commons en el aula)
 
Terminal II - v.2
Terminal II - v.2Terminal II - v.2
Terminal II - v.2
 
Virtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novioVirtualziación de Sistema Operativo: la niña bonita sin novio
Virtualziación de Sistema Operativo: la niña bonita sin novio
 
Virtualización Libre para sistemas Linux
Virtualización Libre para sistemas LinuxVirtualización Libre para sistemas Linux
Virtualización Libre para sistemas Linux
 
Presentaciones Efectivas
Presentaciones EfectivasPresentaciones Efectivas
Presentaciones Efectivas
 
Actividad Terminal (Parte II)
Actividad Terminal (Parte II)Actividad Terminal (Parte II)
Actividad Terminal (Parte II)
 
Actividad Terminal (Parte I)
Actividad Terminal (Parte I)Actividad Terminal (Parte I)
Actividad Terminal (Parte I)
 
Tecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNsTecnologías libres para túneles y VPNs
Tecnologías libres para túneles y VPNs
 

Administración de llaves SSH para aplicaciones

  • 1. Presentación de manejo de llaves SSH y cómo asegurarlas cuando son utilizadas por aplicaciones. (nivel inicial-intermedio) 1. 01 - Validando destino 2. 02 - Validando orígen 3. 03 - Resumen esquema de seguridad (estándar) 4. 04 - Uso ssh para comandos remotos 5. 05. Automatizar mis procesos y la seguridad 6. 06. Asegurar en destino 7. 07. Resumen esquema de seguridad para aplicaciones Rodolfo Pilas @pilasguru http://pilas.guru rodolfo@pilas.guru . 01 - Validando destino ( asignando confianza en mi usuario de origen para conectar en el servidor como el usuario destino ) $ ssh root@104.131.165.19 The authenticity of host '104.131.165.19 (104.131.165.19)' can't be established. RSA key fingerprint is f7:d1:2c:22:9c:f3:2d:2a:fc:be:9f:ec:2b:2f:e8:cd. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '104.131.165.19' (RSA) to the list of known hosts. Linux techmeetupUY 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 root@techmeetupUY:~# Archivo ~/.ssh/known_hosts contiene la llave publica del servidor destino y verificará el destino cada vez que volvamos a conectarnos. Si nos conectamos al mismo destino y no verifica: $ ssh root@104.131.165.19 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 RSA key sent by the remote host is 8e:8b:7e:7b:35:2d:99:92:ce:3c:77:86:33:86:8b:85. Please contact your system administrator. Add correct host key in /Users/rodolfo/.ssh/known_hosts to get rid of this message. Offending RSA key in /Users/rodolfo/.ssh/known_hosts:1280 RSA host key for 104.131.165.19 has changed and you have requested strict checking. Host key verification failed. Si estamos seguros que el servidor está correcto (sabemos por qué cambiaron las llaves SSH) podemos borrar del ~/.ssh/know_hosts la llave publica “vieja” y volver a conectar para proceder a registrar con YES la nueva clave pública del servidor.
  • 2. 02 - Validando orígen Map ( asignando confianza a mi usuario origen para ingresar como el usuario destino en el servidor ) $ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. EEnntteerr ppaasssspphhrraassee ((eemmppttyy ffoorr nnoo ppaasssspphhrraassee)):: EEnntteerr ssaammee ppaasssspphhrraassee aaggaaiinn:: Your identification has been saved in id_ecdsa. Your public key has been saved in id_ecdsa.pub. The key fingerprint is: e4:5b:0c:c3:51:1d:13:0c:58:b7:f6:e7:80:8e:55:d7 rodolfo@barbie The key's randomart image is: +--[ECDSA 256]---+ | .+++=o | | ... .oo .| | = o . E| | o + . + . | | S o o o .| | o + + | | . . . .| | | | | +-----------------+ Llave Privada: $ ls -l ~/.ssh/id_ecdsa -rw------- 1 rodolfo staff 396 Jun 9 01:14 /Users/rodolfo/.ssh/id_ecdsa Llave Pública: $ ls -l ~/.ssh/id_ecdsa.pub -rw-r--r-- 1 rodolfo staff 396 Jun 9 01:14 /Users/rodolfo/.ssh/id_ecdsa.pub Copiar la llave pública al servidor y agregarla en el home de usuario destino ~/.ssh/authorized_keys $ ssh-copy-id root@104.131.165.19 root@104.131.165.19's password: Now try logging into the machine, with "ssh 'root@104.131.165.19", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. (los servicios en la nube ya hacen esto automáticamente al crear una instancia)
  • 3. 03 - Resumen esquema de seguridad (estándar) Map Valido el destino cada conexión Se cifra el tráfico (RFC-4419) Mi usuario autentica con el usuario destino mediante mi llave privada Llave privada con seguridad discreta por permisos archivo ("lo que tengo”) Llave privada con seguridad alta por passphrase (“lo que se”) 04 - Uso ssh para comandos remotos Map Aparte de login en el servidor remoto puedo ejecutar comandos desde mi sesión local: $ ssh root@104.131.165.19 cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz stepping : 4 microcode : 0x1 cpu MHz : 2399.998 cache size : 15360 KB fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon rep_good nopl pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm xsaveopt vnmi ept fsgsbase smep erms bogomips : 4799.99 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: $ _ La salida estándar de los comandos ejecutados remotamente es mi STDOUT, los puedo entubar (pipe) $ ssh root@104.131.165.19 cat /proc/cpuinfo | grep "model name" model name : Intel(R) Xeon(R) CPU E5-2630L v2 @ 2.40GHz $_ Por lo tanto puedo empezar a hacer cosas interesantes: $ ssh root@104.131.165.19 "tar czf - /etc/passwd" | cat > passwd.server19.tgz tar: Removing leading `/' from member names $ _ $ tar tzvf passwd.server19.tgz -rw-r--r-- 0 root root 1027 Nov 15 00:40 etc/passwd $ _
  • 4. 05. Automatizar mis procesos y la seguridad Map Automatizar mis procesos por SSH resulta en un compromiso de seguridad: Quitar la passphrase -> seguridad 100% sobre archivo de llave privada 06. Asegurar en destino (llaves sin passphrase) Map En llavero remoto tengo colección la llaves publicas: $ cat ~/.ssh/authorized_keys ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOO ecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen Asegurar orígen: $ cat ~/.ssh/authorized_keys ffrroomm==220044..2233..1111..1122 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHA yNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQC EQvGP7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen Asegurar comando: $ cat ~/.ssh/authorized_keys from=204.23.11.12,ccoommmmaanndd==""//bbiinn//ttaarr cczzff -- //eettcc//ppaasswwdd"" ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYT ItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP7d6IPbR6Df rW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen $ ssh root@104.131.165.19 “ls" | cat > passwd.server19.tgz tar: Removing leading `/' from member names $ _ Asegurar del todo: $ cat ~/.ssh/authorized_keys ffrroomm==220044..2233..1111..1122,,ccoommmmaanndd==""//bbiinn//ttaarr cczzff -- //eettcc//ppaasswwdd””,,nnoo--ppttyy,,nnoo--aaggeenntt-- ffoorrwwaarrddiinngg,, nnoo--ppoorrtt--ffoorrwwaarrddiinngg,,nnoo--XX1111--ffoorrwwaarrddiinngg,,nnoo--uusseerr--rrcc ecdsa-sha2-nistp256 AAAAE2VjZHNhL XNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDFI8yIG6zkMj4BOOecxZYS4p5Mp7Ozjtd1lo8bgAQCEQvGP 7d6IPbR6DfrW8tcwCdd1UUYhFhfdFSyLwir8+8E= rodolfo@origen
  • 5. 07. Resumen esquema de seguridad para aplicaciones Map Valido el destino cada conexión Se cifra el tráfico (RFC-4419) Mi usuario autentica con el usuario destino mediante mi llave privada Llave privada con seguridad discreta por permisos archivo ("lo que tengo”) Llave privada no tiene passphrase Riesgo de seguridad controlado con: Llave privada solo aceptada desde servidor origen específico Llave privada solo permitida para comando específico Llave privada no valida para login (ni otros usos) 08. Un paso más Map cert-authority man sshd Security of Automated Access Management Using Secure Shell (SSH) NISTIR 7966 (Draft) Agosto 2014 National Institute of Standard and Technology (NIST) Automation - Monitoring - Expiration .