x 로그인 시도가 실패한 후 SSD를 자동으로 포맷 / 삭제하는 방법이 있습니까?


9

iOS에는 10 번의 로그인 시도 실패 후 장치가 모든 데이터를 삭제하도록하는 옵션이 있습니다. x가 사용자 계정에 로그인하지 못한 후 SSD가 삭제 / 재 포맷되도록 macOS에서 동일한 옵션을 사용하려면 어떻게해야합니까?

답변:


6

그것은 삭제 또는로 부팅 볼륨 포맷 불가능 온 - 보드 도구를 (와 같은 외부 서비스를 사용하지 않고 "내 맥 찾기"및 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>
    

    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. / Library / LaunchDaemons /에 컨텐츠 로 시작 데몬 org.userdirrm.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>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를 비활성화해야합니다.

  • 이전 OS X 설치에서 바이너리 srm 을 가져 와서 High Sierra에 추가하고 rm 대신 bash 스크립트에서 사용하십시오 . 이진 srm 은 파일이나 디렉토리를 안전하게 제거합니다. man srm추가 옵션을 확인하십시오 (테스트하지 않았습니다).

필자의 의견으로는 위에서 설명한 방법은 단일 사용자 모드로 부팅하고 launchctl을 사용하여 opendirectoryd (필수 파일 시스템 검사 및 부팅 볼륨을 /에 마운트 한 후)를 시작하고로 모든 비밀번호 정책을 제거하여 회피 할 수 있습니다 pwpolicy -clearaccountpolicies.

따라서 "보안"을 얻기 위해 디스크 나 폴더를 포맷하거나 지우는 것은 권장되지 않습니다. 대신 FileVault2로 기본 볼륨을 암호화하고 모든 사용자에게 올바른 암호를 사용하십시오.


로그인 시도가 총 10 회 실패 했습니까? 연속 10 회일 수 있습니까?
Andre Araujo '29

@AndreAraujo 그냥 스터브 사용자로 테스트 ;-)
klanomath

난 그냥했다! 잘 작동합니다! 감사!
Andre Araujo '29

@AndreAraujo 암호가 매우 짧고 입력 한 후 리턴 키를 누르는 데 1 초가 걸리면 사용자 폴더가 삭제 될 때까지 최대 50 초 동안 기다려야 할 수 있습니다. rmuserdir.sh은 단지 60 초마다 실행 ... 60 초 - 10 × 1 초 = 50 초.
klanomath

스텁 사용자로 많은 사례를 테스트했으며 이제는 사용자를 켭니다. 그러나 600 초 (10 분)의 작업과 84600 초의 autoEnableInSeconds 작업을 변경했습니다. 따라서 딸이나 아내가 실수로 무언가를 시도한 경우 행동 할 시간이 있습니다!
Andre Araujo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.