marcomc.macos_filevault2

Estado de Construcción

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:

  1. Crear un llavero maestro de FileVault
  2. 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:

  1. Crear un llavero maestro de FileVault
  2. Eliminar la clave privada del llavero maestro
  3. 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.

  1. Inicia desde la recuperación de macOS manteniendo presionada Comando-R durante el inicio.

  2. Conecta la unidad externa que contiene la private-recovery-key o el original FileVaultMaster.keychain que contiene la clave privada.

  3. Elige Utilidades > Terminal en la barra de menú en la recuperación de macOS.

  4. desbloquea el llavero de FileVault

     security unlock-keychain /path/to/FileVaultMaster.keychain
    
  5. 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

MIT

Autor: Marco Massari Calderone (c) 2020 - marco@marcomc.com

Acerca del proyecto

Ansible role to configure FileVault2 on macOS. Also used in Splinter provisioning tool.

Instalar
ansible-galaxy install marcomc.macos_filevault2
Licencia
mit
Descargas
117
Propietario
Biker, tinkerer, Dev Ops something...