CodeGym /행동 /Docker SELF /SELinux 소개: 상태 확인, 활성화, 기본 명령어

SELinux 소개: 상태 확인, 활성화, 기본 명령어

Docker SELF
레벨 5 , 레슨 2
사용 가능

SELinux 소개: 상태 확인, 활성화, 기본 명령어

1. SELinux란 무엇이며 왜 필요한가?

SELinux (Security-Enhanced Linux) — 이건 전통적인 접근 권한 모델을 강화하면서도 강제적인 제어 개념을 추가하는 보안 모듈이야. 관리자는 사용자와 심지어 프로세스에 대해 더 엄격한 제한을 설정해서 잠재적인 공격으로부터 피해를 최소화할 수 있어.

그 독특함은 뭐야?

시스템을 집이라고 상상해봐. 전통적인 접근 권한 (사용자, 그룹, 그리고 다른 사용자를 위한 rwx) 은 문에 달린 열쇠랑 비슷해. 그런데 만약 누군가 문을 부수고 들어왔다면? SELinux는 두 번째 방어선이 되어 규칙으로 보호를 강화해: "이봐, 네가 안에 있더라도 욕실로 들어가는 건 안 돼!"

SELinux의 주요 역할:

  1. 프로세스와 파일에 대한 무단 접근 방지.
  2. 공격으로 인해 프로세스가 침해되었더라도 피해를 줄이기.
  3. "기본적으로 보호" 원칙 (허용된 것 외에는 모두 금지).

SELinux의 작동 모드

SELinux는 세 가지 모드에서 작동할 수 있어:

  1. Enforcing — 활성화된 상태로 보안 정책을 적용하고 규칙을 위반하는 프로세스를 차단해.
  2. Permissive — 위반 사항은 로그에 기록하지만, 행동을 차단하지 않아.
  3. Disabled — 완전히 비활성화
재미있는 사실:

Enforcing 모드의 SELinux는 시스템에 대한 엄격한 형처럼 행동해. Permissive 모드는 그냥 잔소리만 하고 아무것도 하지 않는 동생 같아.


2. SELinux 상태 확인

먼저 SELinux가 활성화되어 있는지, 그리고 어떤 모드로 작동 중인지 확인해 보자. 이를 위해 몇 가지 유용한 명령어가 있어.

명령어 getenforce

이 명령어는 현재 어떤 모드가 사용 중인지 단순히 알려줄 거야: Enforcing, Permissive, 또는 Disabled.

$ getenforce
Enforcing

만약 출력이 Disabled라면, SELinux가 비활성화된 상태라는 뜻이야. 다시 활성화하려면 약간의 추가 작업이 필요해. 이건 나중에 다룰게.

명령어 sestatus

SELinux 상태에 대한 좀 더 자세한 보고서를 얻으려면 이 명령어를 사용해. 현재 상태, 활성 모드, 그리고 사용 중인 정책을 보여줄 거야.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

여기에서 다음을 확인할 수 있어:

  • enabled/disabled — SELinux가 활성인지 비활성인지.
  • current mode — 활성 모드(enforcing, permissive).
  • loaded policy name — 어떤 정책이 로드되어 있는지. 예를 들어, "targeted"는 SELinux가 주요 프로세스에만 제어를 적용한다는 뜻이야.

3. SELinux 모드 전환

현재 SELinux 작업 모드를 변경하려면, setenforce 명령어를 사용해.

permissive 모드로 전환

SELinux의 "제어를 약간 느슨하게" 하고 싶다면, permissive 모드를 켤 수 있어.

$ sudo setenforce 0

이제 SELinux는 위반을 기록만 하고 차단하지 않아. 새로운 설정을 확인하려면 getenforce 명령어를 사용해:

$ getenforce
Permissive

enforcing 모드로 다시 전환

다시 엄격한 통제를 활성화하고 싶다면, 다음을 실행해:

$ sudo setenforce 1

그리고 당연히 결과를 확인해:

$ getenforce
Enforcing

이 변경은 즉시 적용되지만, 시스템을 재부팅할 때까지만 적용돼.


4. SELinux 활성화

SELinux가 비활성화되었다면 설정 파일을 변경해야 해. SELinux는 /etc/selinux/config 파일을 통해 관리돼.

현재 설정 파일 확인

설정이 어떻게 돼 있는지 한번 보자. nano 같은 텍스트 편집기를 사용해:

$ sudo nano /etc/selinux/config

아마 이런 걸 볼 수 있을 거야:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

SELinux 활성 상태로 전환

SELinux를 활성화하려면 SELINUX=disabled 라인을 SELINUX=enforcing 또는 SELINUX=permissive로 변경해.

수정된 파일의 예는 다음과 같아:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

수정 후 파일을 저장하고 시스템을 재부팅해:

$ sudo reboot

재부팅 후 sestatus를 사용해 SELinux가 활성화되었는지 확인할 수 있어.


5. SELinux 컨텍스트 분석

컨텍스트란?

컨텍스트는 SELinux가 접근 제어를 위해 사용하는 라벨이야. 각 파일, 프로세스, 사용자마다 고유한 컨텍스트가 있어.

파일의 컨텍스트를 ls -Z 명령어로 확인할 수 있어. 예를 들어:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

이게 무슨 뜻일까?

  1. unconfinedu — SELinux 사용자야.
  2. objectr — 객체 타입이야.
  3. httpdsyscontent_t — 접근 타입이야 (이 경우 웹 서버 관련).
  4. s0 — 보안 레벨이야.

컨텍스트 변경

SELinux가 애플리케이션 작동을 방해한다면, 파일 컨텍스트를 바꿔야 할 수도 있어. chcon 명령어를 사용해봐:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

이 명령어는 파일 컨텍스트 타입을 일시적으로 변경해줘. 하지만 다시 부팅하면 변경 사항이 사라질 수 있으니까, 영구적인 설정을 원하면 SELinux 정책을 수정하는 게 더 좋아. (이건 나중에 다룰게).


6. SELinux 작업 예제

예제를 다뤄보자. 당신은 서버 관리자이고, 웹 서버를 배포하려고 하지만 SELinux가 /var/www/html 디렉토리의 파일 접근을 차단하고 있어.

단계:

  1. SELinux 상태를 확인해봐:

    $ sestatus
    

    SELinux가 활성화되고 enforcing-모드에서 작동 중인지 확인해.

  2. 파일 컨텍스트를 확인해봐:

    $ ls -Z /var/www/html
    
  3. 만약 컨텍스트가 잘못되었다면, 이를 변경해봐:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. 웹 서버가 작동하는지 확인해봐.


7. 일반적인 오류 및 문제

  1. SELinux가 비활성화되어 있고, 그걸 모르고 지나치는 경우. 항상 sestatus를 사용하여 상태를 확인해야 해. 많은 관리자들이 시스템 설치 후 SELinux를 다시 활성화하는 걸 잊어버리거든.

  2. "왜 내 서비스가 작동하지 않을까?" SELinux가 접근을 차단하고 있을 가능성이 높아. audit.log를 사용해서 분석해봐:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. 컨텍스트 변경이 저장되지 않아. chcon을 사용하지 말고, semanage 같은 명령어로 영구적인 변경을 해봐.

SELinux 학습은 마라톤 준비와 비슷해: 처음엔 많이 어려울 수 있지만, 시간이 지나면 이 도구가 시스템 보안을 얼마나 크게 향상시킬 수 있는지 알게 될 거야. 이 지식을 활용해서 고급 해커도 뚫을 수 없는 관리자가 되어봐.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION