Oracle® Solaris 11.2의 사용자 및 프로세스 보안

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

권한으로 커널 프로세스 보호

권한(privilege)은 프로세스에서 작업을 수행하는 데 필요한 권한(right)입니다. 권한은 커널에서 시행됩니다. 권한의 기본 세트의 한도 내에서 운영되는 프로그램은 시스템 보안 정책의 한도 내에서 운영됩니다. 시스템 보안 정책의 한도 밖에서 운영되는 프로그램의 예로 setuid root 프로그램이 있습니다. 권한을 사용할 경우 프로그램이 setuid root를 호출할 필요가 없습니다.

권한은 시스템에서 가능한 작업 종류를 열거합니다. 정확히 프로그램 성공을 위해 필요한 권한만으로 프로그램을 실행할 수 있습니다. 예를 들어, 파일을 조작하는 프로그램에 file_dac_write 및 file_flag_set 권한이 필요할 수 있습니다. 프로세스에 대한 이러한 권한으로 인해 프로그램을 root로 실행할 필요가 없습니다.

이전에는 시스템이 사용자 및 프로세스 권한의 기본 사항에 소개된 대로 privilege model(권한 모델) 또는 권한(right) 모델을 따르지 않았습니다. 오히려 수퍼유저 모델을 사용했습니다. 수퍼 유저 모델에서는 프로세스가 root 또는 사용자로 실행되었습니다. 사용자 프로세스는 사용자의 디렉토리와 파일에서 작동하도록 제한되었습니다. root 프로세스는 시스템의 어디든지 디렉토리 및 파일을 만들 수 있습니다. 사용자의 디렉토리 밖에 디렉토리를 만들어야 하는 프로세스는 UID=0, 즉 root로 실행됩니다. 시스템 파일을 보호하기 위해 보안 정책이 DAC(임의 액세스 제어)에 의존했습니다. 장치 노드가 DAC로 보호되었습니다. 예를 들어, sys 그룹이 소유한 장치는 해당 그룹의 구성원만 열 수 있었습니다.

그러나 setuid 프로그램, 파일 사용 권한 및 관리 계정은 오용되기 쉽습니다. setuid 프로세스가 허가한 동작이 작업 완료를 위해 필요한 것보다 훨씬 많습니다. 그러면 전권의 root 사용자로 실행된 침입자에 의해 setuid root 프로그램이 손상될 수 있습니다. 마찬가지로, root 암호에 액세스할 수 있는 사용자가 전체 시스템을 손상시킬 수 있습니다.

이와 반대로, 권한(privilege)으로 정책을 적용하는 시스템은 사용자 권한(right)과 root 권한(right) 사이에 단계적 등급을 허용합니다. 일반 사용자 권한을 벗어난 작업을 수행하는 권한을 사용자에게 부여할 수 있고, root가 현재 보유한 권한보다 적은 권한으로 root를 제한할 수 있습니다. 권한(right)을 사용하여 권한(privilege)으로 실행되는 명령을 권한 프로파일에 격리하고 하나의 사용자나 역할에 지정할 수 있습니다. Table 1–1에는 권한(right) 모델이 제공하는 사용자 권한(right)과 root 권한(privilege) 사이의 단계적 등급이 요약되어 있습니다.

권한(right) 모델이 수퍼 유저 모델보다 훨씬 안전합니다. 프로세스에서 제거된 권한은 악용될 수 없습니다. 액세스에 악용될 수 있는 DAC 보호와 달리 프로세스 권한(privilege)은 중요한 파일 및 장치에 추가 보호 조치를 제공할 수 있습니다.

그런 다음 권한(privilege)은 프로그램 및 프로세스를 프로그램에 필요한 권한(right)만으로 제한할 수 있습니다. 최소 권한을 구현하는 시스템에서는 프로세스를 탈취하는 침입자가 프로세스가 가진 권한에만 액세스할 수 있습니다. 시스템의 나머지는 손상될 수 없습니다.