2015년 6월 12일 금요일

OS X 10.11 앨 카피탠에 도입된 새로운 보안체계 '루트리스(Rootless)'에 관하여

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

정확하게는 '루트리스(Rootless)'라는 기능이며 '9to5mac'발 소식이었죠. 이번에 OS X 엘 카피탠 베타 버전이 나오면서 루트리스가 운영체제 안에서 어떤 역할을 하는지 윤곽이 확실히 드러났습니다. 루트리스는 사용자나 일개 응용 프로그램이 시스템 파일을 삭제하거나 변조할 수 없도록 '커널 레벨'에서 파일을 잠그는 아주 강력한 보안 기능입니다. OS X 10.11 엘 카피탠과 iOS 9은 이 보안 기능이 기본적으로 활성화 되어 있으며 사용자가 관리자 권한을 가지고 있더라도 시스템 파일을 마음대로 건드릴 수 없도록 차단하는 기능을 담당합니다.

Rootless가 보호하는 시스템 파일

루트리스가 보호하는 영역은 아래 나열한 세 폴더입니다. 모두 시스템 구동과 운영에 핵심적인 역할을 하는 파일이 보관되어 있는 장소입니다.

∙ /usr
∙ /sbin
∙ /System

Rootless 활성화 상태

Rootless가 켜져 있을 때 해당 폴더에 새로운 하위 폴더나 파일을 만들려고 하면, 관리자 암호를 입력하더라도 'Operation not permitted'라는 경고문을 띄우며 작업을 거부합니다. ▼

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

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

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

Rootless를 비활성화 시키는 방법

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

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

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

sudo nvram boot-args=“rootless=0”

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

sudo nvram -d boot-args

Rootelss가 꺼져 있을 때

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



참조
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'

저작자 표시 비영리 변경 금지


from Back to the Mac http://ift.tt/1FOQG4j
via IFTTT