SELinux 가 뭐지
2019-08-27
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
을 수정해 주면 된다.
해제 후 다시 설정할때 부팅시간이 길어진다고 한다.