본문 바로가기
카테고리 없음

[Linux] SELinux 개념 + 관련 명령어

by 떵해이 2020. 12. 14.
300x250

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 : 데몬 확인

 

안에 자세한 내용은 다른 글에서 다루도록 하겠습니다.

반응형

댓글