리눅스에서는 SELinux 라는 좀더 고오급진 보안 정책이 있다. 그런데 이것이 고오급지기도 하고 귀찮기도해서 그냥 스리슬적 넘기는게 일상 다반사다.
그런데 trouble shooting 에서 selinux에 대한 이해가 있어야지만 문제를 알아낼 수 있는 부분들이 있기에 SELinux 를 오늘 한번 짚고 넘어가 볼까한다.
SELinux 를 쉽게 생각하면 ACL(접근제어) 로 괜찮을 것 같다.
/etc/selinux/config 의 내용을 살펴 본다.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELINUX 를 강제로 할 것인지, 경고를 출력할 것인지, 사용하지 않을 것인지를 택할 수 있다.
서비스를 제공하는데 있어서 여러 변경들이 수행되기도 한다. 이러한 변경들이 SELINUX 에 반하는 일이 발생할 수 있다.
이럴때 마다 enforcing 으로 강하게 모든 정책이 보호 된다면 의도와 상관없이 서비스는 일부 제공되지 않는 일이 발생한다.
서비스의 가용성이라는 측면에서는 매우 큰 위험을 주는 설정임에는 분명하다.
그런데 그 변경이 서비스를 제공하는 사람이 아닌 외부의 흔히 말하는 해커와 같은 사람에 의한 변경이라면 어떻게 될까?
서비스의 가용성을 지킬 수는 있지만, 서비스의 무결성이나 기밀성의 문제를 야기 시킬 수 있다. 그래도 적어도 permissive 를 설정해놓는다면 누군가가 log 를 분석하여 문제 상황을 확인 할 수있는 상태가 될 것이다.
disabled 는 편하다. 앞서 말한 것 처럼 로그를 분석할 필요도 없고, 접근제어로 인한 가용성 수준이 떨어지는 일도 없다.
하지만 분명 위험한 상태임은 말할 것도 없다.
SELINUXTYPE 의 경우는 거의 건드리지 않는 설정인데
targeted는 기본 값으로 설정되어 있고 거의 모든 프로세스를 대상으로 한다고 봐도 될 것 같다
minimum는 선택된 프로세스에만 정책을 사용하기에, 매우 적은 정책이 적용된다.
mls 는 Multi level security 라는 이름에서 처럼 여러 레벨의 보안설정을 사용하여 접근제어를 더 꼼꼼하게 하려고 하는 것 같다.
[root@trouble policy]# strings /etc/selinux/targeted/policy/policy.31 |wc -l
55064
[root@trouble policy]# strings /etc/selinux/minimum/policy/policy.31 |wc -l
14618
[root@trouble policy]# strings /etc/selinux/mls/policy/policy.31 |wc -l
26864
** 정책의 갯수는 시스템에 설치되어 있는 파일들에 따라 서로 상이할 수 있다.
[root@trouble selinux]# yum list|grep selinux-policy-[m,t],*
[root@trouble selinux]# yum list|grep selinux-policy-[m,t],*|awk -F. '{print $1}'
selinux-policy-targeted
selinux-policy-minimum
selinux-policy-mls
각각의 패키지에 따라 설정을 따르는 것 같다.
어쨌든 왠만하면 targeted 설정을 해도 무방하며 minimum 의 경우 적은 양의 메모리를 사용하게 되기 때문에, selinux 를 테스트 하거나, 소형 시스템에서 적용하기에 적합할 것 정도로만 생각해 두자
selinuxproject.org/page/NB_PolicyType
fedoraproject.org/wiki/SELinux/Policies
danwalsh.livejournal.com/26759.html
SELINUX 를 이해하려거든 좀 더 많은 공부가 필요해 보인다.
'IT > LINUX' 카테고리의 다른 글
[EX342] trouble shooting[MBR, GPT] (0) | 2020.12.27 |
---|---|
[EX342]trouble shooting [selinux command] (0) | 2020.12.24 |
[RHCA] 그냥 따고 싶어졌어. (4) | 2020.12.23 |
[ansible] become 에 대하여 (0) | 2020.12.22 |
RHCE (ex294) ansible (0) | 2020.12.21 |