SELinux 요약 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

Server | SELinux 요약

본문

SELinux


정책

strict: 전문가용

target: 일반 (자주 문제되는 부분만 우선 적용, 나머지는 표준 리눅스보안과 동일)

  dhcpd, httpd, named, nscd, ntpd, portmap, snmpd, squid, syslogd

  

보안문맥해석

  ex) -rw-r--r-- root root system_u:object_r:selinux_config_t config

  system_u: 사용자, object_r: 역할, selinux_config_t: 타입

  

설정상태 확인

# sestatus -v


  SELinux status:                 enabled

  SELinuxfs mount:                /sys/fs/selinux

  SELinux root directory:         /etc/selinux

  Loaded policy name:             targeted

  Current mode:                   enforcing

  Mode from config file:          disabled

  Policy MLS status:              enabled

  Policy deny_unknown status:     allowed

  Max kernel policy version:      31


  Process contexts:

  Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

  Init context:                   system_u:system_r:init_t:s0

  /usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023


  File contexts:

  Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0

  /etc/passwd                     system_u:object_r:passwd_file_t:s0

  /etc/shadow                     system_u:object_r:shadow_t:s0

  /bin/bash                       system_u:object_r:shell_exec_t:s0

  /bin/login                      system_u:object_r:login_exec_t:s0

  /bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0

  /sbin/agetty                    system_u:object_r:getty_exec_t:s0

  /sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0

  /usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0

  /lib/libc.so.6                  system_u:object_r:lib_t:s0 -> system_u:object_r:lib_t:s0

  /lib/ld-linux.so.2              system_u:object_r:lib_t:s0 -> system_u:object_r:ld_so_t:s0



설정파일

  파일위치: /etc/sysconfig/selinux

  파일을 직접수정할 수도 있지만 setenforce 명령어로 변경할 수도 있다.

  

SELINUX: 사용모드

  disabled: selinux를 사용하지 않음

  enforcing: selinux를 완전히 활성화 시킴.  허가가 없는 사용자가 특정파일이나 프로그램에 접근 거부

  permissive: 허가되지 않은 접근이면 거부 메시지와 로그는 남지만 실행은 된다.  확인용으로 사용할 때 주로 쓴다.

SELINUXTYPE: 유형

  targeted: 미리 선언된 주로 문제되는 부분만 적용 됨

  strict: 모든 부분에 selinux 적용됨 (전문가용)

  


관련 명령어

  setenforce: 설정변경

  

    # setenforce 0

      : SELINUX=permissive 와 같다.

    # setenforce 1

      : SELINUX=enforcing 과 같다.

    

    setenforce 명령은 sysadm_r 권한을 가지고 수행해야 한다. (즉, 관리자 권한)

    

  getenforce: 설정확인


  chcon: 보안문맥 변경명령

    예) # chcon -R -t httpd_user_content_t /home/myhome/www

    

  

유틸리티

restorecon

  : 현재 디렉토리에 잘못된 컨텍스트가 있으면 올바른 컨텍스트로 초기화 해 줌

  ex) restore -R


matchpathcon

  : 현재 디렉토리에 어떤 보안 컨텍스트를 부여해야 하는지 알려줌

  ex) matchpathcon /var/log/


  

추가로 설치해야할 유틸리티

설치방법

  # yum install -y policycoreutils-python

  

semanage

  : SELinux 보안정책의 조회/추가/변경/삭제 할 수 있는 유틸리티

  포트추가

    semanage port -a -p tcp -t [보안컨텍스트] [포트]

    ex) semanage port -a -p tcp -t http_port_t 800

  포트삭제

    # semanage port -d -p tcp [포트]

    ex) semanage port -d -p tcp 800

    

  컨텍스트 목록 보기

    semanage [option] -l

    ex) 파일컨텍스트 목록 보기

      # semanage fcontext -l

    ex) 포트컨텍스트 목록 보기

      # semanage  port -l

      

  파일 컨텍스트에 새로운 경로 추가하기

    ex) semanage fcontext -a -t http_sys_content_t "/data/www/(/.*)?"

    

  파일 컨텍스트에 경로 삭제하기

    ex) semanage fcontext -d "/data/www(/.*)?"


audit2why

  :audit.log 파일에서 SELinux가 왜 차단되었는지 보여준다.

  

  # audit2why < /var/log/audit/audit.log

    ...

    Was caused by:

    Was caused by:

        The boolean httpd_unified was set incorrectly.

        Description:

        Allow httpd to unified


audit2allow

  새로운 허용 정책을 추가할 수 있는 유틸리티이다.



setroubleshoot-server

  : audit2why 보다 더 친절하게 설명해 준다.  처리방법까지 알려준다.

  

  설치

    # yum -y install setroubleshoot-server

    # service messagebus restart

      -> setroubleshoot-server 는 message bus 라는 데몬을 사용하기 때문에 설치 후 재시작 해 주는게 좋다

  문제가 발생하면 /var/log/messages 파일에 기록된다.

 

 

댓글 0개

등록된 댓글이 없습니다.

Menu