¡Esta es una revisión vieja del documento!
Tabla de Contenidos
110.3 Securing data with encryption
Pertenece a Topic 110: Security
- Weight: 4
- Description: The candidate should be able to use public key techniques to secure data and communication.
- Key Knowledge Areas:
- Perform basic OpenSSH 2 client configuration and usage.
- Understand the role of OpenSSH 2 server host keys.
- Perform basic GnuPG configuration, usage and revocation.
- Use GPG to encrypt, decrypt, sign and verify files.
- Understand SSH port tunnels (including X11 tunnels).
- The following is a partial list of the used files, terms and utilities:
sshssh-keygenssh-agentssh-add~/.ssh/id_rsaandid_rsa.pub~/.ssh/id_dsaandid_dsa.pub~/.ssh/id_ecdsaandid_ecdsa.pub~/.ssh/id_ed25519andid_ed25519.pub/etc/ssh/ssh_host_rsa_keyandssh_host_rsa_key.pub/etc/ssh/ssh_host_dsa_keyandssh_host_dsa_key.pub/etc/ssh/ssh_host_ecdsa_keyandssh_host_ecdsa_key.pub/etc/ssh/ssh_host_ed25519_keyandssh_host_ed25519_key.pub~/.ssh/authorized_keysssh_known_hostsgpggpg-agent~/.gnupg/
SSH
Linux soporta el acceso remoto a través de varios servidores diferentes, incluyendo Telnet, VNC, e incluso X. Desafortunadamente, la mayoría de estos métodos sufren de un inconveniente importante: la transferencia de todos los datos a través de la red es no cifrada.
Esto significa que cualquiera que pueda monitorear el tráfico de red puede arrebatar fácilmente datos sensibles, como las contraseñas. Esto limita la utilidad de estos inicios de sesión remoto, si ponemos en peligro la seguridad del sistema.
SSH es la respuesta a esos problemas al realizar conexiones cifradas. SSH permite canalizar a través de su túneles otros servicios y protocolos para asegurarlos.
Servidor OpenSSH
En Debian, si instalamos el paquete ssh tendremos tanto el cliente como el servidor.
Configuración del servidor: /etc/ssh/sshd_config
Directivas importantes:
Protocol: Los valores posibles son 1 y 2Port: Numero de puerto en el cual se levanta el servicio. Por defecto es el puerto “22”PermitRootLogin: si esta opción se establece enyes, permite a OpenSSH aceptar conexiones directas por parte de root.X11Forwarding: Si se desea permitir que los usuarios remotos para ejecutar programas X a través de SSH, debe establecer esta opción ayes.
Tras realizar cambios en el fichero de configuración del servicio SSH, debemos reiniciarlo:
- SysV:
/etc/init.d/sshd restartoservice sshd restart - Systemd:
systemctl restart ssh.service
Cliente SSH
Aparte del servicio OpenSSH, también tenemos el cliente para conectarnos.
Sintaxis:
ssh usuario:contraseña@<host>
El usuario es de la máquina remota, no de la local. Si no lo indicamos, intentará conectarse con el usuario actual, pero si no existe en la máquina remota, dará error.
Podemos especificar a qué puerto nos conectamos:
ssh -p 2222 <host>
Podemos hacer túneles para redirigir puertos:
ssh -L 80:<host_remoto>:80 <host>
Por ejemplo:
ssh -L 80:192.168.0.10:80 usuario@serverssh
Con el comando anterior nos conectaríamos al puerto 80 del host_remoto a través de la conexión SSH con host y la conexión quedaría establecida en el puerto 80 de nuestro equipo local.
Podemos ejecutar comandos en máquinas remotas:
ssh <host_remoto> comando
SCP
SCP es la implementacion segura de FTP, a través de SSH. Nos permite enviar o descargar ficheros a una máquina remota a través de una conexión ssh
- Descargar:
scp user:pass@host_remoto:/ruta/file /ruta/file - Enviar:
scp /ruta/file user:pass@host_remoto:/ruta/file
No es recomendable indicar la contraseña en el propio comando. Lo ideal es no escribirla y que luego nos la pregunte el sistema.
scp tempwin@192.168.1.10:/home/tempwin/fichero.txt .
ssh-keygen
Nos permite generar una key, haciendo posible una conexión automática sin necesidad de introducir un contraseña:
$ssh-keygen -t rsa
Dicho comando genera un par de claves (pública y privada) dentro del directorio $HOME/.ssh del usuario donde se ejecutó.
El comando anterior también nos pregunta si queremos introducir una contraseña para asegurar la clave
Debemos copiar la clave pública (contenido de id_rsa.pub) dentro del fichero $HOME/.ssh/authorized_keys de la maquina remota.
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_user>@<remote_host>
Así nos conectamos al servidor sin necesidad de introducir la contraseña, lo cual no solo es cómodo para el humano sino muy útil para los scripts.
GPG
GPG (Gnu Privacy Guard) es un clon libre de PGP (Pretty Good Privacy). Implementa los algoritmos de cifrado RSA y DSA. PGP es objeto de una norma que GPG respeta. Esto significa que las dos implementaciones son compatibles: las llaves generadas por el uno o el otro se pueden intercambiar. El objetivo de GPG es cifrar una comunicación gracias a un cifrado por claves asimétricas. Una clave permite firmar el texto, otra clave sirve para encriptar el texto. 110.3: Seguridad en los datos y encriptación (Peso 3) GPG El cifrado por claves asimétricas utiliza dos claves, una pública y otra privada: clave pública: difundida públicamente, permite al destinatario descifrar el mensaje que usted ha firmado (con la clave privada). clave privada: le permite firmar un mensaje. La persona que lo recibe comprueba su firma con la ayuda de la clave pública que usted le ha proporcionado, demostrando así que usted es realmente el autor del mensaje. 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves gpg –gen-key GPG empieza con crear, si no existen ya, el directorio raíz de GPG propio de cada usuario ($HOME/.gnupg) y los ficheros que contendrán los elementos gestionados por gpg. 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves seb@slyserver:~> gpg –gen-key gpg (GnuPG) 2.0.9; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: directorio ’/home/seb/.gnupg’ creado gpg: nuevo fichero de configuración ’/home/seb/.gnupg/gpg.conf’ creado gpg: ADVERTENCIA: las opciones de ’/home/seb/.gnupg/gpg.conf’ aún no están activas esta vez gpg: la clave ’/home/seb/.gnupg/secring.gpg’ ha sido creada gpg: la clave ’/home/seb/.gnupg/pubring.gpg’ ha sido creada Luego seleccionamos el tipo de clave deseada y el cifrado: Seleccione el tipo de clave deseado: (1) DSA y Elgamal (por defecto) (2) DSA (firma sola) (5) RSA (firma sola) ¿Su eleccion? 1 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves Luego debe elegir el tamaño, en bits, de la clave que hay que generar. Cuánto más larga es la clave, más complejo es el cifrado. Se puede elegir una clave de 1024 bits por ejemplo: El par de claves DSA dará 1024 bits. las claves ELG pueden tener entre 1024 y 4096 bits de longitud. ¿Qué tamaño de clave desea? (2048) 1024 El tamaño pedido es 1024 bits Posteriormente hay que indicar la duración de las claves. 0 para duración infinita: Especifique cuánto tiempo debería ser válida esta clave. 0 = la clave no expira <n> = la clave expira en n días <n>w = la clave expira en n semanas <n>m = la clave expira en n meses <n>y = la clave expira en n años ¿La clave es válida para? (0) La clave no expira. ¿Es correcto? (s/N) s 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves Luego habrá que añadir una serie de datos como nombre, email, etc. El email es importante porque va a ser el identificador que utilicemos para utilizar las claves Necesita un nombre de usuario para identificar su clave, el programa lo construye a partir del nombre real, de un comentario y de una dirección de email, de la manera siguiente: «Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de» Nombre real: Quique Castillo Dirección de e-mail: enriquecastillosb@gmail.com Comentario: Big Man Usted utiliza el juego de caracteres ’utf-8’. Ha seleccionado este nombre de usuario: “Quique Castillo (Big Man) enriquecastillosb@gmail.com” Cambiar el (N)ombre, el (C)omentario, el (E)-mail o (O)K/(S)alir ? O 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves La passphrase se pedirá esta frase a cada envío o recepción de mensaje privado encriptado. También asegura, al menos mientras no la encuentren, una cierta seguridad de la clave privada, incluso si la roban, ya que esta clave no se puede utilizar sin esta passphrase Necesita una frase de contraseña para proteger su clave secreta. Inserte la frase de contraseña: Repita la frase de contraseña: 110.3: Seguridad en los datos y encriptación (Peso 3) GPG – Generar claves Se debe generar un gran número de bytes aleatorios. Tendría que hacer otra cosa (teclear, mover el ratón, utilizar discos) durante la generación de los primeros números. Eso da al generador de nombres aleatorios más oportunidad de tener bastante entropía. Lo recomendable es generar las claves en una máquina con entorno gráfico o puede tardar muchísimo gpg: clave 13E021A8 marcada como si tuviera una confianza última. se ha creado y firmado las claves pública y secreta. gpg: comprobar la base de confianza gpg: 3 marginale(s) necesarias, 1 completa(s) necesarias, modelo de confianza PGP gpg: profundidad: 0 válida: 1 firmado: 0 confianza: 0-. 0g. 0n. 0m. 0f. 1u pub 1024D/13E021A8 2009-05-04 Huella de la clave = 6115 DE46 2678 40AB 0AB2 B8B9 1F12 D427 13E0 21A8 uid Quique Castillo (Big Man) enriquecastillosb@gmail.com sub 1024g/BA311C5C 2009-05-04
GPG – Generar claves Las últimas cuatro líneas resumen toda la información relativa al trabajo efectuado por GPG: pub: clave de firma huella: es el «fingerprint» que permite determinar la validez de la clave pública, un poco como la suma md5 de cualquier fichero. Es casi imposible (pero no del todo), que claves de gran tamaño tengan una huella idéntica. uid: información nominativa (nombre, comentario o alias/seudo, dirección email). sub: clave de cifrado 110.3: Seguridad en los datos y encriptación (Peso 3) GPG gpg (-k) –list-key: lista las claves generadas por GPG gpg –list-sigs: lista de la firmas con sus claves gpg –keyserver <server> –recv-keys <ID>: importar la clave desde un servidor gpg –keyserver <server> –send-keys : exportar su clave pública hacia un servidor de claves GPG pgp.mit.edu → key server del MIT gpg –gen-revoke alias → Revocar la clave 110.3: Seguridad en los datos y encriptación (Peso 3) GPG - encriptación Exportar la clave pública: gpg –output [archivo destino] –armor –export [ID clave pública] Importar una clave pública: gpg –import XXX.gpg 110.3: Seguridad en los datos y encriptación (Peso 3) GPG - encriptación Cifrado simétrico → gpg -c file Para cifrar con clave publica: gpg –output (-o) encrypted-file –recipient (-r) uid –armor (-a) –encrypt (-e) original-file –armor → utilizar formato ASCII Descifrar: gpg –decrypt (-d) XXX.gpg 110.3: Seguridad en los datos y encriptación (Peso 3) GPG - firma Firmar con clave privada gpg -u ID –sign file Para verificar: gpg –verify file
