Existe uma maneira de formatar / excluir automaticamente meu SSD após x falhas nas tentativas de login?


9

No iOS, existe a opção de o dispositivo excluir todos os dados após 10 tentativas falhas de login. Como posso ter a mesma opção no macOS para que meu SSD seja excluído / reformado após x tentativas falhas de fazer login na minha conta de usuário?

Respostas:


6

Com as ferramentas integradas (e sem o uso de serviços externos como "Localizar meu Mac" e "Apagar meu Mac remotamente" via iCloud), é impossível apagar ou reformatar o volume de inicialização diskutil ...porque o disco está ocupado .


Você pode remover sua pasta de usuário:

O método abaixo usa uma política de senha e, dependendo do estado dos recursos de login do usuário, um daemon de inicialização e um script bash chamado pelo daemon removerão a pasta do usuário.

  1. Crie uma lista de diretivas de senha na sua área de trabalho:

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

    Os recursos de login do usuário serão desativados após 10 tentativas falhas de login por 31536000 segundos (= um ano).

  2. Crie um 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
    

    em / usr / local / bin / e torne-o executável. Substitua o nome de usuário da string pelo nome do usuário, mas mantenha os colchetes angulares na instrução if!

  3. Crie um daemon de inicialização org.userdirrm.plist em / Library / LaunchDaemons / com o conteúdo:

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

    O proprietário e o grupo do arquivo devem ser raiz: as permissões de roda e arquivo devem ser 644. O daemon será executado a cada 60 segundos. Você pode ajustar isso alterando o número inteiro na chave StartInterval .

  4. Importe a política de senha:

    pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
    

    Você deve digitar sua senha (autenticador = admin).

  5. Inicie o daemon:

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

Você pode testar a configuração criando um usuário stub, alterando o nome de usuário no script bash temporariamente e inserindo senhas erradas tentando efetuar login com esse usuário stub. Você pode diminuir temporariamente o número de tentativas de logon com falha para 3 na política de senha para diminuir o teste.

Ajustes:

  • adicionando a opção (rm) -P no script de shell:

    Sobrescreva arquivos regulares antes de excluí-los. Os arquivos são substituídos três vezes, primeiro com o padrão de bytes 0xff, depois 0x00 e 0xff novamente, antes de serem excluídos.

  • tentando remover a pasta raiz em vez da sua pasta de usuário:

    rm -fR /
    

    ou

    rm -fRP /
    

    Os arquivos protegidos por SIP não serão removidos / substituídos! Para remover / excluir / substituí-los também, é necessário desativar o SIP.

  • tente obter o srm binário de uma instalação mais antiga do OS X, adicione-o ao High Sierra e use-o no script bash em vez de rm . O srm binário remove com segurança arquivos ou diretórios. Verifique se man srmhá mais opções (não testei isso).

Na minha opinião, o método descrito acima pode ser contornado, inicializando no modo de usuário único, iniciando o opendirectoryd com o launchctl (após o sistema de arquivos obrigatório, verifique e monte o volume de inicialização em /) e remova todas as políticas de senha com pwpolicy -clearaccountpolicies.

Portanto, formatar ou apagar discos ou pastas para "obter segurança" não é recomendado. Em vez disso, criptografe seu volume principal com o FileVault2 e use boas senhas para todos os usuários.


10 tentativas de login com falha no total? Poderia ser dez vezes seguidas?
Andre Araujo

Teste @AndreAraujo Apenas com um usuário esboço ;-)
klanomath

Eu apenas fiz! Funciona muito bem! Obrigado!
Andre Araujo

@AndreAraujo Se você possui um passwort muito curto e o digita e pressionar a tecla Enter leva um segundo, pode ser necessário aguardar até 50 segundos até a pasta do usuário ser excluída. O rmuserdir.sh é executado a cada 60 segundos apenas ... e 60 s - 10 x 1 s = 50 s.
klanomath

Testei muitos casos com um usuário stub, agora ligo para o meu usuário. Mas mudei algumas configurações, trabalho em 600 segundos (10 minutos) e autoEnableInSeconds com 84600 segundos. Então, se minha filha ou minha esposa tentaram algo por engano, têm tempo para agir!
Andre Araujo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.