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

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

사용자가 실행하는 응용 프로그램 잠금

사용자는 확장 권한 정책을 사용하여 응용 프로그램에서 기본 권한을 제거할 수 있습니다. 정책은 응용 프로그램이 액세스하면 안되는 디렉토리에 대한 액세스를 금지합니다.


주 -  순서가 중요합니다. 대부분의 $HOME/.* 디렉토리에 대해 보다 제한적인 권한을 지정한 후 $HOME/Download* 등의 디렉토리에 대해 보다 광범위한 권한을 지정해야 합니다.
예 4-4  보호된 환경에서 브라우저 실행

이 예에서는 사용자가 보호된 환경에서 Firefox 브라우저를 실행할 수 있는 방법을 보여줍니다. 이 구성에서는 사용자의 Documents 디렉토리가 Firefox에서 숨겨집니다.

사용자는 다음 명령을 사용하여 /usr/bin/firefox 명령에서 기본 권한을 제거합니다. ppriv -r 명령에 대한 확장 권한 인수는 브라우저에서 사용자가 지정한 디렉토리만 읽고 쓸 수 있도록 제한합니다. –e 옵션 및 해당 인수는 확장 권한 정책으로 브라우저를 엽니다.

% ppriv -r "\
{file_read}:/dev/*,\
{file_read}:/etc/*,\
{file_read}:/lib/*,\
{file_read}:/usr/*,\
{file_read}:/var/*,\
{file_read}:/proc,\
{file_read}:/proc/*,\
{file_read}:/system/volatile/*,\
{file_write}:$HOME,\
{file_read}:$HOME/.*,\
{file_read,file_write}:$HOME/.mozill*,\
{file_read,file_write}:$HOME/.gnome*,\
{file_read,file_write}:$HOME/Downloa*,\
{file_read,file_write}:/tmp,\
{file_read,file_write}:/tmp/*,\
{file_read,file_write}:/var/tmp,\
{file_read,file_write}:/var/tmp/*,\
{proc_exec}:/usr/*\
" -e /usr/bin/firefox file:///$HOME/Desktop

확장 정책에서 file_readfile_write 권한이 사용되는 경우 읽거나 써야 하는 모든 파일에 대한 명시적 액세스를 부여해야 합니다. 이러한 정책에는 와일드카드 문자 *를 사용해야 합니다.

자동 마운트된 홈 디렉토리를 처리하기 위해 사용자가 자동 마운트 경로에 대한 명시적 항목을 추가합니다. 예를 들면 다음과 같습니다.

{file_read,file_write}:/export/home/$USER

사이트에서 automount 기능을 사용하지 않는 경우 보호된 디렉토리의 초기 목록이면 충분합니다.

사용자는 셸 스크립트를 만들어 이 명령줄로 보호된 브라우저를 자동 마운트할 수 있습니다. 그런 다음 브라우저를 실행하기 위해 사용자는 /usr/bin/firefox 명령이 아니라 스크립트를 호출합니다.

예 4-5  응용 프로그램 프로세스에서 시스템의 디렉토리 보호

이 예에서는 일반 사용자가 셸 스크립트 래퍼를 사용하여 응용 프로그램에 대한 sandbox를 만듭니다. 스크립트의 첫번째 부분은 응용 프로그램을 특정 디렉토리로 제한합니다. Firefox 등의 예외는 스크립트의 뒷부분에서 처리됩니다. 스크립트 뒤에는 스크립트 요소에 대한 설명이 나옵니다.

1 #!/bin/bash
2 
3 # Using bash because ksh misinterprets extended policy syntax
4 
5 PATH=/usr/bin:/usr/sbin:/usr/gnu/bin
6 
7 DENY=file_read,file_write,proc_exec,proc_info
8 
9 SANDBOX="\
10 {file_read}:/dev/*,\
11 {file_read}:/etc/*,\
12 {file_read}:/lib/*,\
13 {file_read,file_write}:/usr/*,\
14 {file_read}:/proc,\
15 {file_read,file_write}:/proc/*,\
16 {file_read}:/system/volatile/*,\
17 {file_read,file_write}:/tmp,\
18 {file_read,file_write}:/tmp/*,\
19 {file_read,file_write}:/var/*,\
20 {file_write}:$HOME,\
21 {file_read}:$HOME/.*,\
22 {file_read,file_write}:$PWD,\
23 {file_read,file_write}:$PWD/*,\
24 {proc_exec}:/usr/*\
25 "
26 
27 # Default program is restricted bash shell
28 
29 if [[ ! -n $1 ]]; then
30     program="/usr/bin/bash --login --noprofile
        --restricted"
31 else
32     program="$@"
33 fi
34 
35 
36 # Firefox needs more file and network access
37 if [[ "$program" =~ firefox ]]; then
38     SANDBOX+=",\
39 {file_read,file_write}:$HOME/.gnome*,\
40 {file_read,file_write}:$HOME/.mozill*,\
41 {file_read,file_write}:$HOME/.dbu*,\
42 {file_read,file_write}:$HOME/.puls*\
43 "
44 
45 else
46     DENY+=",net_access"
47 fi
48 
49 echo Starting $program in sandbox
50 ppriv -s I-$DENY -r $SANDBOX -De $program

특정 응용 프로그램에 더 많거나 적은 액세스를 허용하도록 정책을 조정할 수 있습니다. 하나의 조정은 라인 38-42에 있으며, 사용자의 홈 디렉토리에서 세션 정보를 유지 관리하는 여러 dot 파일에 대한 쓰기 액세스가 Firefox에 부여됩니다. 또한 Firefox에는 네트워크 액세스를 제거하는 라인 46이 적용되지 않습니다. 그러나 Firefox는 사용자의 홈 디렉토리에서 임의 파일을 읽을 수 없도록 제한되며 현재 디렉토리에만 파일을 저장할 수 있습니다.

추가 레벨의 보호를 위해 라인 30의 기본 프로그램은 제한된 Bash 셸입니다. 제한된 셸은 현재 디렉토리를 변경하거나 사용자의 dot 파일을 실행할 수 없습니다. 따라서 이 셸에서 시작된 모든 명령은 유사하게 sandbox에 잠깁니다.

스크립트의 최종 라인에서는 ppriv 명령에 $DENY$SANDBOX의 권한 세트 2개가 셸 변수로 전달됩니다.

첫번째 세트인 $DENY는 프로세스에서 파일 읽기 또는 쓰기, 하위 프로세스 실행, 다른 사용자의 프로세스 관찰 및 (조건부) 네트워크 액세스를 수행하지 못하도록 금지합니다. 이러한 제한은 너무 엄격하므로 두번째 세트인 $SANDBOX에서 읽고 쓰고 실행할 수 있는 디렉토리를 열거하여 정책을 세분화합니다.

또한 라인 50에서 디버그 옵션 –D가 지정됩니다. 액세스 실패는 터미널 창에 실시간으로 표시되며 명명된 객체 및 성공에 필요한 해당 권한을 포함합니다. 이 디버깅 정보는 사용자가 다른 응용 프로그램에 대한 정책을 사용자 정의하는 데 유용할 수 있습니다.