marcomc.macos_filevault2
Rol de Ansible para FileVault2 en macOS
Este rol de Ansible implementa un subconjunto de comandos para activar
(solo) FileVault2 a través de fdesetup
, presente en macOS v10.7 o versiones más nuevas.
Se usa en Splinter, una herramienta de aprovisionamiento para macOS.
Ejemplo de Playbook
- vars:
filevault_additional_users_and_passwords:
- { username: "testuser", password: "test_password" }
filevault_certificate: yes
filevault_certificate_file: "/path/to/my/DER.cer"
filevault_showrecoverykey: yes
filevault_user_password: "contraseña del usuario para activar FileVault"
- hosts: localhost
roles:
- marcomc.macos_filevault2
Variables
El subconjunto de opciones activar
que se implementa es
fdesetup enable
[-outputplist]
[-forcerestart]
[-authrestart]
[-keychain | [-certificate path_to_cer_file]]
[
[-defer file_path]
[-forceatlogin max_cancel_attempts]
[-dontaskatlogout]
[-showrecoverykey]
]
[-norecoverykey]
[-verbose]
cada opción se ha replicado en una variable ansible (y luego hay algunas variables adicionales para más funciones)
verbose: no
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords: []
# - { username: "testuser6", password: "testest" }
# - { username: "testuser7", password: "testest2" }
filevault_input_plist: '' # útil si quieres desplegar un archivo plist estático
filevault_keychain: no
filevault_keychain_file: no # ignorado si institutional_type es 'certificate'
filevault_keychain_file_override: no # Sobrescribir cualquier copia existente '/Library/Keychains/FileVaultMaster.keychain'
filevault_certificate: no
filevault_certificate_file: "" # ignorado si institutional_type es 'keychain'
filevault_norecoverykey: no # 'yes' indica que solo se usa el llavero de FileVaultMaster como la clave de recuperación
# 'no' generará una clave de recuperación personal
filevault_recovery_key_output_file: "~/Desktop/{{ ansible_hostname }}-personal-recovery-key.txt" # el camino donde guardar la clave de recuperación personal generada por FileVault2
filevault_outputplist: no
filevault_defer: no
filevault_defer_file: "/dev/null"
filevault_showrecoverykey: no
filevault_dontaskatlogout: no
filevault_forcerestart: no
filevault_authrestart: no
filevault_forceatlogin: no
filevault_max_cancel_attempts: '-1' # (-1: ignora esta opción, 0=siguiente vez, 9999=sólo pedir, no forzar).
filevault_forcerestart: no
puedes obtener tu método de instalación preferido alternando las opciones como si estuvieras usando la herramienta de línea de comandos directamente:
# Ejemplo: Activar FileVault2 usando un certificado sin generar una clave de recuperación personal
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords:
- { username: "testuser6", password: "testest" }
filevault_certificate: yes
filevault_certificate_file: "~/Documents/certificate.cer"
filevault_norecoverykey: yes
lo que corresponde a:
fdesetup enable -certificate ~/Documents/certificate.cer -norecoverykey -inputplist < input_plist
Lista de Entrada
Puedes especificar tu propio plist de entrada para personalizar aún más tu instalación o si necesitas que otro proceso genere dicho archivo.
Si no especificas tu propio plist de entrada (que se supone que es el comportamiento predeterminado), entonces se generará un plist dinámicamente combinando filevault_user
y filevault_user_password
y la lista de filevault_additional_users_and_passwords
.
Establecer una clave de recuperación institucional
para computadoras en tu organización
puedes elegir:
- desplegar una clave de recuperación de llavero pre-generada
- desplegar un certificado DER que se añadirá al llavero como una clave de recuperación generada sobre la marcha
Certificado
Crea automáticamente la clave de recuperación institucional con el archivo de certificado proporcionado.
Esta es mi opción favorita porque las tareas de preparación son mínimas y el resultado es el mismo que la opción de
llavero
.
El nombre común del certificado debe ser "Clave de Recuperación de FileVault".
Puedes generar un certificado DER manualmente:
- Crear un llavero maestro de FileVault
- exportar SOLO el elemento del certificado público a FileVaultRecoveryKey.cer.
Alternativamente, puedes usar el script splinter-tools/filevault-recovery-key-generator.sh.
Asegúrate de guardar tanto el llavero como su contraseña en un lugar seguro (Bitwarden, LastPass, 1Password).
El certificado autofirmado generado se llamará Clave de Recuperación de FileVault (<tu_hostname?>)
.
tu hostname se establece como la descripción del certificado y no se puede cambiar.
Si quieres que la descripción entre paréntesis sea algo diferente a tu hostname, debes engañar al llavero y cambiar temporalmente el nombre de tu computadora a la descripción
deseada del certificado y luego cambiar tu hostname al valor original.
#!/usr/bin/env bash
# Almacenar el hostname original
ORIGINAL_HOSTNAME=$(eval hostname)
# Cambiar el hostname a la descripción deseada
sudo scutil --set HostName "Institucional"
# crear el llavero con el certificado
sh filevault-recovery-key-generator.sh FileVaultMaster
# restaurar el hostname original
sudo scutil --set HostName "${ORIGINAL_HOSTNAME}"
Llavero
Si seleccionas la clave de recuperación institucional del llavero, asegúrate de generar previamente el archivo del llavero FileVaultMaster.keychain
que contenga tu clave de recuperación, eliminar la clave privada y desplegarlo en tu máquina:
- Crear un llavero maestro de FileVault
- Eliminar la clave privada del llavero maestro
- Desplegar el llavero maestro actualizado en cada Mac
Desbloquear el disco de inicio de un usuario
Si un usuario olvida su contraseña de cuenta de macOS y no puede iniciar sesión en su Mac, puedes usar la clave privada que estaba contenida en el archivo original FileVaultMaster.key
, para desbloquear el disco.
Inicia desde la recuperación de macOS manteniendo presionada Comando-R durante el inicio.
Conecta la unidad externa que contiene la
private-recovery-key
o el originalFileVaultMaster.keychain
que contiene la clave privada.Elige
Utilidades > Terminal
en la barra de menú en la recuperación de macOS.desbloquea el llavero de FileVault
security unlock-keychain /path/to/FileVaultMaster.keychain
Desbloquea el disco de inicio cifrado
# Discos APFS diskutil ap unlockVolume "Nombre de la Unidad Encriptada" -recoveryKeychain /path/to/FileVaultMaster.keychain # Discos Mac OS Extendidos (HFS Plus) diskutil cs list # encuentra el UUID diskutil cs unlockVolume {UUID} -recoveryKeychain /path/to/FileVaultMaster.keychain
Licencia
Autor: Marco Massari Calderone (c) 2020 - marco@marcomc.com
Ansible role to configure FileVault2 on macOS. Also used in Splinter provisioning tool.
ansible-galaxy install marcomc.macos_filevault2