Есть ли способ автоматически отформатировать / удалить мой SSD после x неудачных попыток входа?

9

На iOS есть возможность удалить все данные после 10 неудачных попыток входа в систему. Как я могу использовать ту же опцию в macOS, чтобы мой SSD удалялся / переформатировался после неудачных попыток входа в мою учетную запись?

user224124
источник

Ответы:

6

С помощью встроенных инструментов (и без использования внешних сервисов, таких как «Найди мой Mac» и «Удаленно удалите мой Mac» через iCloud) невозможно стереть или переформатировать загрузочный том, diskutil ...так как диск занят .


Вы можете удалить свою папку пользователя, хотя:

Приведенный ниже метод использует политику паролей и в зависимости от состояния возможностей входа пользователя в систему, демон запуска и сценарий bash, вызываемый демоном, удаляют папку пользователя.

  1. Создайте список политик паролей на рабочем столе:

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

    Возможности входа пользователя будут отключены после 10 неудачных попыток входа в систему в течение 31536000 секунд (= один год).

  2. Создайте 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
    

    в / usr / local / bin / и сделать его исполняемым. Замените строку username именем вашего пользователя, но оставьте угловые скобки в операторе if!

  3. Создайте демон запуска org.userdirrm.plist в / Library / LaunchDaemons / с содержимым:

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

    Владелец файла и группа должны быть root: права доступа к колесу и файлу должны быть 644. Демон будет запускаться каждые 60 секунд. Вы можете настроить это, изменив целое число в ключе StartInterval .

  4. Импортируйте политику паролей:

    pwpolicy setaccountpolicies ~/Desktop/pwpolicy.plist
    

    Вы должны ввести свой пароль (authenticator = admin).

  5. Запустите демон:

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

Вы можете протестировать настройку, создав пользователя-заглушку, временно изменив имя пользователя в скрипте bash и введя неправильные пароли, пытаясь войти с этим пользователем-заглушкой. Вы можете уменьшить количество неудачных попыток входа в систему до 3 в политике паролей временно, чтобы сократить тест.

Твики:

  • добавив опцию (rm) -P в скрипт оболочки:

    Перезаписать обычные файлы перед их удалением. Файлы перезаписываются три раза, сначала с помощью байтового шаблона 0xff, затем 0x00, а затем снова 0xff, прежде чем они будут удалены.

  • пытаемся удалить корневую папку вместо вашей пользовательской папки:

    rm -fR /
    

    или

    rm -fRP /
    

    Файлы, защищенные SIP, не будут удалены / перезаписаны! Чтобы удалить / удалить / перезаписать их также, вы должны отключить SIP.

  • попытайтесь получить двоичный srm из более старой установки OS X, добавьте его в High Sierra и используйте его в сценарии bash вместо rm . Бинарный srm безопасно удаляет файлы или каталоги. Проверьте man srmдальнейшие варианты (я не проверял это).

По моему мнению, описанный выше метод можно обойти, загрузившись в однопользовательском режиме, запустив opendirectoryd с launchctl (после обязательной проверки файловой системы и установив загрузочный том в /) и удалив все политики паролей с помощью pwpolicy -clearaccountpolicies.

Поэтому форматирование или стирание дисков или папок для «обеспечения безопасности» не рекомендуется. Вместо этого зашифруйте основной том с помощью FileVault2 и используйте надежные пароли для всех пользователей.

klanomath
источник
Всего 10 неудачных попыток входа? Может ли это быть десять раз подряд?
Андре Араужо
@AndreAraujo Просто протестируйте его с пользователем-заглушкой ;-)
klanomath
Я только что сделал! Это работает очень хорошо! Спасибо!
Андре Араужо
@AndreAraujo Если у вас очень короткий пароль и вы вводите его, а нажатие клавиши возврата занимает одну секунду, возможно, вам придется подождать до 50 секунд, пока папка пользователя не будет удалена. Rmuserdir.sh запускается каждые 60 секунд только ... и 60 сек - 10 х 1 сек = 50 сек.
Кланомат
Я тестировал много случаев с пользователем-заглушкой, теперь я включаю его для своего пользователя. Но я изменил некоторые конфиги, задание за 600 секунд (10 минут) и autoEnableInSeconds с 84600 секундами. Так что, если моя дочь или моя жена попробовали что-то по ошибке, имейте время действовать!
Андре Араужо