Amazon EC2 Mac 인스턴스용 System Integrity Protection 구성하기

Amazon EC2 Mac 인스턴스용 System Integrity Protection 구성하기

Amazon EC2 Mac 인스턴스의 SIP(System Integrity Protection) 설정을 구성할 수 있어요. SIP는 승인되지 않은 코드 실행과 시스템 수준 변경을 막아주는 macOS의 핵심 보안 기능입니다. x86 Mac 인스턴스와 Apple silicon Mac 인스턴스 모두에서 설정을 활성화하거나 비활성화하거나, 특정 설정만 선택적으로 바꿀 수 있어요.

출처: 문서

본문

x86 Mac 인스턴스와 Apple silicon Mac 인스턴스 모두에서 System Integrity Protection(SIP) 설정을 구성할 수 있어요. SIP는 승인되지 않은 코드 실행과 시스템 수준 변경을 막는 데 도움이 되는 macOS의 핵심 보안 기능입니다. 자세한 내용은 Apple 문서의 About System Integrity Protection을 참고하세요.

SIP를 완전히 활성화하거나 비활성화할 수도 있고, 특정 SIP 설정만 선택적으로 활성화/비활성화할 수도 있어요. 필요한 작업을 수행할 때만 SIP를 임시로 비활성화하고, 가능한 한 빨리 다시 활성화하는 것을 권장합니다. SIP를 비활성화한 채로 두면 인스턴스가 악성 코드에 취약해질 수 있어요.

SIP 구성은 Amazon EC2 Mac 인스턴스가 지원되는 모든 AWS 리전에서 지원됩니다.

고려 사항 (Considerations)

  • 다음 인스턴스/운영체제 조합에서 SIP 구성이 지원됩니다.
    • Mac1 | Mac2 | Mac2-m1ultra — macOS Ventura(버전 13.0 이상)
    • Mac2-m2 | Mac2-m2pro — macOS Ventura(버전 13.2 이상)
    • Mac-m4 | Mac-m4pro — macOS Sequoia(버전 15.6 이상)
  • Note: macOS 베타 및 프리뷰 버전은 지원되지 않아요.
  • 개별 SIP 설정을 선택적으로 활성화/비활성화하는 사용자 지정 SIP 구성을 지정할 수 있어요. 사용자 지정 구성을 구현했다면 인스턴스에 연결해 설정을 확인해 요구사항이 제대로 구현되고 의도대로 동작하는지 확인하세요. SIP 구성은 macOS 업데이트에 따라 바뀔 수 있어요. macOS 버전을 업그레이드한 뒤에는 사용자 지정 SIP 설정을 검토해 보안 구성의 지속적인 호환성과 기능을 확인하는 것을 권장합니다.
  • x86 Mac 인스턴스는 SIP 설정이 인스턴스 수준에서 적용돼요. 인스턴스에 연결된 루트 볼륨은 구성된 SIP 설정을 자동으로 상속받습니다. Apple silicon Mac 인스턴스는 SIP 설정이 볼륨 수준에서 적용돼요. 인스턴스에 연결된 루트 볼륨은 SIP 설정을 상속받지 않습니다. 다른 루트 볼륨을 연결하면 필요한 상태로 SIP 설정을 다시 구성해야 해요.
  • SIP 구성 작업이 완료되는 데 최대 90분이 걸릴 수 있어요. 작업이 진행되는 동안 인스턴스는 연결할 수 없는 상태로 유지됩니다.
  • SIP 구성은 이후 인스턴스에서 만든 스냅샷이나 AMI로 전송되지 않아요.
  • Apple silicon Mac 인스턴스는 부팅 가능한 볼륨이 하나만 있어야 하고, 연결된 각 볼륨에는 추가 관리 사용자가 한 명만 있을 수 있어요.

기본 SIP 구성 (Default SIP configurations)

다음 표는 x86 Mac 인스턴스와 Apple silicon Mac 인스턴스의 기본 SIP 구성을 보여줘요.

설정 Apple silicon Mac 인스턴스 x86 Mac 인스턴스
Apple Internal Enabled Disabled
Filesystem Protections Enabled Disabled
Base System Enabled Enabled
Debugging Restrictions Enabled Enabled
Dtrace Restrictions Enabled Enabled
Kext Signing Enabled Enabled
Nvram Protections Enabled Enabled

SIP 구성 확인하기 (Check your SIP configuration)

변경 전후에 SIP 구성을 확인해 의도대로 구성되었는지 확인하는 것을 권장합니다.

Amazon EC2 Mac 인스턴스의 SIP 구성을 확인하려면

SSH로 인스턴스에 연결한 뒤 명령줄에서 다음 명령을 실행해요.

$ csrutil status

다음은 예시 출력이에요.

System Integrity Protection status: enabled.

Configuration:
    Apple Internal: enabled
    Kext Signing: disabled
    Filesystem Protections: enabled
    Debugging Restrictions: enabled
    DTrace Restrictions: enabled
    NVRAM Protections: enabled
    BaseSystem Verification: disabled

Apple silicon Mac 인스턴스의 사전 요구사항 (Prerequisites for Apple silicon Mac instances)

Apple silicon Mac 인스턴스의 SIP 설정을 구성하려면 먼저 Amazon EBS 루트 볼륨 관리 사용자(ec2-user)의 암호를 설정하고 보안 토큰(secure token)을 활성화해야 해요.

Note
암호와 보안 토큰은 Apple silicon Mac 인스턴스에 GUI로 처음 연결할 때 설정됩니다. 이전에 GUI로 인스턴스에 연결했다면, 또는 x86 Mac 인스턴스를 사용한다면 이 단계를 수행할 필요가 없어요.

Note
macOS 인증에 사용되는 모든 macOS 사용자 이름과 암호는 SIP 설정 API 호출에 사용하려면 4~16자 사이여야 해요.

EBS 루트 볼륨 관리 사용자의 암호를 설정하고 보안 토큰을 활성화하려면

  1. SSH로 인스턴스에 연결해요.
  2. ec2-user 사용자의 암호를 설정해요.
$ sudo /usr/bin/dscl . -passwd /Users/ec2-user
  1. ec2-user 사용자의 보안 토큰을 활성화해요. -oldPassword에는 이전 단계와 같은 암호를, -newPassword에는 다른 암호를 지정해요. 다음 명령은 이전/새 암호를 .txt 파일에 저장했다고 가정합니다.
$ sysadminctl -oldPassword `cat old_password.txt` -newPassword `cat new_password.txt`
  1. 보안 토큰이 활성화되었는지 확인해요.
$ sysadminctl -secureTokenStatus ec2-user

SIP 설정 구성하기 (Configure SIP settings)

인스턴스의 SIP 설정을 구성할 때 모든 SIP 설정을 활성화하거나 비활성화할 수도 있고, 특정 설정만 선택적으로 활성화/비활성화하는 사용자 지정 구성을 지정할 수도 있어요.

Note
사용자 지정 구성을 구현했다면 인스턴스에 연결해 설정을 확인해 요구사항이 제대로 구현되고 의도대로 동작하는지 확인하세요. SIP 구성은 macOS 업데이트에 따라 바뀔 수 있어요. macOS 버전 업그레이드 후에는 사용자 지정 SIP 설정을 검토해 보안 구성의 지속적인 호환성과 기능을 확인하는 것을 권장합니다.

인스턴스의 SIP 설정을 구성하려면 **SIP 구성 작업(task)**을 만들어야 해요. SIP 구성 작업은 인스턴스의 SIP 설정을 지정합니다.

Apple silicon Mac 인스턴스에 SIP 구성을 만들 때는 다음 자격 증명(credentials)을 지정해야 해요.

  • Username – 기본 관리 사용자(aws-managed-user)만 지원되며 기본값으로 사용돼요. 다른 관리 사용자는 지정할 수 없어요.
  • Password – aws-managed-user의 기본 암호를 변경하지 않았다면 기본 암호(빈 값)를 지정하고, 변경했다면 내 암호를 지정해요.

반면 x86 Mac 인스턴스에서는:

  • Username – 기본 관리 사용자를 변경하지 않았다면 ec2-user를, 변경했다면 관리 사용자의 이름을 지정해요.
  • Password – 항상 암호를 지정해야 해요.

다음 방법들로 SIP 구성 작업을 만들 수 있어요.

콘솔 (Console)

콘솔로 SIP 구성 작업을 만들려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 탐색 패널에서 Instances를 선택한 뒤 Amazon EC2 Mac 인스턴스를 선택해요.
  3. Security 탭에서 Modify Mac, Modify System Integrity Protection을 선택해요.
  4. 모든 SIP 설정을 활성화하려면 Enable SIP를 선택하고, 모두 비활성화하려면 Enable SIP를 선택 해제해요.
  5. 특정 SIP 설정만 선택적으로 활성화/비활성화하는 사용자 지정 구성을 지정하려면 Specify a custom SIP configuration을 선택한 뒤 활성화할 SIP 설정을 선택하거나, 비활성화할 SIP 설정을 선택 해제해요.
  6. 루트 볼륨 사용자와 내부 디스크 소유자의 자격 증명을 지정해요.
  7. Create SIP modification task를 선택해요.

AWS CLI

AWS CLI로 SIP 구성 작업을 만들려면

create-mac-system-integrity-protection-modification-task 명령을 사용해요.

모든 SIP 설정 활성화 또는 비활성화

모든 SIP 설정을 완전히 활성화하거나 비활성화하려면 --mac-system-integrity-protection-status 파라미터만 사용해요. 다음 예시 명령은 모든 SIP 설정을 활성화합니다.

aws ec2 create-mac-system-integrity-protection-modification-task \
--instance-id i-0abcdef9876543210 \
--mac-system-integrity-protection-status enabled \
--mac-credentials file://mac-credentials.json

사용자 지정 SIP 구성 지정

특정 SIP 설정만 선택적으로 활성화/비활성화하는 사용자 지정 구성을 지정하려면 --mac-system-integrity-protection-status와 --mac-system-integrity-protection-configuration 파라미터를 지정해요. 이 경우 mac-system-integrity-protection-status로 전체 SIP 상태를 지정하고, mac-system-integrity-protection-configuration으로 개별 SIP 설정을 선택적으로 활성화/비활성화합니다.

다음 예시 명령은 NvramProtections와 FilesystemProtections를 제외한 모든 SIP 설정을 활성화하는 SIP 구성 작업을 만듭니다.

aws ec2 create-mac-system-integrity-protection-modification-task \
--instance-id i-0abcdef9876543210 \
--mac-system-integrity-protection-status enabled \
--mac-system-integrity-protection-configuration "NvramProtections=disabled, FilesystemProtections=disabled" \
--mac-credentials file://mac-credentials.json

다음 예시 명령은 DtraceRestrictions를 제외한 모든 SIP 설정을 비활성화하는 SIP 구성 작업을 만듭니다.

aws ec2 create-mac-system-integrity-protection-modification-task \
--instance-id i-0abcdef9876543210 \
--mac-system-integrity-protection-status disabled \
--mac-system-integrity-protection-configuration "DtraceRestrictions=enabled" \
--mac-credentials file://mac-credentials.json

mac-credentials.json 파일 내용

앞선 예시들에서 참조한 mac-credentials.json 파일의 내용은 다음과 같아요.

{
  "internalDiskPassword":"internal-disk-admin_password",
  "rootVolumeUsername":"root-volume-admin_username",
  "rootVolumePassword":"root-volume-admin_password"
}

SIP 구성 작업 상태 확인하기 (Check SIP configuration task status)

다음 방법 중 하나로 SIP 구성 작업의 상태를 확인할 수 있어요.

콘솔 (Console)

콘솔로 SIP 구성 작업을 보려면

  1. Amazon EC2 콘솔을 엽니다: https://console.aws.amazon.com/ec2/
  2. 탐색 패널에서 Instances를 선택한 뒤 Amazon EC2 Mac 인스턴스를 선택해요.
  3. Security 탭에서 Mac modification tasks 섹션까지 아래로 스크롤해요.

AWS CLI

AWS CLI로 SIP 구성 작업의 상태를 확인하려면

describe-mac-modification-tasks 명령을 사용해요.

더 알아보기 (Learn more)