SELinux는 CentOS 7 이상부터 설
○ SELinux란 ?
▷ Security Enhanced Linux의 약자
▷ 과거 리눅스는 소스코드가 공개되어 있기 때문에 보안이 취약
▷ 취약점을 보안하기 위한 것이 SELinux
▷ Linux Kernel 보안 모듈이라고도 하고, Linux의 핵심인 Kernel을 보호하기 위한 도구
▷ 3가지 상태 존재
- enforcing : 강제
- permissive : 허용
- disabled : 비활성화
▷ 우리가 사용하는 편리성과 보안과는 기본적으로 반비례합니다.
설정해야 할 것도 많고, 관리할 것도 많으며, 제약이 생깁니다.
보안이 뛰어나면 편리가 감소하고, 보안이 취약하면 편리가 증가한다고 생각하면 됩니다.
○ SELinux 사용법 (설정)
● SELinux 설정 파일
# vi /etc/sysconfig/selinux
selinux 설정 파일에 들어가서 selinux를 설정할 수 있습니다.
# SELINUX=enforcing / permissive / disabled 지금 적용중인 것을 알 수 있습니다.
가끔 SELINUX를 비활성화 시켜야 할 때가 있습니다.
여러가지 설정하는 경우는 아예 비활성화로 disabled 하시면 됩니다.
재부팅시에 설정이 적용됩니다.
disabled - 비활성화
permissive - 서비스 거부 메세지 통보를 받을 수 있고, 자료와 프로그램에 이름을 할당한 후 로그를
기록하지만 보안 정책을 사용하지 않음
처음 selinux를 사용하는 사람이 어떤 영향을 미치는지 알아볼 때 좋음
enforcing - 활성화
추가 시스템 보안을 위해 모든 보안 정책을 사용
○ SELinux 관련 명령어
● setenforce / getenforce
# sentenforce 0
SELinux=permissive와 동일한 결과로서 임시적으로 적용하는 명령어
# setenforce 1
SELinux=enforcing와 동일한 결과로서 임시적으로 적용하는 명령어
(단, SELinux status값이 disable 상태이면 명령어 사용 불가)
# getenforce
설정을 보는 명령어
● chcon
# chcon [옵션] [보안 문맥] [파일명]
보안 문맥을 변경해주는 명령어
옵션
-t : 해당 파일에 대한 role 설정
-R : 하위 디렉토리 내 모든 파일에 대한 같은 role 설정
-u : user 바꿀 때
-r : role 바꿀 때
-t : type 바꿀 때
예시
# chcon -R -t httpd_sys_content_t /home/user
/home/user디렉토리 아래에 생성되는 모든 파일은 httpd_sys_content_t 보안 문맥 적용
디렉토리 권한이 755이어도 기본 보안 문맥으로는 웹서버 (80번 포트)에 접근이 불가능하기
때문에 이런 명령어들을 사용하여 접근 가능하도록 합니다.
# ls -lZ [파일명]
명령을 통해 적용된 문맥을 볼 수 있습니다.
_u : 고유 이름(identify) 필드, _r : 역할(role)필드, _t : 유형(type) 필드
● sestatus
# sestatus
SELinux 상태 확인하는 명령어
● setsebool / getsebool
# setsebool [옵션] [설정할 정책] [ON/OFF] on 대신 1 사용가능, off 대신 0 사용가능
SELinux 설정값을 주는 명령어
# setsebool -P : 재부팅 후에도 적용되는 옵션 (selinux환경설정이 저장됨)
# getsebool [옵션] : 해당 옵션에 대한 boolean값 상태 확인
# getsebool -a : 모든 옵션 boolean값 상태 확인 (보통 | grep 과 같이 사용합니다.)
예시
# setsebool -P ftpd_full_access on
ftp에 대해 selinux 접근 보안 정책
○ SELinux 로그 파일
SELinux log -> /var/log/audit/audit.log
SELinux 로그 파일
일단 SELinux로그를 보면 프로세스가 거부 되었을 때 기록합니다.
기본 정책이 거부를 허가로 변경해서도 로그를 기록할 수 있습니다.
로그 기본적으로는 /var/log/messages에 기록됩니다.
보통 로그 메세지를 리다이렉션 기호를 통해 다른 파일에 옮겨서 확인합니다.
로그 파일은 SELinux 활성화과 데몬이 활성화 되어 있어야 합니다.
# ps -ef | grep auditd : 데몬 확인
안에 자세한 내용은 다른 글에서 다루도록 하겠습니다.
댓글