[리눅스] SELinux 개념 및 설정 방법, on/off (feat. semanage)
- IT/linux
- 2024. 4. 9. 23:02
SELinux(Security-Enhanced Linux)란 ?
SELinux는 MAC 기반 리눅스 커널 레벨의 보안 모듈이며, 대부분의 리눅스 배포판에서 지원되고 있습니다.
MAC 기반 SELinux는 어떤 프로세스가 특정 파일/디렉터리/포트 등에 접근 가능한지에 대해 이미 정의된 접근 통제 정책이 제공됩니다. 서버 운영자는 이미 정의된 접근 통제 정책을 운영 환경에 맞게 추가/변경/삭제 작업을 한다고 보면 됩니다.
SELinux 기능 켜기/끄기
/etc/selinux/config 파일 또는 setenforce 명령어로 설정할 수 있습니다.
방법1
[servera]# vi /etc/selinux/config
SELINUX=enforcing/permissive/disabled 택 1
enforcing - 활성화
permissive - 관련 경고만 표시, 비활성화
disabled - 비활성화
방법2
[servera]# setenforce 0
[servera]# getenforce
Permissive
[servera]# setenforce 1
[servera]# getenforce
Enforcing
sestatus 명령어로 상태 확인
[servera]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
정책 관리
semanage 명령어는 SELinux 보안 정책 조회/추가/변경/삭제 시 사용되는 유틸리티입니다.
참고로 semanage 사용을 위해서는 아래 패키지 설치가 필요합니다.
[servera]# dnf provides */semanage
Last metadata expiration check: 0:06:33 ago on Tue Apr 9 22:55:21 2024.
policycoreutils-python-utils-3.5-3.el9_3.noarch : SELinux policy core python utilities // 여기에 나온 패키지 설치 해야함
Repo : @System
Matched from:
Filename : /usr/sbin/semanage
Filename : /usr/share/bash-completion/completions/semanage
[servera]# dnf install -y policycoreutils-python-utils
로그 관리
기본적으로 /var/log/audit 아래에 저장되며, 정확한 분석을 하기 위해서 sealert 로그 분석 및 해결 방안 패키지 설치를 추천
[servera]# dnf install -y setroubleshoot-server
[servera]# sealert -a /var/log/audit/audit.log
예시1.
상황 : 고객사 특정 서버 SSH 포트 변경 요청을 받았다. (기존 22, 변경 2211)
1. SSH 포트 변경 및 서비스 재시작
[servera]# vi /etc/ssh/sshd_config
... (생략)
#Port 22 // 주석처리
Port 2211
... (생략)
[servera]# systemctl restart sshd
2. SELinux 정책 중 SSH 서비스 확인
[servera]# semanage port -l | grep -i ssh
ssh_port_t tcp 22
3. SELinux 정책에 SSH 서비스 신규 포트 추가
[servera]# semanage port -a -t ssh_port_t -p tcp 2211
4. SELinux 정책 중 SSH 서비스 재확인 (변경사항 반영 확인)
[servera]# semanage port -l | grep -i ssh
ssh_port_t tcp 2211, 22
예시2.
상황 : SELinux 사용 환경의 서버에서 서비스 운영 장애 발생 시 트러블 슈팅 방법
1. 로그 분석
[servera]# sealert -a /var/log/audit/audit.log
2. 로그를 확인했음에도 불구하고 정확한 문제 파악이 어렵다면 우선 SELinux 모드를 Enforcing → Permissive로 변경
[servera]# vi /etc/selinux/config
SELINUX=Permissive
또는
[servera]# getenforce
Enforcing
[servera]# setenforce 0
Permissive
3-1. Permissive 모드 설정 이후 서비스가 정상화 되었다면?
SELinux 보안 정책 문제이므로 정책을 다시 확인하고 필요시 추가/변경/삭제를 수행한다.
3-2. Permissive 모드 설정 이후에도 서비스가 정상화되지 않는다면?
SELinux 문제가 아니므로 다른 곳에서 원인을 파악한다.
'IT > linux' 카테고리의 다른 글
[리눅스] RHCSA 9(6), ACL 설정 (feat. setfacl, getfacl) (0) | 2024.04.13 |
---|---|
[리눅스] 서버 보안 ACL 개념 및 설정하기 (feat. getfacl, setfacl) (1) | 2024.04.12 |
[리눅스] ACL과 POSIX 권한: 개념과 우선순위 (0) | 2024.04.08 |
[리눅스] 포트 오픈 확인 (feat. telnet, ncat/nc, curl, bash) (1) | 2024.04.07 |
[리눅스] RHCSA 9(5), SELinux 트러블 슈팅 (feat. semanage, sealert, curl, ncat) (1) | 2024.04.04 |