Existe-t-il un moyen de formater / supprimer automatiquement mon SSD après l'échec de x tentatives de connexion?

9

Sur iOS, il est possible que l'appareil supprime toutes les données après 10 tentatives de connexion infructueuses. Comment puis-je avoir la même option sur macOS pour que mon SSD soit supprimé / reformaté après x tentatives infructueuses de connexion à mon compte d'utilisateur?

user224124
la source

Réponses:

6

Avec les outils intégrés (et sans utiliser de services externes tels que "Trouver mon Mac" et "Effacer mon Mac à distance" via iCloud), il est impossible d'effacer ou de reformater le volume de démarrage avec diskutil ...car le disque est occupé .


Vous pouvez cependant supprimer votre dossier utilisateur:

La méthode ci-dessous utilise une politique de mot de passe et selon l'état des capacités de connexion utilisateur, un démon de lancement et un script bash invoqué par le démon supprimera le dossier utilisateur.

  1. Créez une liste de règles de mot de passe sur votre bureau:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>policyCategoryAuthentication</key>
        <array>
            <dict>
                <key>policyContent</key>
                <string>(policyAttributeFailedAuthentications &lt; policyAttributeMaximumFailedAuthentications) or (policyAttributeCurrentTime &gt; policyAttributeLastFailedAuthenticationTime + autoEnableInSeconds)</string>
                <key>policyIdentifier</key>
                <string>com.apple.maximumFailedLoginAttempts</string>
                <key>policyParameters</key>
                <dict>
                    <key>autoEnableInSeconds</key>
                    <integer>31536000</integer>
                    <key>policyAttributeMaximumFailedAuthentications</key>
                    <integer>10</integer>
                </dict>
            </dict>
        </array>
    </dict>
    </plist>
    

    Les capacités de connexion utilisateur seront désactivées après 10 tentatives de connexion infructueuses pendant 31536000 secondes (= un an).

  2. Créez un script bash rmuserdir.sh :

    #!/bin/bash
    
    PWPOL=$(pwpolicy -u username authentication-allowed)
    
    if [[ $PWPOL == 'User <username> is not allowed to authenticate: Failed global policy "com.apple.maximumFailedLoginAttempts"'  ]]
    
    then rm -fR /Users/username
    
    fi
    

    dans / usr / local / bin / et rendez-le exécutable. Remplacez le nom d' utilisateur de chaîne par le nom de votre utilisateur, mais conservez les crochets dans l'instruction if!

  3. Créez un démon de lancement org.userdirrm.plist dans / Library / LaunchDaemons / avec le contenu:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>org.userdirrm</string>
        <key>ProgramArguments</key>
        <array>
            <string>/bin/bash</string>
            <string>/usr/local/bin/rmuserdir.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/org.userdirrm.stderr</string>
        <key>StandardOutPath</key>
        <string>/tmp/org.userdirrm.stdout</string>
        <key>StartInterval</key>
        <integer>60</integer>
    </dict>
    </plist>
    

    Le propriétaire et le groupe du fichier doivent être root: les autorisations de roue et de fichier doivent être 644. Le démon s'exécutera toutes les 60 secondes. Vous pouvez modifier cela en modifiant l'entier dans la clé StartInterval .

  4. Importez la politique de mot de passe:

    pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
    

    Vous devez entrer votre mot de passe (authentificateur = administrateur).

  5. Lancez le démon:

    sudo launchctl load /Library/LaunchDaemons/org.userdirrm.plist
    

Vous pouvez tester la configuration en créant un utilisateur de stub, en modifiant temporairement le nom d'utilisateur dans le script bash et en entrant des mots de passe incorrects en essayant de vous connecter avec cet utilisateur de stub. Vous pouvez réduire temporairement le nombre de tentatives de connexion ayant échoué à 3 dans la stratégie de mot de passe pour raccourcir le test.

Tweaks:

  • ajout de l'option (rm) -P dans le script shell:

    Écraser les fichiers normaux avant de les supprimer. Les fichiers sont remplacés trois fois, d'abord avec le modèle d'octet 0xff, puis 0x00, puis à nouveau 0xff, avant d'être supprimés.

  • essayer de supprimer le dossier racine au lieu de votre dossier utilisateur:

    rm -fR /
    

    ou

    rm -fRP /
    

    Les fichiers protégés par SIP ne seront pas supprimés / écrasés! Pour les supprimer / supprimer / écraser également, vous devez désactiver SIP.

  • essayez d'obtenir le srm binaire à partir d'une ancienne installation d'OS X, ajoutez-le à High Sierra et utilisez-le dans le script bash au lieu de rm . Le srm binaire supprime en toute sécurité les fichiers ou répertoires. Vérifiez man srmd'autres options (je n'ai pas testé cela).

À mon avis, la méthode décrite ci-dessus peut être contournée en démarrant en mode mono-utilisateur, en lançant l'opendirectoryd avec launchctl (après la vérification obligatoire du système de fichiers et le montage du volume de démarrage sur /) et en supprimant toutes les politiques de mot de passe avec pwpolicy -clearaccountpolicies.

Par conséquent, le formatage ou l'effacement des disques ou des dossiers pour "gagner en sécurité" n'est pas recommandé. Au lieu de cela, chiffrez votre volume principal avec FileVault2 et utilisez de bons mots de passe pour tous les utilisateurs.

klanomath
la source
10 tentatives de connexion ont échoué au total? Serait-ce dix fois de suite?
Andre Araujo
@AndreAraujo Il suffit de le tester avec un utilisateur de talon ;-)
klanomath
Je viens de faire! Il fonctionne très bien! Merci!
Andre Araujo
@AndreAraujo Si vous avez un mot de passe très court et que vous le saisissez et que la touche de retour prend une seconde, vous devrez peut-être attendre jusqu'à 50 secondes jusqu'à ce que le dossier utilisateur soit supprimé. Le rmuserdir.sh s'exécute toutes les 60 secondes seulement ... et 60 s - 10 x 1 s = 50 s.
klanomath
J'ai testé de nombreux cas avec un utilisateur de stub, maintenant j'allume pour mon utilisateur. Mais j'ai changé certaines configurations, le travail en 600 secondes (10 minutes) et autoEnableInSeconds avec 84600 secondes. Donc, si ma fille ou ma femme a essayé quelque chose par erreur, ayez le temps d'agir!
Andre Araujo