ログイン試行がx回失敗した後、SSDを自動的にフォーマット/削除する方法はありますか?


9

iOSでは、10回のログイン試行の失敗後にデバイスがすべてのデータを削除するオプションがあります。xがユーザーアカウントにログインしようとして失敗した後にSSDが削除/再フォーマットされるように、macOSで同じオプションを使用するにはどうすればよいですか?

回答:


6

オンボードツールを使用すると(「iMacを介して「Macを探す」や「Macをリモートで消去」などの外部サービスを使用せずに)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>
    

    31536000秒間(= 1年)10回ログインに失敗すると、ユーザーログイン機能は無効になります。

  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オプションを追加します。

    削除する前に通常のファイルを上書きします。ファイルは3回上書きされます。最初にバイトパターン0xff、次に0x00、次に0xffで上書きされてから、削除されます。

  • ユーザーフォルダーの代わりにルートフォルダーを削除しようとしています:

    rm -fR /
    

    または

    rm -fRP /
    

    SIPで保護されたファイルは削除/上書きされません!それらも削除/削除/上書きするには、SIPを無効にする必要があります。

  • 古いOS Xインストールからバイナリsrmを取得し、High Sierraに追加して、rmの代わりにbashスクリプトで使用します。バイナリsrmは、ファイルまたはディレクトリを安全に削除します。man srmその他のオプションを確認します(これはテストしていません)。

私の意見では、上記の方法は、シングルユーザーモードで起動し、(必須のファイルシステムチェックとブートボリュームを/にマウントした後)launchctlでopendirectorydを起動し、ですべてのパスワードポリシーを削除することで回避できますpwpolicy -clearaccountpolicies

したがって、「セキュリティを確保する」ためにディスクやフォルダをフォーマットまたは消去することはお勧めしません。代わりに、FileVault2でメインボリュームを暗号化し、すべてのユーザーに適切なパスワードを使用してください。


合計10回のログイン試行の失敗?それは10回続けられるでしょうか?
Andre Araujo

@AndreAraujoスタブユーザーでテストするだけです;-)
klanomath

今やりました!とてもうまくいきます!ありがとう!
Andre Araujo

@AndreAraujo非常に短いパスワードがあり、それを入力してReturnキーを押すのに1秒かかる場合、ユーザーフォルダが削除されるまで最大50秒待機する必要がある場合があります。rmuserdir.shは唯一の60秒ごとに実行されます...そして60秒- 10×1秒= 50秒。
クラノマ

スタブユーザーを使用して多くのケースをテストしましたが、今度は自分のユーザーに対してオンにします。しかし、いくつかの構成を変更し、ジョブを600秒(10分)で変更し、autoEnableInSecondsを84600秒で変更しました。ですから、私の娘や妻が誤って何かを試した場合、行動する時間があります!
Andre Araujo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.