marcomc.macos_filevault2

Statut de construction

Rôle Ansible FileVault2 pour macOS

Ce rôle Ansible implémente un sous-ensemble de commandes pour activer (uniquement) FileVault2 via fdesetup présent sur les systèmes macOS v10.7 ou plus récents.

Utilisé dans Splinter, un outil de provisionnement avec des choix définis pour macOS.

Exemple de Playbook


- vars:
    filevault_additional_users_and_passwords:
    - { username: "testuser", password: "test_password" }
    filevault_certificate: oui
    filevault_certificate_file: "/chemin/vers/mon/DER.cer"
    filevault_showrecoverykey: oui
    filevault_user_password: "mot de passe de l'utilisateur pour activer FileVault"

- hosts: localhost
  roles:
  - marcomc.macos_filevault2

Variables

Le sous-ensemble d'options activer mis en œuvre est

 fdesetup enable
    [-outputplist]
    [-forcerestart]
    [-authrestart]
    [-keychain | [-certificate chemin_vers_fichier_cer]]
    [
      [-defer chemin_fichier]
      [-forceatlogin max_tentatives_annulation]
      [-dontaskatlogout]
      [-showrecoverykey]
    ]
    [-norecoverykey]
    [-verbose]

Chaque option a été mappée à une variable ansible (et il y a quelques variables supplémentaires pour plus de fonctionnalités)

verbose: non
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: ''                 # utile si vous souhaitez déployer un fichier plist statique
filevault_keychain: non
filevault_keychain_file: non               # ignoré si institutional_type est 'certificate'

filevault_keychain_file_override: non      # Écraser toute copie existante '/Library/Keychains/FileVaultMaster.keychain'
filevault_certificate: non
filevault_certificate_file: ""            # ignoré si institutional_type est 'keychain'
filevault_norecoverykey: non               # 'oui' spécifie que seul le trousseau FileVaultMaster est utilisé comme clé de récupération
                                          # 'non' générera une clé de récupération personnelle
filevault_recovery_key_output_file: "~/Bureau/{{ ansible_hostname }}-cle-de-recuperation-personnelle.txt" # le chemin où enregistrer la clé de récupération personnelle générée par FileVault2
filevault_outputplist: non
filevault_defer: non
filevault_defer_file: "/dev/null"
filevault_showrecoverykey: non
filevault_dontaskatlogout: non
filevault_forcerestart: non
filevault_authrestart: non
filevault_forceatlogin: non
filevault_max_cancel_attempts: '-1' # (-1: ignorer cette option, 0=prochaine fois, 9999=demander seulement, sans forcer).
filevault_forcerestart: non

Vous pouvez obtenir votre méthode d'installation préférée en basculant les options comme si vous utilisiez l'outil de ligne de commande directement :

# Exemple : Activer FileVault2 en utilisant un certificat sans générer de clé de récupération personnelle
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords:
  - { username: "testuser6", password: "testest" }
filevault_certificate: oui
filevault_certificate_file: "~/Documents/certificate.cer"
filevault_norecoverykey: oui

Ce qui correspond à :

fdesetup enable -certificate ~/Documents/certificate.cer -norecoverykey -inputplist < input_plist

Liste d'Entrée

Vous pouvez spécifier votre propre plist d'entrée pour personnaliser davantage votre installation ou si vous avez besoin d'un autre processus pour générer ce fichier.

Si vous ne spécifiez pas votre propre plist d'entrée (ce qui est censé être le comportement par défaut), alors un plist sera généré dynamiquement en rassemblant filevault_user et filevault_user_password ainsi que la liste de filevault_additional_users_and_passwords.

Définir une clé de récupération institutionnelle pour les ordinateurs de votre organisation

Vous pouvez choisir de :

  • déployer une clé de récupération Keychain pré-générée
  • déployer un certificat DER qui sera ajouté à Keychain en tant que clé de récupération générée à la volée

Certificat

Créez automatiquement la clé de récupération institutionnelle avec le fichier de certificat fourni.

C'est mon option préférée car les tâches de préparation sont minimes et le résultat est le même que pour l'option Keychain.

Le nom commun du certificat doit être "FileVault Recovery Key".

Vous pouvez générer un certificat DER manuellement :

  1. Créer une trousseau de clés maître FileVault
  2. exportez UNIQUEMENT l'élément de certificat public dans FileVaultRecoveryKey.cer.

Alternativement, vous pouvez utiliser le script splinter-tools/filevault-recovery-key-generator.sh.

Assurez-vous de conserver à la fois la trousseau et son mot de passe dans un endroit sûr (Bitwarden, LastPass, 1Password).

Le certificat auto-signé généré sera nommé FileVault Recovery Key (<votre_hostname>). Votre nom d’hôte est défini comme la description du certificat et ne peut pas être changé.

Si vous souhaitez que la description entre parenthèses soit différente de votre nom d’hôte, vous devez tromper le trousseau et temporairement définir le nom de votre ordinateur sur la description de certificat souhaitée, puis revenir à l'original.

#!/usr/bin/env bash

# Stocker le nom d'hôte original
ORIGINAL_HOSTNAME=$(eval hostname)

# Changer le nom d'hôte à la description désirée
sudo scutil --set HostName "Institutionnel"

# créer la trousseau avec le certificat
sh filevault-recovery-key-generator.sh FileVaultMaster

# restaurer le nom d'hôte original
sudo scutil --set HostName "${ORIGINAL_HOSTNAME}"

Trousseau

Si vous sélectionnez la clé de récupération institutionnelle du trousseau, assurez-vous de générer au préalable le fichier de trousseau FileVaultMaster.keychain contenant votre clé de récupération, supprimez la clé privée, et déployez-le sur votre machine :

  1. Créer une trousseau de clés maître FileVault
  2. Supprimer la clé privée de la trousseau maître
  3. Déployez la trousseau maître mise à jour sur chaque Mac

Déverrouiller le disque de démarrage d'un utilisateur

Si un utilisateur oublie son mot de passe de compte utilisateur macOS et ne peut pas se connecter à son Mac, vous pouvez utiliser la clé privée qui était contenue dans le fichier original FileVaultMaster.key, pour déverrouiller le disque.

  1. Démarrez à partir de la récupération macOS en maintenant Commande-R pendant le démarrage.

  2. Connectez le lecteur externe contenant la private-recovery-key ou le fichier FileVaultMaster.keychain original qui contient la clé privée.

  3. Choisissez Utilitaires > Terminal dans la barre de menus en mode de récupération macOS.

  4. déverrouillez le trousseau maître FileVault

     security unlock-keychain /chemin/vers/FileVaultMaster.keychain
    
  5. Déverrouillez le disque de démarrage chiffré

     # Disques APFS
     diskutil ap unlockVolume "Nom du disque chiffré" -recoveryKeychain /chemin/vers/FileVaultMaster.keychain
    
     # Disques Mac OS Extended (HFS Plus)
     diskutil cs list # trouvez l'UUID
     diskutil cs unlockVolume {UUID} -recoveryKeychain /chemin/vers/FileVaultMaster.keychain
    

Licence

MIT

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

À propos du projet

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

Installer
ansible-galaxy install marcomc.macos_filevault2
Licence
mit
Téléchargements
117
Propriétaire
Biker, tinkerer, Dev Ops something...