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

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

Ответы (1)

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


Однако вы можете удалить папку пользователя:

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

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

    <?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:wheel, а права доступа к файлу должны быть 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 и используйте хорошие пароли для всех пользователей.

Всего 10 неудачных попыток входа? Может десять раз подряд?
@AndreAraujo Просто проверьте это с пользователем-заглушкой ;-)
Я только что сделал! Это работает очень хорошо! Спасибо!
@AndreAraujo Если у вас очень короткий пароль, и его ввод и нажатие клавиши возврата занимает одну секунду, возможно, вам придется подождать до 50 секунд, пока пользовательская папка не будет удалена. rmuserdir.sh запускается только каждые 60 секунд... и 60 секунд - 10 x 1 секунда = 50 секунд.
Протестировал много кейсов с юзером-заглушкой, теперь включаю для своего юзера. Но я изменил некоторые конфиги, работу за 600 секунд (10 минут) и autoEnableInSeconds с 84600 секундами. Так что, если моя дочь или моя жена попытались сделать что-то по ошибке, у меня есть время, чтобы действовать!
Мы (или я) можем добавить предупреждение перед удалением вашей пользовательской папки. Между тем, даже iMessage на ваш iPhone будет возможен. С другой стороны: если у вас маленькая дочь или сын (или кот!) нажимают произвольные клавиши на клавиатуре, 10 попыток ввода пароля съедаются очень быстро.
У вас есть идеи, как это сделать? Это предупреждение будет эффективным, не будучи потенциально тревожным? Здесь, в Бразилии, мы живем темными временами, слежкой и полицейскими злоупотреблениями. Мой FileVault включен, но не помешает дополнительное облако слоев.
Если FileVault2 включен, все работает только в том случае, если диск разблокирован (пользователь вошел в систему, а Mac не был выключен). Следовательно, выключение вашего Mac перед тем, как оставить его в покое (или с молодыми девушками/мальчиками/кошками), безопасно — и вы не потеряете никаких данных (за исключением случаев, когда он будет конфискован — тогда вы потеряете весь Mac со всеми своими данными).
Да, но если предположить, что мой диск разблокирован, это может быть проблемой. Несмотря ни на что, у меня есть резерв для важных вещей.