Administración de claves SSH y PGP en Transfer Family - AWS Transfer Family

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Administración de claves SSH y PGP en Transfer Family

En esta sección, encontrará información sobre las claves SSH, inclusive cómo generarlas y cómo rotarlas. Para obtener más información sobre el uso de Transfer Family with AWS Lambda para administrar las claves, consulte la entrada del blog Habilitar la administración de claves de autoservicio del usuario con A AWS Transfer Family y AWS Lambda.

nota

AWS Transfer Family acepta claves RSA, ECDSA y ED25519.

En esta sección también se explica cómo generar y administrar las claves Pretty Good Privacy (PGP).

Algoritmos admitidos para las claves de usuario y del servidor

Los siguientes algoritmos clave son admitidos con los pares de claves de usuario y de servidor dentro de AWS Transfer Family.

nota

Para ver los algoritmos que se pueden usar con el descifrado PGP en los flujos de trabajo, consulte Algoritmos admitidos con los pares de claves PGP.

  • Para ED25519: ssh-ed25519

  • Para RSA (Rivest, Shamir y Adleman):

    • rsa-sha2-256

    • rsa-sha2-512

  • Para ECDSA:

    • ecdsa-sha2-nistp256

    • ecdsa-sha2-nistp384

    • ecdsa-sha2-nistp521

nota

Admitimos ssh-rsa con SHA1 para nuestras políticas de seguridad más antiguas. Para obtener más detalles, consulte Algoritmos criptográficos.

Genere claves SSH para los usuarios administrados por el servicio

Puede configurar su servidor para que autentique a los usuarios aplicando el método de autenticación administrada por el servicio, con el que los nombres de usuario y las claves SSH se almacenan en el servicio. La clave pública SSH del usuario se carga en el servidor como una propiedad de usuario. El servidor utiliza esta clave como parte de un proceso de autenticación estándar basado en claves. Cada usuario puede tener varias claves SSH públicas en un mismo servidor. Para conocer los límites en la cantidad de claves que se pueden almacenar por usuario, consulte los puntos de conexión y cuotas de AWS Transfer Family en Referencia general de Amazon Web Services.

Como alternativa al método de autenticación gestionado por el servicio, puede autenticar a los usuarios mediante un proveedor de identidad personalizado, o bien. AWS Directory Service for Microsoft Active Directory Para obtener más información, consulte Uso de proveedores de identidad personalizados o Uso AWS de Directory Service para Microsoft Active Directory.

Un servidor solo puede autenticar a los usuarios mediante un método (administrado por el servicio, servicio de directorio o proveedor de identidad personalizado), y ese método no se puede cambiar una vez creado el servidor.

Creación de claves SSH en macOS, Linux o Unix

En los sistemas operativos macOS, Linux o Unix, se utiliza el comando ssh-keygen para crear una clave pública SSH y una clave privada SSH, también conocidas como par de claves.

Creación claves SSH en un sistema operativo macOS, Linux o Unix
  1. En los sistemas operativos macOS, Linux o Unix, abra una terminal de comandos.

  2. AWS Transfer Family acepta claves con formato RSA, ECDSA y ED25519. Elija el comando apropiado en función del tipo de par de claves que esté generando.

    nota

    En los ejemplos siguientes, no especificamos una frase de contraseña: en este caso, la herramienta le pide que introduzca la frase de contraseña y, a continuación, que la repita para verificarla. La creación de una frase de contraseña ofrece una mejor protección para la clave privada y, también, podría mejorar la seguridad general del sistema. No puede recuperar la frase de contraseña: si la olvida, debe crear una clave nueva.

    Sin embargo, si va a generar una clave de host de servidor, debe especificar una frase de contraseña vacía especificando la opción -N "" en el comando (o pulsando Enter dos veces cuando se le solicite), ya que los servidores de Transfer Family no pueden solicitar una contraseña al inicio.

    • Para generar un par de claves RSA de 4096 bits:

      ssh-keygen -t rsa -b 4096 -f key_name
    • Para generar un par de claves ECDSA de 521 bits (el ECDSA tiene tamaños de bits de 256, 384 y 521):

      ssh-keygen -t ecdsa -b 521 -f key_name
    • Para generar un par de claves ED25519:

      ssh-keygen -t ed25519 -f key_name
    nota

    key_name es el nombre del archivo del par de claves SSH.

    A continuación se muestra un ejemplo del resultado ssh-keygen.

    ssh-keygen -t rsa -b 4096 -f key_name Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in key_name. Your public key has been saved in key_name.pub. The key fingerprint is: SHA256:8tDDwPmanTFcEzjTwPGETVWOGW1nVz+gtCCE8hL7PrQ bob.amazon.com The key's randomart image is: +---[RSA 4096]----+ | . ....E | | . = ... | |. . . = ..o | | . o + oo = | | + = .S.= * | | . o o ..B + o | | .o.+.* . | | =o*+*. | | ..*o*+. | +----[SHA256]-----+
    nota

    Al ejecutar ssh-keygen como se ha mostrado, el comando crea las claves pública y privada como archivos en el directorio actual.

    Tu par de claves SSH ya está listo para usarse. Siga los pasos 3 y 4 para almacenar la clave pública SSH para los usuarios gestionados por el servicio. Estos usuarios utilizan las claves cuando transfieren archivos en los puntos finales del servidor Transfer Family.

  3. Desplácese hasta el archivo key_name.pub y ábralo.

  4. Copie el texto y péguelo en la clave pública SSH del usuario administrado por el servicio.

    1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/ y, a continuación, seleccione Servidores en el panel de navegación.

    2. En la página Servidores, seleccione el ID de servidor para el servidor que contiene el usuario que desea actualizar.

    3. Seleccione el usuario para el que va a añadir una clave pública.

    4. En el panel de claves públicas SSH, seleccione Añadir clave pública SSH.

      La AWS Transfer Family consola, que muestra los detalles del usuario seleccionado.
    5. Pegue el texto de la clave pública que ha generado en el cuadro de texto de la clave pública SSH y, a continuación, seleccione Añadir clave.

      La AWS Transfer Family consola, que muestra la página Añadir clave para añadir una clave pública.

      La clave nueva aparece en el panel de claves públicas SSH.

      La AWS Transfer Family consola, que muestra la clave pública recién agregada en la sección de claves públicas de SSH.

Creación de claves SSH en Microsoft Windows

Windows utiliza un formato ligeramente distinto para el par de claves SSH. La clave pública debe tener el formato PUB, mientras que la clave privada debe tener el formato PPK. En Windows, puede utilizar PuTTYgen para crear un par de claves SSH con los formatos correctos. También puede utilizar PuTTYgen para convertir una clave privada generada con ssh-keygen en un archivo .ppk.

nota

Si en WinSCP elige un archivo de clave privada que no está en formato .ppk, ese cliente le ofrecerá convertir la clave automáticamente al formato .ppk.

Para ver un tutorial sobre la creación de claves SSH con PuTTYgen en Windows, consulte el sitio web SSH.com.

Convierta una clave pública SSH2 a formato PEM

AWS Transfer Family solo acepta claves públicas con formato PEM. Si tiene una clave pública SSH2, debe convertirla. Una clave pública SSH2 tiene el siguiente formato:

---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160402" AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI : : ---- END SSH2 PUBLIC KEY ----

Una clave pública PEM tiene el siguiente formato:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...

Ejecute el siguiente comando para convertir una clave pública con formato SSH2 en una clave pública con formato PEM. Reemplace ssh2-key por el nombre de su clave SSH2, y la clave PEM por el nombre de su clave PEM.

ssh-keygen -i -f ssh2-key.pub > PEM-key.pub

Rotar claves SSH

Por seguridad, la rotación de las claves SSH es una buena práctica que recomendamos. Normalmente, la rotación se especifica como parte de una política de seguridad y se implementa con algún mecanismo automático. En función del nivel de seguridad, para comunicaciones altamente confidenciales puede que un par de claves SSH se utilice una sola vez. Esto elimina cualquier riesgo derivado del almacenamiento de las claves. Sin embargo, es mucho más habitual almacenar las credenciales SSH durante cierto periodo de tiempo y establecer un intervalo que no suponga una carga excesiva para los usuarios. Un intervalo de tres meses es habitual.

Existen dos métodos para realizar la rotación de claves SSH:

  • En la consola, puede cargar una clave pública SSH nueva y eliminar una clave pública SSH existente.

  • Con la API, puede actualizar los usuarios existentes mediante la DeleteSshPublicKeyAPI para eliminar la clave pública de Secure Shell (SSH) de un usuario y la ImportSshPublicKeyAPI para añadir una nueva clave pública de Secure Shell (SSH) a la cuenta del usuario.

Console
Cómo realizar una rotación de claves en la consola
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. Navegue a la página Servidores.

  3. Elija el identificador en la columna ID de servidor para ver la página Detalles del servidor.

  4. En Usuarios, seleccione la casilla del usuario cuya clave pública SSH quiere rotar, luego, seleccione Acciones y, a continuación, seleccione Añadir clave para ver la página Añadir clave.

    o

    Seleccione el nombre de usuario para ver la página de Detalles del usuario y, a continuación, Añadir clave pública SSH para ver la página Añadir clave.

  5. Introduzca la nueva clave pública de SSH y seleccione Añadir clave.

    importante

    El formato de la clave pública SSH depende del tipo de clave que haya generado.

    • En el caso de las claves RSA, el formato es ssh-rsa string.

    • En el caso de las claves ED25519, el formato es ssh-ed25519 string.

    • En el caso de las claves ECDSA, la clave comienza por ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 o ecdsa-sha2-nistp521, según el tamaño de la clave que haya generado. A continuación, la cadena inicial va seguida de string, de forma similar a los demás tipos de clave.

    Volverá entonces a la pantalla Detalles de usuario en cuya sección de claves SSH públicas aparecerá la nueva clave pública SSH.

  6. Seleccione las casillas de verificación situadas junto a las claves que desea eliminar y seleccione Eliminar.

  7. Confirme la operación de eliminación escribiendo la palabra delete y, a continuación, seleccione Eliminar.

API
Cómo realizar una rotación de claves mediante la API
  1. En los sistemas operativos macOS, Linux o Unix, abra una terminal de comandos.

  2. Recupere la clave SSH que desea eliminar al ingresar el siguiente comando. Para usar este comando, reemplace serverID por el ID del servidor de su servidor de Transfer Family y reemplace username por su nombre de usuario.

    aws transfer describe-user --server-id='serverID' --user-name='username'

    El comando devuelve detalles sobre el usuario. Copie el contenido del campo "SshPublicKeyId":. Tendrá que introducir este valor más tarde en este mismo procedimiento.

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. A continuación, importe una nueva clave SSH para su usuario. Cuando se le solicite, introduzca el comando siguiente. Para usar este comando, reemplace serverID por el ID del servidor de su servidor de Transfer Family, reemplace username por su nombre de usuario, y reemplace public-key por la huella digital de su clave pública nueva.

    aws transfer import-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body='public-key'

    Si el comando se ejecuta correctamente, no se muestra ningún resultado.

  4. Por último, elimine la clave anterior mediante el siguiente comando. Para usar este comando, reemplace serverID por el ID del servidor de su servidor de Transfer Family, reemplace username por su nombre de usuario, y reemplace keyID-from-step-2 por el valor de identificador de clave que copió en el paso 2 de este procedimiento

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (Opcional) Para confirmar que la clave anterior ya no existe, repita el paso 2.

Genere y administre claves PGP

Puede utilizar el descifrado de Pretty Good Privacy (PGP) con los archivos que Transfer Family procesa mediante flujos de trabajo. Para utilizar el descifrado en un paso del flujo de trabajo, proporcione una clave PGP.

El blog sobre AWS almacenamiento tiene una entrada que describe cómo descifrar archivos de forma sencilla sin escribir ningún código mediante los flujos de trabajo gestionados por Transfer Family, cifrar y descifrar archivos con PGP y. AWS Transfer Family

Generar claves PGP

El operador que utilice para generar las claves PGP dependerá del sistema operativo y de la versión del software de generación de claves que utilice.

Si utiliza Linux o Unix, utilice el instalador de paquetes para realizar la instalación de gpg. Dependiendo de su distribución de Linux, uno de los siguientes comandos debería funcionar para usted.

sudo yum install gnupg
sudo apt-get install gnupg

Para Windows o macOS, puede descargar lo que necesite desde https://gnupg.org/download/.

Después de instalar el software generador de claves PGP, ejecute gpg --full-gen-key o el comando gpg --gen-key para generar un par de claves.

nota

Si utiliza la versión 2.3.0 o posterior de GnuPG, debe ejecutar gpg --full-gen-key. Cuando se le pida el tipo de clave que desea crear, elija RSA o Elliptic Curve Cryptography (ECC, criptografía de curva elíptica). Sin embargo, si elige ECC, asegúrese de seleccionar una NIST o BrainPool para la curva elíptica. No seleccione Curve 25519.

Algoritmos admitidos con los pares de claves PGP

Admitimos los siguientes algoritmos para los pares de claves PGP:

  • RSA

  • ElGamal

  • ECC:

    • NIST

    • BrainPool

nota

No admitimos las claves CCurve25519.

Subcomandos de gpg útiles

Los siguientes son algunos subcomandos útiles para gpg:

  • gpg --help: este comando muestra las opciones disponibles y puede incluir algunos ejemplos.

  • gpg --list-keys— Este comando muestra los detalles de todos los pares de claves que ha creado.

  • gpg --fingerprint— Este comando muestra los detalles de todos los pares de claves, incluida la huella digital de cada clave.

  • gpg --export -a user-name: este comando exporta la parte de la clave pública de la clave para user-name que se utilizó cuando se generó la clave.

Administración de claves PGP

Para administrar sus claves PGP, utilice AWS Secrets Manager.

nota

Su nombre secreto incluye su ID de servidor de Transfer Family. Esto significa que ya debe haber identificado o creado un servidor antes de poder almacenar la información de su clave PGP en AWS Secrets Manager.

Si quiere usar una clave y una frase de contraseña para todos sus usuarios, puede almacenar la información del bloque de claves PGP bajo el nombre secreto aws/transfer/server-id/@pgp-default, en el que server-id es el ID de su servidor de Transfer Family. Transfer Family usa esta clave predeterminada si no hay ninguna clave que user-name coincida con el usuario que ejecuta el flujo de trabajo.

Puede crear una clave para un usuario específico. En este caso, el formato del nombre secreto esaws/transfer/server-id/user-name, donde user-name coincide con el usuario que ejecuta el flujo de trabajo de un servidor Transfer Family.

nota

Puede almacenar un máximo de 3 claves privadas PGP, por servidor de Transfer Family y por usuario.

Configuración de las claves PGP para su uso con el descifrado
  1. Según la versión de GPG que utilice, ejecute uno de los siguientes comandos para generar un key pair de claves PGP que no utilice un algoritmo de cifrado Curve 25519.

    • Si utiliza la versión 2.3.0 de GnuPG o posterior, ejecute el siguiente comando:

      gpg --full-gen-key

      Puede elegir RSA o, si elige ECC, puede elegir NIST o BrainPool para la curva elíptica. Si ejecuta gpg --gen-key en su lugar, cree un par de claves que utilice el algoritmo de cifrado ECC Curve 25519, que, actualmente, no admitimos para las claves PGP.

    • Para las versiones de GnuPG anteriores a la 2.3.0, puede usar el siguiente comando, ya que RSA es el tipo de cifrado predeterminado.

      gpg --gen-key
    importante

    Durante el proceso de generación de claves, debe proporcionar una frase de contraseña y una dirección de correo electrónico. Asegúrese de tomar nota de estos valores. Debe proporcionar la frase de contraseña cuando introduzca los detalles de la clave en AWS Secrets Manager más adelante en este procedimiento. Además, debe proporcionar la misma dirección de correo electrónico para exportar la clave privada en el siguiente paso.

  2. Ejecute el siguiente comando para exportar la clave privada. Para usar este comando, reemplace private.pgp por el nombre del archivo en el que se va a guardar el bloque de clave privada, y reemplace marymajor@example.com por la dirección de correo electrónico que utilizó al generar el par de claves.

    gpg --output private.pgp --armor --export-secret-key marymajor@example.com
  3. Se usa AWS Secrets Manager para almacenar la clave PGP.

    1. Inicie sesión AWS Management Console y abra la AWS Secrets Manager consola en https://console.aws.amazon.com/secretsmanager/.

    2. En el panel de navegación izquierdo, seleccione Secretos.

    3. En la página Secretos, seleccione Almacenar un nuevo secreto.

    4. En la página Seleccionar tipo de secreto, en Tipo de secreto, seleccione Otro tipo de secreto.

    5. En la sección de Pares clave-valor, seleccione la pestaña Clave/valor.

      • Clave: introduzca PGPPrivateKey.

        nota

        Debe introducir la cadena PGPPrivateKey con precisión: no añada espacios antes o entre los caracteres.

      • valor: pegue el texto de su clave privada en el campo valor. Puede encontrar el texto de la clave privada en el archivo (por ejemplo, private.pgp) que especificó al exportar la clave al principio de este procedimiento. La clave comienza con -----BEGIN PGP PRIVATE KEY BLOCK----- y termina con -----END PGP PRIVATE KEY BLOCK-----.

        nota

        Asegúrese de que el bloque de texto contenga solo la clave privada y que no contenga también la clave pública.

    6. Seleccione Agregar fila y en la sección Pares clave/valor, seleccione la pestaña Clave/valor.

      • Clave: introduzca PGPPassphrase.

        nota

        Debe introducir la cadena PGPPassphrase con precisión: no añada espacios antes o entre los caracteres.

      • valor: introduzca la contraseña que utilizó al generar su par de claves PGP.

      La AWS Secrets Manager consola, que muestra las claves y los valores que se introducen para gestionar las claves PGP.
      nota

      Puede agregar hasta 3 conjuntos de claves y frases de contraseña. Para añadir un segundo conjunto, añada dos filas nuevas, introduzca PGPPrivateKey2 y PGPPassphrase2 para las claves, y pegue otra clave privada y frase de contraseña. Para añadir un tercer conjunto, los valores de la clave deben ser PGPPrivateKey3 y PGPPassphrase3.

    7. Seleccione Siguiente.

    8. En la página Configurar secreto, introduzca un nombre y una descripción para el secreto.

      • Si va a crear una clave predeterminada, es decir, una clave que pueda utilizar cualquier usuario de Transfer Family, introduzca aws/transfer/server-id/@pgp-default. Reemplace server-id por el ID del servidor que contiene el flujo de trabajo que tiene un paso de descifrado.

      • Si va a crear una clave para que la utilice un usuario específico de Transfer Family, introduzca aws/transfer/server-id/user-name. Reemplace server-id por el ID del servidor que contiene el flujo de trabajo que tiene un paso de descifrado y reemplace user-name por el nombre del usuario que ejecuta el flujo de trabajo. user-name se almacena en el proveedor de identidad que utiliza el servidor de Transfer Family.

    9. Seleccione Siguiente y acepte los valores predeterminados de la página Configurar rotación. A continuación, seleccione Siguiente.

    10. En la página de Revisión, elija Guardar para crear y almacenar el secreto.

La siguiente captura de pantalla muestra los detalles del usuario marymajor para un servidor de Transfer Family específico. En este ejemplo, se muestran tres claves y sus frases de contraseñas correspondientes.

La AWS Secrets Manager consola, que muestra la página de detalles secretos con tres claves y contraseñas para un servidor y un usuario de Transfer Family.

Clientes PGP admitidos

Se probaron los siguientes clientes con Transfer Family y se pueden usar para generar claves PGP y para cifrar los archivos que se pretende descifrar con un flujo de trabajo.

  • Gpg4win + Kleopatra.

    nota

    Cuando seleccione Firmar/cifrar archivos, asegúrese de borrar la selección de Firmar como: actualmente no se admite la firma de archivos cifrados.

    Las opciones de Kleopatra para firmar y cifrar archivos. La opción Firmar como está desactivada y está seleccionada la opción Cifrar por mí.

    Si firmas el archivo cifrado e intentas subirlo a un servidor de Transfer Family con un flujo de trabajo de descifrado, recibirás el siguiente error:

    Encrypted file with signed message unsupported
  • Versiones principales de GnuPG: 2.4, 2.3, 2.2, 2.0 y 1.4.

Tenga en cuenta que es posible que otros clientes de PGP también funcionen, pero solo los clientes mencionados aquí se han probado con Transfer Family.