보안 문맥

RHCE 2009. 6. 2. 13:41
보안 문맥이란 SELinux가 활성화 되면 현재 로그인해 있는 사용자 정보, 실행 중인 프로세스 목록, 파일 시스템 안에 파일 목록에 보안과 관련된 속성이 추가 되는데 이것을 보안 문맥 (security contexts)라고 한다.

보안 문맥을 확인하는 명령은 `ls -Z`이다.
예를 들어 `ls -Z /root/anaconda-ks.cfg`와 같이 명령을 내리면 아래와 같은 결과가 출력된다.

-rw-------  root root system_u:object_r:user_home_t    /root/anaconda-ks.cfg

위에서 'system_u:object_r:user_home_t' 부분이 보안 문맥을 나타내는 것이다.
형식은 user:role:type:sensitivity:category 의 형식으로 되어 있는데 위 문맥은 user:role:type 까지만 나와 있다. 각 구문의 의미는 아래와 같다.

user : 시스템에 로그인 되어 있는 사용자 종류를 표시한다.
       사용자가 root로 로그인 하면 root라는 값을 갖고, 일반 사용자가 로그인 하면
       user_u라는 값을 갖는다.
       일반사용자가 su를 사용해서 root로 전환해도 처음 로그인한 사용자의 값이
       적용되기 때문에 user_u 값을 가질 것이다.
       일반 파일이나 디렉토리는 root나 user_u값을 갖지만 프로세스는 system_u값을 갖는다.
role : 특정 파일, 프로세스 또는 사용자 목적을 정의한다.
      파일이나 디렉토리는 object_r이라는 role을 가지고, 프로세스는 system_r이라는 role을
      갖는다.
type : 파일 및 디렉토리 또는 프로세스의 데이터 성질을 지정한다.
       설정된 규칙은 어떤 프로세스 종류가 어던 파일 종류를 사용할 수 있는지 결정한다.

mv로 파일이나 디렉토리를 이동하면 그 보안 문맥은 그대로 유지되나 cp로 복사를 할 경우, 복사된 파일이나 디렉토리는 복사된 디렉토리의 보안문맥설정을 상속받아서 바뀔 수 있으니 기억하자.

그러면 syslogd의 로그 파일인 /var/log/cron의 보안문맥을 이동, 복사함으로 이해해보자.
먼저 /var/log/cron의 보안 문맥을 확인해보자.
`ls -Z /var/log/cron`

아래와 같은 보안 문맥이 설정 되어 있다.
-rw-------  root root system_u:object_r:var_log_t      /var/log/cron

mv명령으로 이동할 시 보안 문맥이 변하는지를 확인하기 위해 /var/log/cron파일을 /tmp 디렉토리로 이동시킨다.

/tmp로 이동된 cron파일의 보안 문맥을 확인하면 아래와 같이 변하지 않는다.
`ls -Z /tmp/cron`
-rw-------  root root system_u:object_r:var_log_t      /tmp/cron

이번에 cp를 이용해서 홈디렉토리로 복사한다.
`cp /tmp/cron ~/`
`ls -Z ~/cron`
-rw-------  root root root:object_r:user_home_t        /root/cron

위처럼 user부분이 system_u에서 root로 바뀐 것을 확인할 수 있다.
이처럼 파일이 시스템에서 이동될 때 보안 문맥은 파일의 보안 문맥을 그대로 유지하지만 파일이 복사되면 복사된 파일은 상위 디렉토리의 보안 문맥을 상속받는다.

그렇다면, 보안문맥이 바뀐 cron파일을 원래 있던 디렉토리인 /var/log에 이동해보자.
이동했으니 홈 디렉토리에 있던 기존 보안 문맥을 그대로 유지할 것이다.
그리고 syslog를 재시작하면 gui환경이라면 작업표시줄에서 avc: denied 라는 오류 메시지가 보일 것이다.
그러므로 다시 원래의 보안 문맥으로 돌려보자.
/var/log/cron파일 같은 경우는 `restorecon /var/log/con` 명령을 내리면 다시 원래의 보안 문맥으로 복구 된다.

* 실행 중인 프로세스의 보안 문맥을 확인 하려면 `ps -eZ | grep 프로세스명`을 치면 된다.

[출처] 보안 문맥|작성자 이경모

'RHCE' 카테고리의 다른 글

할당량 구현  (0) 2009.06.02
ACL (Access Control List)  (0) 2009.06.02
chcon / restorecon  (0) 2009.06.02
system-config-selinux 설치.  (0) 2009.06.02
watch 명령에 대해...  (0) 2009.06.02
Posted by 으랏차
,