¿Hay alguna forma de formatear / eliminar automáticamente mi SSD después de x intentos fallidos de inicio de sesión?

9

En iOS existe la opción de que el dispositivo elimine todos los datos después de 10 intentos fallidos de inicio de sesión. ¿Cómo puedo tener la misma opción en macOS para que mi SSD se elimine / vuelva a formatear después de x intentos fallidos para iniciar sesión en mi cuenta de usuario?

usuario224124
fuente

Respuestas:

6

Con las herramientas integradas (y sin utilizar servicios externos como "Buscar mi Mac" y "Borrar mi Mac de forma remota" a través de iCloud) es imposible borrar o formatear el volumen de arranque diskutil ...porque el disco está ocupado .


Sin embargo, puede eliminar su carpeta de usuario:

El siguiente método utiliza una política de contraseña y, dependiendo del estado de las capacidades de inicio de sesión del usuario, un demonio de inicio y un script bash invocado por el demonio eliminarán la carpeta del usuario.

  1. Cree una política de contraseña en su escritorio:

    <?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>
    

    Las capacidades de inicio de sesión del usuario se deshabilitarán después de 10 intentos fallidos de inicio de sesión durante 31536000 segundos (= un año).

  2. Cree 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
    

    en / usr / local / bin / y hacerlo ejecutable. ¡Reemplace el nombre de usuario de la cadena con el nombre de su usuario pero mantenga los corchetes angulares en la instrucción if!

  3. Cree un daemon de lanzamiento org.userdirrm.plist en / Library / LaunchDaemons / con el contenido:

    <?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>
    

    El propietario y el grupo del archivo deben ser root: los permisos de la rueda y del archivo deben ser 644. El demonio se ejecutará cada 60 segundos. Puede modificar esto cambiando el número entero en la clave StartInterval .

  4. Importar la política de contraseña:

    pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
    

    Debe ingresar su contraseña (autenticador = administrador).

  5. Lanza el demonio:

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

Puede probar la configuración creando un usuario auxiliar, cambiando el nombre de usuario en el script bash temporalmente e ingresando contraseñas incorrectas al intentar iniciar sesión con este usuario auxiliar. Puede reducir el número de intentos fallidos de inicio de sesión a 3 en la política de contraseña temporalmente para acortar la prueba.

Ajustes:

  • agregando la opción (rm) -P en el script de shell:

    Sobrescriba los archivos normales antes de eliminarlos. Los archivos se sobrescriben tres veces, primero con el patrón de bytes 0xff, luego 0x00 y luego 0xff nuevamente, antes de que se eliminen.

  • tratando de eliminar la carpeta raíz en lugar de su carpeta de usuario:

    rm -fR /
    

    o

    rm -fRP /
    

    ¡Los archivos protegidos SIP no se eliminarán / sobrescribirán! Para eliminarlos / eliminarlos / sobrescribirlos también, debe deshabilitar SIP.

  • intente obtener el srm binario de una instalación anterior de OS X, agréguelo a High Sierra y úselo en el script bash en lugar de rm . El srm binario elimina de forma segura archivos o directorios. Comprueba man srmsi hay más opciones (no he probado esto).

En mi opinión, el método descrito anteriormente se puede eludir arrancando en modo de usuario único, iniciando el opendirectoryd con launchctl (después de la verificación obligatoria del sistema de archivos y montando el volumen de arranque en /) y eliminando todas las políticas de contraseña con pwpolicy -clearaccountpolicies.

Por lo tanto, no se recomienda formatear o borrar discos o carpetas para "obtener seguridad". En su lugar, encripte su volumen principal con FileVault2 y use buenas contraseñas para todos los usuarios.

klanomath
fuente
10 intentos fallidos de inicio de sesión en total? ¿Podría ser diez veces seguidas?
Andre Araujo
@AndreAraujo Simplemente pruébelo con un usuario de código auxiliar ;-)
klanomath
¡Lo acabo de hacer! ¡Funciona muy bien! ¡Gracias!
Andre Araujo
@AndreAraujo Si tiene un passwort muy corto e ingresarlo y presionar la tecla de retorno toma un segundo, es posible que tenga que esperar hasta 50 segundos hasta que se elimine la carpeta del usuario. El rmuserdir.sh ejecuta cada 60 segundos solamente ... y 60 seg - 10 x 1 sec = 50 seg.
klanomath
Probé muchos casos con un usuario de código auxiliar, ahora enciendo para mi usuario. Pero cambié algunas configuraciones, trabajo en 600 segundos (10 minutos) y autoEnableInSeconds con 84600 segundos. Entonces, si mi hija o mi esposa intentaron algo por error, ¡tendré tiempo para actuar!
Andre Araujo