추천팁

OS X 10.11 엘 캐피탄에 도입된 새로운 보안체계 '루트리스(Rootless)'를 끄고 켜는 방법

ONE™ 2015. 9. 12. 04:35

업데이트 (2015/12): OS X 엘 캐피탄이 업데이트 되면서 csrutil status 명령어와 관련해 변경사항이 있었습니다.

이번 WWDC가 개최되기 전부터 새로운 보안 기능이 애플의 두 운영체제에 도입될 것이라는 얘기가 돌았습니다.

정확하게는 '루트리스(Rootless)'라는 기능이며 '9to5mac'발 소식이었죠. 이번에 OS X 엘 캐피탄 베타 버전이 나오면서 루트리스가 운영체제 안에서 어떤 역할을 하는지 윤곽이 확실히 드러났습니다.

루트리스는 사용자나 일개 응용 프로그램이 시스템 파일을 삭제하거나 변조할 수 없도록 '커널 레벨'에서 파일을 잠그는 아주 강력한 보안 기능입니다. OS X 10.11 엘 캐피탄과 iOS 9은 이 보안 기능이 기본적으로 활성화 되어 있으며 사용자가 관리자 권한을 가지고 있더라도 시스템 파일을 마음대로 건드릴 수 없도록 차단하는 기능을 담당합니다.

Rootless가 보호하는 시스템 파일

루트리스가 보호하는 영역(System only)은 아래와 같습니다. 모두 시스템 구동과 운영에 핵심적인 역할을 하는 파일이 보관되어 있는 장소입니다. ▼

Rootless 활성화 상태

Rootless가 켜져 있을 때 해당 폴더에 새로운 하위 폴더나 파일을 만들려고 하면, 관리자 암호를 입력하더라도 'Operation not permitted'라는 경고문을 띄우며 작업을 거부합니다. 이처럼 Root로도 시스템 파일에 접근할 수 없어서 Root'less'라고 이름을 지었나 봅니다. ▼

사실 사용자 입장에서 루트리스의 존재는 양면의 동전과도 같습니다.

시스템으로 유입된 악성코드가 중요한 파일을 위∙변조 하는 것을 원천적으로 방지해 주는 매우 효과적인 방어체제이지만, 시스템을 자신의 입맛에 맞게 바꿔서 사용하거나 패러렐즈나 VMWare 같이 운영체제와 아주 밀접하게 연동되는 소프트웨어의 기능을 제한하는 일종의 폐단으로 작용할 수 있습니다. 또 /usr 폴더에 설치되는 홈브류(Homebrew)나 맥포트(MacPort) 같은 패키지 관리 프로그램을 쓰는 분들에게도 큰 골칫거리입니다. 또 그동안 백투더맥을 통해 소개해 드린 여러 터미널 명령어도 새 OS X에서는 작동하지 않을 가능성이 매우 높습니다.

일반 사용자에게는 든든한 파수꾼이 생긴 셈이며 고급 사용자나 개발자에게는 방해꾼이 나타난 셈이라 새 보안 기능이 좋다 나쁘다 한쪽으로 단정지을 수는 없습니다. 아무튼 앞서 전해드린 사파리 확장 프로그램 소식과 마찬가지로 애플은 소프트웨어의 기능성이나 개발자들의 자율성보다는 운영체제의 보안성을 강화하는 쪽으로 방향을 잡고 있는 듯합니다.

Rootless를 비활성화 시키는 방법

다행인 점은 사용자의 선택과 필요에 따라 루트리스를 강제로 끌 수 있다는 것입니다.

마치 서드파티 SSD를 탑재한 맥에서 TRIM을 켜거나 연속성 활성화 도구를 사용할 때처럼 NVRAM에 특별한 플래그를 달아주어야 하는데요. 터미널 실행 후 다음과 콘솔에 다음과 같은 명령어를 입력하고 맥을 다시 시작하면 루트리스가 비활성화 됩니다. 이 방법은 더는 적용할 수 없습니다.

■ Rootless를 비활성화 시키는 명령어

sudo nvram boot-args="rootless=0";sudo reboot

■ 시스템 기본 상태로 복구하는 명령어

sudo nvram -d boot-args

업데이트: 이제 시스템 보호 기능은 OS X 복구 모드를 통해서만 끄거나 켤 수 있습니다.

1. 맥을 시동할 때, 애플 로고가 나타나기 전에 option 키를 누른 후 복구 파티션을 선택하면 로컬 복구 시스템이 시작합니다. 또는 command 키와 R 키를 길게 누르면 파티션 선택 화면을 건너띄고 곧바로 로컬 복구 시스템을 시작합니다. ▼

2. 복구 모드로 진입하면 메뉴 막대 ▶︎ 유틸리티에서 '터미널'을 클릭합니다. ▼

3. 터미널이 열리면 다음 명령어를 입력해 시스템 보안 기능을 비활성화하세요. ▼

csrutil disable --without debug

4. 나중에 설정을 원래대로 복구하고 싶다면 위와 같은 방법으로 터미널로 진입한 뒤 아래 명령어를 입력합니다.

csrutil enable

Rootless가 꺼져 있을 때

루트리스가 비활성화 되면 앞서 나열한 세 시스템 폴더에 대한 완벽한 제어가 가능해집니다. 

다만 TRIM 활성화 명령어와 마찬가지로, OS X 업데이트을 업데이트하거나 NVRAM을 초기화 하면서 루트리스가 다시 작동할 수 있다는 점 유념하시기 바랍니다. 이에 따라 다양한 오류나 문제가 발생할 수 있으니 일반 사용자는 가급적 루트리스에 손을 대지 않는 편이 좋습니다. ▼

루트리스가 켜져 있는지 여부는 터미널 명령어로 확인할 수 있습니다. 

응용 프로그램 ▶︎ 유틸리티 폴더에 있는 '터미널' 실행 후 'csrutil status' 명령어를 입력합니다. 루트리스가 비활성화되어 있으면 Configuration 아래 모든 항목이 'disabled'로 표시됩니다. ▼

 업데이트 2015년 12월  : OS X 엘 캐피탄 10.11.2 버전 부터는 위와 같이 항목별 정보를 보여주지 않고, 단 한 줄로 비활성화 여부를 표시합니다. ▼



참조
Pointless Ramblings - El Capitan for developers
9to5mac - iOS 9 & OS X 10.11 to bring ‘quality’ focus, smaller apps, Rootless security

관련 글
새 OS X과 iOS, 기능 추가보다 유지보수에 총력
애플, 사파리 익스텐션 갤러리 개편 예고... 개발자 프로그램 유료화 및 사전 심사제도 시행
잘 알려지지 않은 OS X 보안 체계의 한 기둥 'XProtect'
OS X 요세미티부터는 kext 변경에 서명이 필요하다?