JavaScript is required to for searching.
탐색 링크 건너뛰기
인쇄 보기 종료
Oracle Solaris 11.1 관리: 보안 서비스     Oracle Solaris 11.1 Information Library (한국어)
search filter icon
search icon

문서 정보

머리말

제1부보안 개요

1.  보안 서비스(개요)

제2부시스템, 파일 및 장치 보안

2.  시스템 보안 관리(개요)

3.  시스템에 대한 액세스 제어(작업)

4.  바이러스 검사 서비스(작업)

5.  장치에 대한 액세스 제어(작업)

6.  BART를 사용하여 파일 무결성 확인(작업)

7.  파일에 대한 액세스 제어(작업)

제3부역할, 권한 프로파일 및 권한

8.  역할 및 권한 사용(개요)

9.  역할 기반 액세스 제어 사용(작업)

RBAC 사용(작업)

RBAC 기본값 보기 및 사용(작업)

RBAC 기본값 보기 및 사용(작업 맵)

모든 정의된 보안 속성을 보는 방법

지정된 권한을 보는 방법

역할을 맡는 방법

사용자의 보안 속성을 변경하는 방법

지정된 관리 권한을 사용하는 방법

사이트에 대해 RBAC 사용자 정의(작업)

RBAC 초기 구성(작업 맵)

RBAC 구현을 계획하는 방법

역할을 만드는 방법

역할을 지정하는 방법

역할을 감사하는 방법

권한 프로파일을 만드는 방법

시스템 권한 프로파일을 복제하고 수정하는 방법

권한 부여를 만드는 방법

RBAC 등록 정보를 레거시 응용 프로그램에 추가하는 방법

RBAC 및 권한 지정 문제를 해결하는 방법

RBAC 관리(작업)

RBAC 관리(작업 맵)

역할의 암호를 변경하는 방법

역할의 보안 속성을 변경하는 방법

지정된 보안 속성의 순서를 다시 조정하는 방법

관리자를 명시적으로 지정된 권한으로 제한하는 방법

사용자가 고유의 암호를 사용하여 역할을 맡도록 설정하는 방법

root 역할을 사용자로 변경하는 방법

권한 사용(작업)

시스템의 권한을 나열하는 방법

직접 지정된 권한을 확인하는 방법

실행할 수 있는 권한 있는 명령을 확인하는 방법

프로세스의 권한을 확인하는 방법

프로그램에 필요한 권한을 확인하는 방법

확장 권한 정책을 포트에 적용하는 방법

권한 있는 명령으로 셸 스크립트를 실행하는 방법

10.  Oracle Solaris의 보안 속성(참조)

제4부암호화 서비스

11.  암호화 프레임워크(개요)

12.  암호화 프레임워크(작업)

13.  키 관리 프레임워크

제5부인증 서비스 및 보안 통신

14.  플러그 가능한 인증 모듈 사용

15.  Secure Shell 사용

16.  Secure Shell(참조)

17.  단순 인증 및 보안 계층 사용

18.  네트워크 서비스 인증(작업)

제6부Kerberos 서비스

19.  Kerberos 서비스 소개

20.  Kerberos 서비스 계획

21.  Kerberos 서비스 구성(작업)

22.  Kerberos 오류 메시지 및 문제 해결

23.  Kerberos 주체 및 정책 관리(작업)

24.  Kerberos 응용 프로그램 사용(작업)

25.  Kerberos 서비스(참조)

제7부Oracle Solaris에서 감사

26.  감사(개요)

27.  감사 계획

28.  감사 관리(작업)

29.  감사(참조)

용어집

색인

권한 사용(작업)

권한을 통해 사용자는 관리 권한으로 특정 작업을 수행할 수 있습니다. 또한 권한을 사용하면 사용자가 수행하도록 허용된 작업으로만 사용자를 제한할 수 있습니다.

다음 작업 맵은 시스템에서 권한 보기, 관리 및 사용을 위한 단계별 지침을 가리킵니다.

작업
설명
수행 방법
정의된 권한을 봅니다.
Oracle Solaris에서 권한 및 해당 정의를 나열합니다.
모든 셸에서 사용자로 권한을 봅니다.
직접 지정된 권한을 보여줍니다. 모든 프로세스가 이러한 권한으로 실행됩니다.
프로파일 셸에서 권한 있는 명령을 봅니다.
사용자가 지정된 권한 프로파일을 통해 실행할 수 있는 권한 있는 명령을 보여줍니다.
응용 프로그램에 대한 공격이 성공한 경우 시스템에 대한 공격자 액세스를 제한합니다.
NTP 포트에 확장 권한 정책을 적용하여 공격으로부터 시스템을 보호합니다.
어떤 권한이 프로세스에 있는지 확인합니다.
프로세스에 대한 유효, 상속 가능한, 허가된, 제한 권한 세트를 나열합니다.
어떤 권한이 프로세스에서 누락되었는지 확인합니다.
실패한 프로세스를 성공하는 데 필요한 권한을 나열합니다.
응용 프로그램에 대한 공격이 성공한 경우 시스템에 대한 공격자 액세스를 제한합니다.
NTP 서비스에 대한 확장 정책을 만듭니다.
명령에 권한을 추가합니다.
권한 프로파일의 명령에 권한을 추가합니다. 사용자 또는 역할을 권한 프로파일에 지정할 수 있습니다. 그런 다음 사용자가 프로파일 셸에서 지정된 권한을 가진 명령을 실행할 수 있습니다.
사용자 또는 역할에 권한을 지정합니다.
사용자나 역할의 상속 가능한 권한 세트를 확장합니다. 이 절차는 주의해서 사용해야 합니다.
사용자의 권한을 제한합니다.
사용자의 기본 권한 세트를 제한합니다. 이 절차는 주의해서 사용해야 합니다.
권한 있는 셸 스크립트를 실행합니다.
셸 스크립트와 셸 스크립트의 명령에 권한을 추가합니다. 그런 다음, 프로파일 셸에서 스크립트를 실행합니다.

시스템의 권한을 나열하는 방법

다음 절차는 권한 이름 및 정의를 보는 방법을 보여줍니다.

직접 지정된 권한을 확인하는 방법

다음 절차는 권한이 직접 지정되었는지 확인하는 방법을 보여줍니다.


주의

주의 - 직접 지정된 권한의 부적절한 사용은 의도하지 않은 보안 침해를 일으킬 수 있습니다. 설명은 보안 속성을 직접 지정할 때 보안 고려 사항을 참조하십시오.


  1. 프로세스가 사용할 수 있는 권한을 나열합니다.

    절차는 프로세스의 권한을 확인하는 방법을 참조하십시오.

  2. 동작을 호출하고 모든 셸에서 명령을 실행합니다.

    유효 세트에 나열된 권한은 세션 전체 동안 유효합니다. 기본 세트와 더불어 권한이 직접 지정된 경우 해당 권한이 유효 세트에 나열됩니다.

예 9-33 사용자 - 직접 지정된 권한 확인

이 예에서는 사용자에게 proc_clock_highres 권한이 직접 지정되므로 사용자가 소유하는 모든 프로세스에서 권한을 사용할 수 있습니다.

% ppriv -v $$
1800:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session
        I: file_link_any,…,proc_clock_highres,proc_session
        P: file_link_any,…,proc_clock_highres,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time
% ppriv -vl proc_clock_highres
        Allows a process to use high resolution timers.

예 9-34 역할 - 직접 지정된 권한 확인

다음 예에서 realtime 역할은 날짜 및 시간 프로그램을 처리하기 위해 권한이 직접 지정되었습니다.

% su - realtime
Password: <Type realtime password>
$ ppriv -v $$
1600:   pfksh
flags = <none>
        E: file_link_any,…,proc_clock_highres,proc_session,sys_time
        I: file_link_any,…,proc_clock_highres,proc_session,sys_time
        P: file_link_any,…,proc_clock_highres,proc_session,sys_time
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time

실행할 수 있는 권한 있는 명령을 확인하는 방법

일반적으로 사용자 및 역할은 권한 프로파일을 통해 권한 있는 명령에 액세스할 수 있습니다. 권한 프로파일의 명령은 프로파일 셸에서 실행해야 합니다.

  1. 지정된 권한 프로파일을 확인합니다.

    다음 예에서는 사용자에게 여러 권한 프로파일이 지정됩니다. 시스템은 권한 프로파일 및 해당 내용을 순서대로 읽습니다. 권한 부여를 제외한 모든 속성에 대해 처음 명시적으로 설정된 속성 값이 사용되는 값입니다. 자세한 내용은 지정된 보안 속성의 검색 순서를 참조하십시오.

    % profiles
    Audit Review
    Console User
    Suspend To RAM
    Suspend To Disk
    Brightness
    CPU Power Management
    Network Autoconf
    Desktop Print Management
    Network Wifi Info
    Desktop Removable Media User
    Basic Solaris User
    All
  2. Audit Review 프로파일에서 권한을 확인합니다.
    profiles -l
    Audit Review
    
      solaris.audit.read
      
      /usr/sbin/auditreduce  euid=0
      /usr/sbin/auditstat    euid=0
      /usr/sbin/praudit      euid=0

    Audit Review 권한 프로파일을 통해 auditreduce, auditstat, praudit 명령을 유효 UID 0으로 실행하고 solaris.audit.read 권한 부여를 지정할 수 있습니다.

예 9-35 역할의 권한 있는 명령 확인

이 예에서 사용자가 지정된 역할을 맡고 권한 프로파일 중 하나에 포함된 명령을 나열합니다.

% roles
devadmin
% su - devadmin
Password: Type devadmin password
$ profiles -l
Device Security
          /usr/bin/kbd        uid=0;gid=sys
          /usr/sbin/add_allocatable    euid=0
          /usr/sbin/add_drv        uid=0
          /usr/sbin/devfsadm        uid=0
          /usr/sbin/eeprom        uid=0
          /usr/sbin/list_devices        euid=0
          /usr/sbin/rem_drv        uid=0
          /usr/sbin/remove_allocatable    euid=0
          /usr/sbin/strace        euid=0
          /usr/sbin/update_drv        uid=0

예 9-36 역할의 권한 있는 명령 실행

이 예에서 admin 역할이 useful.script 파일에 대한 사용 권한을 변경할 수 있습니다.

% whoami
jdoe
% ls -l useful.script
-rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script
% chgrp admin useful.script
chgrp: useful.script: Not owner
% su - admin
Password: <Type admin password>
$ chgrp admin useful.script
$ chown admin useful.script
$ ls -l useful.script
-rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script

프로세스의 권한을 확인하는 방법

이 절차는 프로세스에 사용 가능한 권한을 확인하는 방법을 보여줍니다. 특정 명령에 지정된 권한은 목록에 포함되지 않습니다.

예 9-37 현재 셸의 권한 확인

다음 예에서 사용자의 셸 프로세스에서 부모 프로세스의 권한이 나열됩니다. 두번째 예에서 권한의 전체 이름이 나열됩니다. 출력의 단문자는 다음 권한 세트를 가리킵니다.

E

유효 권한 세트입니다.

I

상속 가능한 권한 세트입니다.

P

허가된 권한 세트입니다.

L

제한 권한 세트입니다.

% ppriv $$
1200:   -csh
flags = <none>
        E: basic
        I: basic
        P: basic
        L: all
% ppriv -v $$
1200:   -csh
flags = <none>
        E: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session
        I: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session
        P: file_link_any,net_access,proc_exec,proc_fork,proc_info,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,sys_time

예 9-38 사용자가 맡을 수 있는 역할의 권한 확인

다음 예에서 sysadmin 역할에 직접 지정된 권한이 없습니다.

% su - sysadmin
Password: <Type sysadmin password>
$ /usr/bin/whoami
sysadmin
$ ppriv -v $$
1400:   pfksh
flags = <none>
        E: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        I: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        P: file_link_any,file_read,file_write,net_access,proc_exec,proc_fork,
           proc_info,proc_session
        L: cpc_cpu,dtrace_kernel,dtrace_proc,dtrace_user,…,win_upgrade_sl

프로그램에 필요한 권한을 확인하는 방법

시작하기 전에

이 디버깅 절차가 작동하려면 명령이나 프로세스를 실패해야 합니다.

  1. ppriv 디버깅 명령의 인수로 실패하는 명령을 입력합니다.
    % ppriv -eD touch /etc/acct/yearly
    touch[5245]: missing privilege "file_dac_write"
         (euid = 130, syscall = 224) needed at zfs_zaccess+0x258
    touch: cannot create /etc/acct/yearly: Permission denied 
  2. /etc/name_to_sysnum 파일에서 syscall 번호를 찾아서 어떤 시스템 호출이 실패하는지 확인합니다.
    % grep 224 /etc/name_to_sysnum
    creat64                 224

예 9-39 truss 명령을 사용하여 권한 사용 조사

truss 명령은 일반 셸에서 권한 사용을 디버그할 수 있습니다. 예를 들어, 다음 명령은 실패하는 touch 프로세스를 디버그합니다.

% truss -t creat touch /etc/acct/yearly
creat64("/etc/acct/yearly", 0666)            
                       Err#13 EACCES [file_dac_write]
touch: /etc/acct/yearly cannot create

확장된 /proc 인터페이스가 truss 출력에 오류 코드 뒤에 누락된 권한을 보고합니다.

예 9-40 ppriv 명령을 사용하여 프로파일 셸의 권한 사용 조사

이 예에서 jdoe 사용자는 objadmin 역할을 맡을 수 있습니다. objadmin 역할에는 Object Access Management 권한 프로파일이 포함됩니다. 이 권한 프로파일을 통해 objadmin 역할은 objadmin이 소유하지 않은 파일에 대한 사용 권한을 변경할 수 있습니다.

다음 발췌 부분에서 jdoeuseful.script 파일에 대한 사용 권한 변경을 실패합니다.

jdoe% ls -l useful.script
-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script
jdoe% chown objadmin useful.script
chown: useful.script: Not owner
jdoe% ppriv -eD chown objadmin useful.script
chown[11444]: missing privilege "file_chown" 
            (euid = 130, syscall = 16) needed at zfs_zaccess+0x258
chown: useful.script: Not owner

jdoeobjadmin 역할을 맡을 때 파일에 대한 사용 권한이 변경됩니다.

jdoe% su - objadmin
Password: <Type objadmin password>
$ ls -l useful.script
-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script
$ chown objadmin useful.script
$ ls -l useful.script
-rw-r--r--  1 objadmin  staff  2303 Apr 10 10:10 useful.script
$ chgrp admin useful.script
$ ls -l objadmin.script
-rw-r--r--  1 objadmin  admin  2303 Apr 10 10:11 useful.script

예 9-41 root 사용자가 소유한 파일 변경

이 예는 권한 에스컬레이션에 대한 보호 조치를 보여줍니다. 설명은 권한 에스컬레이션 금지를 참조하십시오. 파일은 root 사용자가 소유합니다. 비교적 덜 강력한 역할인 objadmin이 파일 소유권을 변경하려면 모든 권한이 필요하므로 작업을 실패합니다.

jdoe% su - objadmin
Password: <Type objadmin password>
$ cd /etc; ls -l system
-rw-r--r--  1 root  sys   1883 Oct 10 10:20 system
$ chown objadmin system
chown: system: Not owner
$ ppriv -eD chown objadmin system
chown[11481]: missing privilege "ALL" 
     (euid = 101, syscall = 16) needed at zfs_zaccess+0x258
chown: system: Not owner

확장 권한 정책을 포트에 적용하는 방법

NTP(Network Time Protocol) 서비스는 udp 트래픽에 대해 권한 있는 포트 123을 사용합니다. 이 절차에서는 이 포트에 지정된 권한을 얻었을 수도 있는 악의적인 사용자가 다른 포트에 액세스하지 못하도록 보호합니다.

  1. 포트에 대한 기본 서비스 매니페스트 항목을 읽습니다.

    다음 /lib/svc/manifest/network/ntp.xml 항목에서 net_privaddr, proc_lock_memorysys_time 권한은 다른 프로세스에서 사용할 수 있습니다.

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    net_privaddr,proc_lock_memory,sys_time'

    제거된 권한은 서비스가 다른 프로세스를 관측하거나 신호를 보낼 수 없도록 방지하고 파일 이름 바꾸기 방식으로 하드 링크를 만들지 못하도록 방지합니다.

    즉, 서비스로 시작된 프로세스는 다른 권한 있는 포트가 아니라 특정 포트인 123에만 바인딩할 수 있습니다. 해커가 서비스를 악용해서 다른 프로세스를 시작할 수 있는 경우 하위 프로세스가 다른 권한 있는 포트에 바인딩할 수 없습니다.

  2. net_privaddr 권한을 이 포트로만 제한합니다.

    다음 요약본에서 강조 표시된 확장 권한 정책은 이 서비스가 다른 권한 있는 포트에 액세스하지 못하도록 방지합니다.

    privileges='basic,!file_link_any,!proc_info,!proc_session,
    {net_privaddr}:123/udp,proc_lock_memory,sys_time'

권한 있는 명령으로 셸 스크립트를 실행하는 방법

권한이 필요한 명령을 실행하는 셸 스크립트를 만들 때 적절한 권한 프로파일에 지정된 권한을 가진 명령을 포함해야 합니다.

시작하기 전에

root 역할을 맡아야 합니다. 자세한 내용은 지정된 관리 권한을 사용하는 방법을 참조하십시오.

  1. 첫번째 라인에서 /bin/pfsh 또는 다른 프로파일 셸로 스크립트를 시작합니다.
    #!/bin/pfsh
    # Copyright (c) 2012 by Oracle
  2. 스크립트의 명령에 필요한 권한을 확인합니다.
    % ppriv -eD script-full-path
  3. 필요한 보안 속성을 가진 관리자가 됩니다.

    자세한 내용은 지정된 관리 권한을 사용하는 방법을 참조하십시오.

  4. 스크립트에 대한 권한 프로파일을 만들거나 수정합니다.

    셸 스크립트와 셸 스크립트의 명령을 필요한 보안 속성으로 권한 프로파일에 추가합니다. 단계는 권한 프로파일을 만드는 방법을 참조하십시오.

  5. 권한 프로파일을 역할에 추가하고 역할을 사용자에 지정합니다.

    스크립트를 실행하려면 사용자가 역할을 맡고 역할의 프로파일 셸에서 스크립트를 실행합니다.