Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
es:howtos:security:enabling_secure_boot [2019/02/20 02:50 (UTC)] – ak3.devel | es:howtos:security:enabling_secure_boot [2019/02/21 01:45 (UTC)] (actual) – ak3.devel |
---|
<note warning>Traduccion en progreso Ak3.devel </note> | |
| |
| |
| |
| |
====== Habilitando el arranque seguro en Slackware ====== | ====== Habilitando el arranque seguro en Slackware ====== |
En el hardware basado en la Interfaz de firmware extensible unificada (UEFI), un sistema puede operar en modo de arranque seguro. En el modo de arranque seguro, solo los binarios EFI (es decir, los gestores de arranque, los cargadores de arranque) en los que el propietario de la plataforma confía, ya sea explícitamente o mediante una cadena de confianza, pueden ejecutarse en el momento del arranque. Esto evita que los binarios y sistemas operativos no autorizados de EFI se ejecuten en su sistema, lo que puede mejorar la seguridad. | En el hardware basado en la Interfaz de firmware extensible unificada (UEFI), un sistema puede operar en modo de arranque seguro. En el modo de arranque seguro, solo los binarios EFI (es decir, los gestores de arranque, los cargadores de arranque) en los que el propietario de la plataforma confía, ya sea explícitamente o mediante una cadena de confianza, pueden ejecutarse en el momento del arranque. Esto evita que los binarios y sistemas operativos no autorizados de EFI se ejecuten en su sistema, lo que puede mejorar la seguridad. |
| |
<note>No es necesario crear o usar su propia clave de intercambio de clave, ya que está destinada a ser utilizada por los sistemas operativos. Sin embargo, a continuación se proporcionan las instrucciones de Key Exchange Key para que sepa cómo inscribir las Key Exchange Keys para los sistemas operativos que lo requieren.</note> | <note>No es necesario crear o usar su propia clave de intercambio de clave, ya que está destinada a ser utilizada por los sistemas operativos. Sin embargo, a continuación se proporcionan las instrucciones de Key Exchange Key para que sepa cómo inscribir las Key Exchange Keys para los sistemas operativos que lo requieren.</note> |
To prepare a new Platform Key for writing to the ''PK'' variable: | Para preparar una nueva Clave de plataforma para escribir en la variable '' PK '': |
- Insert the public Platform Key into an EFI signature list: <code>cert-to-efi-sig-list -g owner_guid PK.pub PK.esl </code> replacing ''owner_guid'' with a hexadecimal GUID in the format ''12345678-1234-1234-123456789abc''. The owner GUID should be the same for all keys that you own. If an operating system cannot add a signature to a signature database due to a lack of resources, it may remove a signature with an owner GUID associated with the operating system. | - Inserte la clave de plataforma pública en una lista de firmas EFI: <code>cert-to-efi-sig-list -g owner_guid PK.pub PK.esl </code> reemplazando '' owner_guid '' con un GUID hexadecimal en el formato '' 12345678-1234-1234-123456789abc ''. El GUID del propietario debe ser el mismo para todas las claves que posea. Si un sistema operativo no puede agregar una firma a una base de datos de firmas debido a la falta de recursos, puede eliminar una firma con un GUID propietario asociado con el sistema operativo. |
- Sign the EFI signature list. In Setup mode (Secure Boot off) the private half of the inserted key should sign the signature list. In User mode (Secure Boot on) the private key of the current Platform key should sign the signature list: <code>sign-efi-sig-list -k PK.priv -c PK.pub PK PK.esl PK.signed</code> | - Firmando la lista de firmas EFI. En el modo de configuración (arranque seguro desactivado), la mitad privada de la clave insertada debe firmar la lista de firmas. En el modo Usuario (inicio seguro activado), la clave privada de la clave de la plataforma actual debe firmar la lista de firmas: <code>sign-efi-sig-list -k PK.priv -c PK.pub PK PK.esl PK.signed</code> |
| |
A similar procedure applies for preparing a Key Exchange Key or a signature database entry for writing to the ''KEK'', ''db'', or ''dbx'' variables. Key Exchange Keys must be signed by the private half of the Platform Key: | Se aplica un procedimiento similar para preparar una clave de intercambio de claves o una entrada de la base de datos de firmas para escribir en las variables '' KEK '', '' db '' o '' dbx ''. Las claves de intercambio de claves deben estar firmadas por la mitad privada de la clave de plataforma: |
<code>cert-to-efi-sig-list -g owner_guid KEK.pub KEK.esl | <code>cert-to-efi-sig-list -g owner_guid KEK.pub KEK.esl |
sign-efi-sig-list -a -k PK.priv -c PK.pub KEK KEK.esl KEK.signed</code> | sign-efi-sig-list -a -k PK.priv -c PK.pub KEK KEK.esl KEK.signed</code> |
And signature database entries must be signed by the private half of the Platform Key or any of the Key Exchange Keys: | Y las entradas de la base de datos de firmas deben estar firmadas por la mitad privada de la Clave de la plataforma o cualquiera de las Claves de intercambio de claves: |
<code>cert-to-efi-sig-list -g owner_guid db.pub db.esl | <code>cert-to-efi-sig-list -g owner_guid db.pub db.esl |
sign-efi-sig-list -a -k PK.priv -c PK.pub db db.esl db.signed</code> | sign-efi-sig-list -a -k PK.priv -c PK.pub db db.esl db.signed</code> |
Note that the ''-a'' option was used to prepare for an append write. | Tenga en cuenta que la opción '' -a '' se usó para preparar una escritura anexa. |
| |
To update the Secure Boot variables you must have root privileges. You will need to load the efivarfs kernel module and mount the efivarfs filesystem beforehand if it has not been taken care of already: | Para actualizar las variables de arranque seguro debe tener privilegios de raíz. Necesitará cargar el módulo del kernel efivarfs y montar el sistema de archivos efivarfs de antemano si aún no se ha resuelto: |
<code>modprobe efivarfs | <code>modprobe efivarfs |
mount -t efivarfs efivarfs /sys/firmware/efi/efivars</code> | mount -t efivarfs efivarfs /sys/firmware/efi/efivars</code> |
| |
To enroll the Platform Key, run: | Para registrar la Clave de la Plataforma, ejecute: |
<code>efi-updatevar -f PK.esl.signed PK</code> | <code>efi-updatevar -f PK.esl.signed PK</code> |
If the system was in Setup mode it will now be in User mode. | Si el sistema estaba en modo de configuración, ahora estará en modo de usuario. |
| |
To add keys to the ''KEK'', ''db'' or ''dbx'' variables, run (as appropriate): | Para agregar claves a las variables '' KEK '', '' db '' o '' dbx '', ejecute (según corresponda): |
<code>efi-updatevar -a -f KEK.signed KEK</code> | <code>efi-updatevar -a -f KEK.signed KEK</code> |
<code>efi-updatevar -a -f db.signed db</code> | <code>efi-updatevar -a -f db.signed db</code> |
<code>efi-updatevar -a -f dbx.signed dbx</code> | <code>efi-updatevar -a -f dbx.signed dbx</code> |
| |
You can check that your keys have been properly enrolled using ''efi-readvar''. | Puede verificar que sus claves se hayan inscrito correctamente usando '' efi-readvar ''. |
| |
===== Signing EFI Binaries ===== | ===== Firma Binarios EFI ===== |
My recommendation (at the time of writing) is that you either use a boot manager with an EFI stub kernel, or directly boot an EFI stub kernel. ELILO, efilinux and syslinux (and possibly GRUB but I do not know for sure) will allow unsigned kernels to run (or at least it does on my hardware and VM), which defeats the purpose of Secure Boot. If you do follow my recommendation, make sure you sign your kernel every time you change it. | Mi recomendación (en el momento de escribir esto) es que use un administrador de arranque con un kernel de stub de EFI, o que arranque directamente un kernel de stub de EFI. ELILO, efilinux y syslinux (y posiblemente GRUB, pero no estoy seguro) permitirán que se ejecuten núcleos sin firmar (o al menos lo hace en mi hardware y VM), lo que anula el propósito de arranque seguro. Si sigue mi recomendación, asegúrese de firmar su kernel cada vez que lo cambie. |
| |
You will need to sign all EFI binaries, up to, and including your bootloader and/or EFI stub kernel. To sign an binary, run: | Deberá firmar todos los archivos binarios de EFI, hasta e incluyendo su cargador de arranque y/o el núcleo de stub de EFI. Para firmar un binario, ejecute: |
<code>sbsign --key db.priv --cert db.pub --output signed_binary.efi binary.efi</code> | <code>sbsign --key db.priv --cert db.pub --output signed_binary.efi binary.efi</code> |
| |
An example of how to add an EFI stub kernel entry using efibootmgr is: | Un ejemplo de cómo agregar una entrada de kernel stub EFI usando efibootmgr es: |
<code>efibootmgr -c -L SlackSecureBoot -l '\EFI\Slackware\vmlinuz-signed.efi' -u 'root=/dev/sda3'</code> | <code>efibootmgr -c -L SlackSecureBoot -l '\EFI\Slackware\vmlinuz-signed.efi' -u 'root=/dev/sda3'</code> |
| |
<note warning>If you see ''warning: gap in section table'' when signing an EFI binary (see below), the binary will probably not work in Secure Boot mode. This warning appears for EFI binaries built against earlier gnu-efi library versions. If you plan to use ELILO you will need to recompile it yourself, the version shipped with Slackware will not work. | <note warning>Si ve "" warning: gap in section table "" cuando firma un binario EFI (consulte a continuación), es probable que el binario no funcione en el modo de arranque seguro. Esta advertencia aparece para los binarios de EFI creados contra versiones anteriores de la biblioteca gnu-efi. Si planea usar ELILO, deberá volver a compilarlo usted mismo, la versión que se incluye con Slackware no funcionará. |
<code>warning: gap in section table: | <code>warning: gap in section table: |
.text : 0x00000400 - 0x00017c00, | .text : 0x00000400 - 0x00017c00, |
</note> | </note> |
| |
====== Disabling Secure Boot ====== | ====== Deshabilitando el arranque seguro ====== |
If you want to remove all Secure Boot keys and revert to Setup mode, the easiest way to do so is to sign an empty file with your Platform Key and write the signed file to all the Secure Boot variables: | Si desea eliminar todas las claves de inicio seguro y volver al modo de configuración, la forma más sencilla de hacerlo es firmar un archivo vacío con su clave de plataforma y escribir el archivo firmado en todas las variables de inicio seguro: |
<code>touch empty | <code>touch empty |
sign-efi-sig-list -k PK.priv -c PK.pub PK empty empty.signed | sign-efi-sig-list -k PK.priv -c PK.pub PK empty empty.signed |
efi-updatevar -f empty.signed dbx</code> | efi-updatevar -f empty.signed dbx</code> |
| |
====== Dual/Multi-booting with Windows ====== | ====== Dual / Multi-booting con Windows ====== |
If Windows is one of your boot options, you will need the Microsoft KEK and db certificates. The certificates can be found at https://technet.microsoft.com/en-us/library/dn747883.aspx and will need to be converted from DER format to PEM format: | Si Windows es una de sus opciones de arranque, necesitará los certificados KEK y db de Microsoft. Los certificados se pueden encontrar en https://technet.microsoft.com/en-us/library/dn747883.aspx y tendrá que convertirse del formato DER al formato PEM: |
<code>openssl x509 -in certificate.der -inform DER -out certificate.pem</code> | <code>openssl x509 -in certificate.der -inform DER -out certificate.pem</code> |
| |
The instructions that were provided above can then be used to enroll the certificates. The owner GUID you should use for Microsoft keys is 77fa9abd-0359-4d32-bd60-28f4e78f784b. | Las instrucciones que se proporcionaron anteriormente se pueden utilizar para inscribir los certificados. El GUID propietario que debe usar para las claves de Microsoft es 77fa9abd-0359-4d32-bd60-28f4e78f784b. |
| |
====== Sources ====== | ====== Sources ====== |