SELinux 가 뭐지

2019-08-27
  • linux
  • SELinux 란..

    일단 참고한 링크..

    SELinux 는 리눅스 커널의 일부이며 다음과 같은 아키텍처를 갖고 있다. 시스템 콜은 SELinux 보안 모듈을 통해 보안 정책을 질의한 후에 처리되며 모든 시스템 콜에 대해 SELinux가 보안 정책을 확인해서 접근 허용 여부를 판단 해야 하므로 속도를 빠르게 하기 위해 캐슁하여 처리하고 있으며 이 부분을 AVC(Access Vector Cache) 라고 부른다.

    SELinux 는 아래의 세 가지 모드로 동작한다.

    mode name mode behavior
    enforce 정책과 룰에 어긋나는 동작은 모두 차단
    permissive 정책과 룰에 어긋나는 동작이 있을 경우, 감사 로그(audit log)를 남기고 해당 작업은 허용
    disable SELinux 사용하지 않음.

    Security Context 는 사용자, 역할, 타입, 레벨 로 이루어져있다. ls , ps-Z 옵션을 주면 해당 객체의 Security Context 를 알 수 있다. 기본적인 접근통제는 Type Enforcement 가 수행하며, 해당 로그는 /var/log/audit/audit.log 에 남게된다.

    sestatus (SELinux status)

    SELinux 의 상태를 체크한다.

    [herdin86@instance-20190319-second ~]$ sestatus
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Max kernel policy version:      31
    

    getenforce

    현재 SELinux 의 모드를 확인한다.

    [herdin86@instance-20190319-second ~]$ getenforce
    Enforcing
    

    setenforce

    현재 SELinux 의 모드를 변경한다. 별다른 응답을 주진 않는다.

    [herdin86@instance-20190319-second ~]$ setenforce --help
    usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
    
    [root@instance-20190319-second ~]# setenforce 0
    [root@instance-20190319-second ~]# getenforce
    Permissive
    

    이 명령어로 모드를 변경한다해도 재부팅하면 설정이 초기화 된다. 영구설정은 /etc/sysconfig/selinux 을 열어서 SELINUX=enforcing 을 수정해 주면 된다. 해제 후 다시 설정할때 부팅시간이 길어진다고 한다.