IT 기술 문서
CentOS 7 유용한 명령어 시리즈 - ⑨ SELinux 관리
- it2033 4일 전 2025.02.01 17:04
-
- 6
- 0
CentOS 7에서는 SELinux(Security-Enhanced Linux)가 기본적으로 활성화되어 있으며, 시스템 보안을 강화하는 중요한 역할을 합니다. 하지만, SELinux 설정이 잘못되면 특정 서비스가 정상적으로 작동하지 않을 수 있습니다. 이 글에서는 SELinux를 관리하는 명령어들을 정리하겠습니다.
SELinux 기본 개념
SELinux(Security-Enhanced Linux): 사용자, 프로세스 및 파일 간의 접근을 제어하는 보안 기능.
기본 설정: CentOS 7에서는 SELinux가 Enforcing(강제 적용) 상태로 활성화됨.
SELinux 모드:
Enforcing (강제 적용): SELinux가 활성화된 상태. 정책을 위반하는 액세스는 차단됨.
Permissive (허용 모드): 정책을 위반하는 액세스가 허용되지만, 로그에 기록됨.
Disabled (비활성화): SELinux가 완전히 비활성화됨.
1. SELinux 상태 확인
sestatus
현재 SELinux의 상태를 확인할 수 있음.
출력 예시:
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
Current mode: enforcing
→ SELinux가 강제 적용됨.Mode from config file: enforcing
→ 설정 파일에서enforcing
으로 설정됨.
2. SELinux 모드 변경 (일시적 변경)
2.1. Permissive 모드로 변경 (일시적)
setenforce 0
SELinux를 **Permissive(허용 모드)**로 변경.
시스템 재부팅 후 다시
enforcing
모드로 복귀됨.
2.2. Enforcing 모드로 변경 (일시적)
setenforce 1
SELinux를 다시 **Enforcing(강제 적용 모드)**로 변경.
2.3. 현재 모드 확인
getenforce
Enforcing
,Permissive
,Disabled
중 현재 상태를 출력.
3. SELinux 영구적 비활성화 (재부팅 후 유지)
3.1. 설정 파일을 직접 수정
nano /etc/selinux/config
다음과 같이
SELINUX
값을 변경:
SELINUX=disabled # SELinux 완전 비활성화
# SELINUX=permissive # Permissive 모드 (필요할 경우)
파일을 저장한 후 시스템을 재부팅해야 적용됨.
reboot
3.2. SELinux를 영구적으로 Permissive 모드로 변경
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
reboot
enforcing
모드를permissive
로 변경하고 시스템을 재부팅.
4. SELinux 정책 및 컨텍스트 관리
SELinux는 각 파일과 프로세스에 보안 컨텍스트를 적용하여 접근을 제어함.
4.1. 파일의 SELinux 보안 컨텍스트 확인
ls -Z /var/www/html
출력 예시:
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
httpd_sys_content_t
: Apache가 접근할 수 있는 컨텍스트.
4.2. 특정 파일의 SELinux 컨텍스트 변경
chcon -t httpd_sys_content_t /var/www/html/index.html
Apache가 접근할 수 있도록 컨텍스트 변경.
4.3. SELinux 기본 컨텍스트로 복원
restorecon -Rv /var/www/html
변경된 SELinux 보안 컨텍스트를 기본값으로 복원.
4.4. SELinux 정책 목록 확인
semanage fcontext -l
시스템에서 설정된 모든 SELinux 보안 컨텍스트를 확인.
5. SELinux 로그 및 문제 해결
5.1. SELinux 관련 로그 확인
cat /var/log/audit/audit.log | grep AVC
SELinux 정책 위반(AVC Denials) 로그를 확인.
5.2. SELinux 오류 해결 자동화
sealert -a /var/log/audit/audit.log
SELinux 오류 메시지를 분석하고 해결 방법을 제안.
5.3. 특정 SELinux 정책 허용
ausearch -m AVC -ts recent
최근 SELinux 차단 로그 조회.
audit2allow -a
차단된 정책을 기반으로 새로운 허용 정책을 생성.
audit2allow -a -M mypolicy
semodule -i mypolicy.pp
mypolicy
라는 이름으로 새로운 SELinux 정책을 추가.
6. SELinux 포트 관리
6.1. 특정 서비스가 사용할 수 있는 포트 확인
semanage port -l | grep http
출력 예시:
http_port_t tcp 80, 443
Apache 웹 서버는 기본적으로 80, 443 포트를 사용.
6.2. 새로운 포트를 추가 (예: Apache를 8080 포트에서 실행)
semanage port -a -t http_port_t -p tcp 8080
8080 포트를 Apache 서비스에 허용.
6.3. 기존 포트 제거
semanage port -d -t http_port_t -p tcp 8080
Apache 서비스에서 8080 포트를 제거.
7. SELinux 부팅 시 옵션 설정
SELinux 부팅 시 특정 설정을 적용할 수도 있음.
7.1. GRUB을 통해 일시적으로 Permissive 모드로 부팅
부팅 시 GRUB 메뉴에서 편집 모드(e 키)를 선택.
linux16
또는linux
라인이 있는 곳에서 끝에 다음 추가:enforcing=0
Ctrl + X를 눌러 부팅.
정리
명령어 | 설명 |
---|---|
| SELinux 상태 확인 |
| 현재 SELinux 모드 확인 |
| SELinux를 Permissive 모드로 변경 (일시적) |
| SELinux를 Enforcing 모드로 변경 (일시적) |
| SELinux 설정 파일 편집 (영구 변경) |
| 파일의 SELinux 컨텍스트 복원 |
| 특정 파일의 SELinux 컨텍스트 변경 |
`cat /var/log/audit/audit.log | grep AVC` |
| SELinux 차단 정책 분석 및 허용 정책 생성 |
| SELinux에서 허용된 포트 확인 |
| 특정 포트를 SELinux에 추가 |
| SELinux 문제 자동 분석 |
이번에는 CentOS 7에서 SELinux를 관리하는 방법을 정리했습니다. 다음 시리즈에서는 시스템 종료 및 재부팅 명령어를 다루겠습니다.
- 이전글CentOS 7 유용한 명령어 시리즈 - ⑩ 시스템 종료 및 재부팅2025.02.01
- 다음글CentOS 7 유용한 명령어 시리즈 - ⑧ 크론 작업(스케줄링) 관리2025.02.01
댓글목록
등록된 댓글이 없습니다.