SELinux

Security Enhanced Linux

(많은 사람들이) 리눅스에서 뭔가 제대로 동작하지 않으면 disable 하도록 소개하는 것

인터넷에 노출된 서비스에서는 되도록 disable 하지 않아야 하는 것



자주 발생하는 문제 및 해결

웹서버에 파일과 폴더를 만들고 GUEST 읽기 권한을 두었는데도 웹브라우저로 접근할 수 없음
→ 새로 만든 폴더에 httpd_sys_content_t 또는 httpd_sys_script_exec_t 컨텍스트를 추가해야 함

잘 동작하던 프로그램의 설정파일을 복사해 왔는데도 프로그램이 실행되지 않음
→ 복사한 설정파일에 config_t 콘텍스트를 추가해야 함

SSHD 설정파일에서 SSH 포트를 다른 포트로 바꾸었는데 적용되지 않음
→ 바꾸려는 포트에 ssh_port_t 콘텍스트를 추가해야 함


해커가 침입했더라도 취득한 콘텍스트는 제한적이기 때문에 다른 부분에 관여할 수 없음
→ selinux 를 disable 하면 보안에 많이 취약해짐


보안 컨텍스트

Security Context

Context :문맥, 맥락


알맞은 보안 컨텍스트가 아니면 실행이 되지 않음

보안 컨텍스트는 login, user, port, interface, node, fcontext(파일) 등에 적용할 수 있음


보안 컨텍스트 확인하기

명령어
sudo -s

# 디렉터리/파일에 관한 컨텍스트 확인
ls -Z /etc/httpd
ls -Z /var/www

# 실행중인 프로세스에 관한 컨텍스트 확인
ps auxZ | grep httpd

# 포트에 관한 컨텍스트 확인
semanage port -l | grep httpd


실행 결과
# ls -Z /etc/httpd
drwxr-xr-x. system_u:object_r:httpd_config_t:s0  conf
drwxr-xr-x. system_u:object_r:httpd_config_t:s0  conf.d
drwxr-xr-x. system_u:object_r:httpd_config_t:s0  conf.modules.d
lrwxrwxrwx. system_u:object_r:httpd_log_t:s0     logs -> ../../var/log/httpd
lrwxrwxrwx. system_u:object_r:httpd_modules_t:s0 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. system_u:object_r:httpd_config_t:s0  run -> /run/httpd

# ls -Z /var/www
drwxr-xr-x system_u:object_r:httpd_sys_script_exec_t:s0  cgi-bin
drwxr-xr-x system_u:object_r:httpd_sys_content_t:s0      html


# ps auxZ | grep httpd
system_u:system_r:httpd_t:s0  apache ...  /usr/sbin/httpd -DFOREGROUND


# semanage port -l | grep http
http_port_t  tcp  80, 443, 8080


SELinux 동작 확인하기

/etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeted


보안 컨텍스트 적용 하기

상기의 보안 컨텍스트 확인하기를 통해 필요한 보안 컨텍스트를 확인한다. 필요한 컨텍스트를 파일 또는 포트에 추가한다.


semanage - SELinux Policy Management tool 설치

sudo yum -y install policycoreutils-python


파일에 보안 컨텍스트 추가

sudo chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/wiki/data


포트에 보안 컨텍스트 추가

sudo semanage port -a -t ssh_port_t -p tcp XXXX


함께 읽기

https://www.lesstif.com/system-admin/selinux-7634968.html

https://www.redhat.com/ko/topics/linux/what-is-selinux

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files

https://learning.oreilly.com/library/view/selinux-system-administration/9781800201477/