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

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

사용자 권한 제한

이 절의 예에서는 일반 사용자의 권한을 제한하거나 관리자에서 일부 관리 권한을 제거합니다. 이 예에서는 사용자, 역할 및 권한 프로파일을 수정하는 방법을 보여줍니다. 권한에 대한 자세한 내용은 Chapter 1, 권한을 사용하여 사용자 및 프로세스 제어 정보를 참조하십시오.

예 3-21  사용자의 제한 세트에서 권한 제거

다음 예에서 jdoe의 초기 로그인에서 시작된 모든 세션은 sys_linkdir 권한을 사용하지 못하도록 금지됩니다. 사용자는 su 명령을 실행한 후에도 디렉토리에 하드 링크를 만들거나 디렉토리 링크를 해제할 수 없습니다.

# usermod -K 'limitpriv=all,!sys_linkdir' jdoe
# userattr limitpriv jdoe
all,!sys_linkdir
예 3-22  권한 프로파일에서 기본 권한 제거

다음 예제에서는 철저한 테스트를 거친 후 보안 관리자가 Sun Ray Users 권한 프로파일에서 다른 기본 권한을 제거합니다. 관리자가 Example 5–6에서 프로파일을 만든 경우 제한 세트에서 권한 1개를 제거했습니다. 이번에는 기본 권한 2개를 제거합니다. 이 프로파일이 지정된 사용자는 자신의 현재 세션 외부의 프로세스를 검사할 수 없으며 다른 세션을 추가할 수 없습니다.

# profiles -p "Sun Ray Users"
profiles:Sun Ray Users> set defaultpriv="basic,!proc_session,!proc_info"
profiles:Sun Ray Users> end
profiles:Sun Ray Users> exit
예 3-23  자신에서 기본 권한 제거

다음 예에서는 일반 사용자가 .bash_profile을 수정하여 proc_info 기본 권한을 제거합니다. ps, prstat 등의 프로그램 출력에는 사용자의 고유한 프로세스만 포함되며 유용한 정보를 강조할 수 있습니다.

##  .bash_profile
## Remove proc_info privilege from my shell
##
ppriv -s EI-proc_info $$

ppriv 라인은 현재 셸 프로세스($$)에서 사용자의 유효 및 상속 가능한 권한 세트(EI-)에 있는 proc_info 권한을 제거합니다.

다음 prstat 출력에서는 합계가 74개에서 3개 프로세스로 감소합니다.

## With all basic privileges
Total: 74 processes, 527 lwps, load averages: 0.01, 0.00, 0.00

## With proc_info removed from the effective and inheritable set
Total: 3 processes, 3 lwps, load averages: 0.00, 0.00, 0.00
예 3-24  사용자에 제공되는 권한을 제한하도록 시스템 수정

이 예에서 관리자가 네트워크 관리에만 사용되는 시스템을 만듭니다. 관리자가 Basic Solaris User 권한 프로파일과 모든 권한 부여를 policy.conf 파일에서 제거합니다. Console User 권한 프로파일은 제거되지 않습니다. policy.conf 결과 파일에서 영향을 받는 라인은 다음과 같습니다.

...
##AUTHS_GRANTED=
##AUTH_PROFS_GRANTED=
##PROFS_GRANTED=Basic Solaris User
CONSOLE_USER=Console User
...

권한 부여, 명령, 권한 프로파일이 명시적으로 지정된 사용자만 이 시스템을 사용할 수 있습니다. 로그인 후에 권한이 부여된 사용자가 관리 업무를 수행할 수 있습니다. 권한이 부여된 사용자가 시스템 콘솔 앞에 앉으면 Console User의 권한을 갖습니다.

예 3-25  관리자를 명시적으로 지정된 권한으로 제한

    다음 두 가지 방법으로 역할이나 사용자를 제한된 수의 관리 작업으로 제한할 수 있습니다.

  • Stop 권한 프로파일을 사용자 프로파일 목록의 마지막 프로파일로 지정합니다.

    Stop 권한 프로파일은 제한된 셸을 만드는 가장 간단한 방법입니다. policy.conf 파일의 권한 부여 및 권한 프로파일은 사용자나 역할에 지정되지 않습니다.

  • 시스템에서 policy.conf 파일을 수정하고 역할이나 사용자가 관리 작업에 해당 시스템을 사용하도록 요구합니다. Example 3–24를 참조하십시오.

다음 명령은 감사 검토만 수행하도록 auditrev 역할을 제한합니다.

# rolemod -P "Audit Review,Stop" auditrev

auditrev 역할에 Console User 권한 프로파일이 없기 때문에 감사자가 시스템을 종료할 수 없습니다. 이 역할에 solaris.device.cdrw 권한 부여가 없기 때문에 감사자가 CD-ROM 드라이브에서 읽기/쓰기를 수행할 수 없습니다. 이 역할에 Basic Solaris User 권한 프로파일이 없기 때문에 이 역할에서 해당 프로파일의 명령을 실행할 수 없습니다. All 권한 프로파일은 지정되지 않았으므로 ls 명령이 실행되지 않습니다. 역할은 File Browser(파일 브라우저)를 사용하여 검토할 감사 파일을 선택합니다.

자세한 내용은 지정된 권한 검색 순서권한 프로파일 참조를 참조하십시오.

예 3-26  선택한 응용 프로그램이 새 프로세스를 생성하지 못하도록 금지

이 예에서 관리자는 올바른 작업을 위해 하위 프로세스가 필요 없는 응용 프로그램에 대한 권한 프로파일을 만듭니다. 편의상 관리자는 이러한 실행 파일을 저장할 디렉토리를 만듭니다. 하위 프로세스가 필요 없는 새 응용 프로그램이 추가되면 이 디렉토리에 실행 파일이 추가될 수 있습니다. 또는 실행 파일이 특정 디렉토리에 있어야 하는 경우 관리자가 /opt/local/noex/app-executable에서 파일에 연결할 수 있습니다.

# profiles -p "Prevent App Subprocess"
profiles:Prevent App Subprocess> set desc="Keep apps from execing processes"
profiles:Prevent App Subprocess> add cmd=/opt/local/noex/mkmod
... Subprocess:mkmod> set limitprivs=all,!proc_exec
... Subprocess:mkmod> end
... Subprocess> add cmd=/opt/local/noex/gomap
... Subprocess:gomap> set limitprivs=all,!proc_exec
... Subprocess:gomap> end
... Subprocess> commit
... Subprocess> exit
예 3-27  게스트가 편집기 하위 프로세스를 생성하지 못하도록 금지

이 예에서는 관리자가 편집기 명령에서 proc_exec 기본 권한을 제거하여 사용자가 하나 이상의 편집기에서 하위 셸을 만들지 못하도록 금지합니다.

  1. vim 편집기의 제한 권한(privilege) 세트에서 proc_exec를 제거하는 권한(right) 프로파일을 만듭니다.

    # profiles -p -S ldap "Editor Restrictions"
    profiles:Editor Restrictions> set desc="Site Editor Restrictions"
    ... Restrictions> add cmd=/usr/bin/vim
    ... Restrictions:vim> set limitprivs=all,!proc_exec
    ... Restrictions:vim> end
    ... Restrictions> commit
    ... Restrictions> exit
  2. 또한 널리 사용되는 다른 편집기를 권한 프로파일에 추가합니다.

    # profiles -p "Editor Restrictions"
    profiles:Editor Restrictions> add cmd=/usr/bin/gedit
    ... Restrictions:gedit> set limitprivs=all,!proc_exec
    ... Restrictions:gedit> end
    ... Restrictions> add cmd=/usr/bin/gconf-editor
    ... Restrictions:gconf-editor> set limitprivs=all,!proc_exec
    ... Restrictions:gconf-editor> end
    ... Restrictions> add cmd=/usr/bin/ed
    ... Restrictions:ed> set limitprivs=all,!proc_exec
    ... Restrictions:ed> end
    ... Restrictions> add cmd=/usr/bin/ex
    ... Restrictions:ex> set limitprivs=all,!proc_exec
    ... Restrictions:ex> end
    ... Restrictions> add cmd=/usr/bin/edit
    ... Restrictions:edit> set limitprivs=all,!proc_exec
    ... Restrictions:edit> end
    ... Restrictions> commit
    ... Restrictions> exit
  3. 권한 프로파일 항목에서 오타 오류, 생략, 반복 등의 오류를 검토합니다.

    # profiles -p "Editor Restrictions" info
    Found profile in files repository.
    name=Editor Restrictions
    desc=Site Editor Restrictions
    cmd=/usr/bin/vim
    limitprivs=all,!proc_exec
    ...
  4. guest 사용자에게 Editor Restrictions 권한 프로파일을 지정합니다.

    # usermod -K profiles+="Editor Restrictions" guest

    profiles+를 사용하여 계정의 현재 권한 프로파일에 이 권한 프로파일을 추가합니다.

  5. 편집기 권한이 제한되었는지 확인하기 위해 관리자가 편집기를 열고 새 창에서 편집기 프로세스에 대한 권한을 검사합니다.

    # ppriv -S $(pgrep vi)
    2805:   vi .bash_profile
    flags = PRIV_PFEXEC User is running a profile shell
            E: basic,!proc_info proc_info is removed from basic set
            I: basic,!proc_info
            P: basic,!proc_info
            L: all,!proc_exec proc_exec is removed from limit set
예 3-28  모든 사용자에게 Editor Restrictions 권한 프로파일 지정

이 예에서는 관리자가 policy.conf 파일에 Editor Restrictions 권한 프로파일을 추가합니다. 관리자는 게스트가 로그인할 수 있는 모든 공용 시스템에 이 파일이 배포되도록 합니다.

# cd /etc/security; cp policy.conf policy.conf.orig
# pfedit /etc/security/policy.conf
...
AUTHS_GRANTED=
AUTH_PROFS_GRANTED=
#PROFS_GRANTED=Basic Solaris User
PROFS_GRANTED=Editor Restrictions,Basic Solaris User

User Security 관리자가 모든 사용자에게 프로파일 셸을 지정했습니다. 이유 및 절차는 사용자에게 권한 지정을 참조하십시오.