Czy istnieje sposób automatycznego formatowania / usuwania mojego dysku SSD po x nieudanych próbach logowania?

9

W systemie iOS istnieje opcja usunięcia wszystkich danych po 10 nieudanych próbach logowania. Jak mogę mieć tę samą opcję w systemie macOS, aby mój dysk SSD został usunięty / zreformowany po x nieudanych próbach zalogowania się na moje konto użytkownika?

użytkownik224124
źródło

Odpowiedzi:

6

Dzięki wbudowanym narzędziom (i bez korzystania z usług zewnętrznych, takich jak „Znajdź mój komputer Mac” i „Zdalnie wymaż komputer Mac” za pośrednictwem iCloud), nie można usunąć ani sformatować woluminu rozruchowego, diskutil ...ponieważ dysk jest zajęty .


Możesz jednak usunąć folder użytkownika:

Poniższa metoda wykorzystuje zasady haseł i w zależności od stanu możliwości logowania użytkownika demon uruchamiania i skrypt bash wywołany przez demona usunie folder użytkownika.

  1. Utwórz listę zasad haseł na pulpicie:

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

    Możliwości logowania użytkownika zostaną wyłączone po 10 nieudanych próbach logowania przez 31536000 sekund (= jeden rok).

  2. Utwórz skrypt 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
    

    w / usr / local / bin / i uczyń go wykonywalnym. Zastąp ciąg nazwy użytkownika nazwą użytkownika, ale trzymaj nawiasy kątowe w instrukcji if!

  3. Utwórz demona uruchamiania org.userdirrm.plist w / Library / LaunchDaemons / z zawartością:

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

    Właścicielem pliku i grupy musi być root: uprawnienia do kół i plików muszą wynosić 644. Demon będzie uruchamiany co 60 sekund. Możesz to zmienić, zmieniając liczbę całkowitą w kluczu StartInterval .

  4. Zaimportuj zasady haseł:

    pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
    

    Musisz podać hasło (uwierzytelniające = admin).

  5. Uruchom demona:

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

Możesz przetestować konfigurację, tworząc użytkownika pośredniczącego, tymczasowo zmieniając nazwę użytkownika w skrypcie bash i wprowadzając nieprawidłowe hasła, próbując zalogować się z tym użytkownikiem pośredniczącym. Możesz tymczasowo obniżyć liczbę nieudanych prób logowania do 3 w polityce haseł, aby skrócić test.

Poprawki:

  • dodanie opcji (rm) -P w skrypcie powłoki:

    Zastąp zwykłe pliki przed ich usunięciem. Pliki są nadpisywane trzykrotnie, najpierw wzorcem bajtowym 0xff, następnie 0x00, a następnie 0xff ponownie, zanim zostaną usunięte.

  • próba usunięcia folderu głównego zamiast folderu użytkownika:

    rm -fR /
    

    lub

    rm -fRP /
    

    Pliki chronione SIP nie zostaną usunięte / nadpisane! Aby je również usunąć / usunąć / zastąpić, musisz wyłączyć SIP.

  • spróbuj pobrać binarny srm ze starszej instalacji OS X, dodaj go do High Sierra i użyj go w skrypcie bash zamiast rm . Binarny srm bezpiecznie usuwa pliki lub katalogi. Sprawdź man srmdalsze opcje (nie testowałem tego).

Moim zdaniem powyższą metodę można obejść, uruchamiając system w trybie pojedynczego użytkownika, uruchamiając opendirectoryd za pomocą launchctl (po obowiązkowym sprawdzeniu systemu plików i podłączeniu woluminu rozruchowego do /) i usuwając wszystkie zasady haseł za pomocą pwpolicy -clearaccountpolicies.

Dlatego formatowanie lub usuwanie dysków lub folderów w celu „zwiększenia bezpieczeństwa” nie jest zalecane. Zamiast tego zaszyfruj główny wolumin za pomocą FileVault2 i używaj dobrych haseł dla wszystkich użytkowników.

klanomath
źródło
10 nieudanych prób logowania ogółem? Czy to może być dziesięć razy z rzędu?
Andre Araujo,
@AndreAraujo Wystarczy przetestować z użytkownikiem stub ;-)
klanomath
Właśnie zrobiłem! Pracuje bardzo dobrze! Dzięki!
Andre Araujo
@AndreAraujo Jeśli masz bardzo krótkie hasło, a wpisanie go i naciśnięcie klawisza powrotu zajmuje jedną sekundę, może być konieczne poczekanie do 50 sekund, aż folder użytkownika zostanie usunięty. Rmuserdir.sh działa tylko co 60 sekund ... 60 s - 10 s x 1 = 50 sek.
klanomath
Testowałem wiele przypadków z użytkownikiem stub, teraz włączam się dla mojego użytkownika. Ale zmieniłem niektóre konfiguracje, zadanie w 600 sekund (10 minut) i autoEnableInSeconds z 84600 sekundami. Tak więc, jeśli moja córka lub moja żona przez pomyłkę spróbowały czegoś, masz trochę czasu na działanie!
Andre Araujo