Rocky Linux / SELinux 끄는 방법

Rocky Linux에서 SELinux(Security-Enhanced Linux)를 완전히 끄기보다 문제를 먼저 확인하고 필요한 정책을 수정하는 것이 안전합니다. 진단이 필요하면 일시적으로 permissive 모드를 사용하고, 영구 비활성화는 호환되지 않는 소프트웨어 때문에 다른 해결책이 없을 때만 검토하십시오.

현재 SELinux 상태 확인

getenforce는 현재 동작 모드를 한 줄로 보여 주고, sestatus는 설정 파일의 모드와 정책 등 상세 정보를 보여 줍니다.

getenforce
sestatus
모드 의미
Enforcing 정책 위반을 기록하고 실제로 차단합니다. 운영 서버의 권장 상태입니다.
Permissive 정책 위반을 기록하지만 차단하지 않습니다. 원인 분석과 정책 시험에 적합합니다.
Disabled SELinux가 동작하지 않으며 파일 보안 문맥 관리도 중단됩니다.

일시적으로 Permissive 모드 사용

현재 부팅에서만 변경

다음 명령은 재부팅 전까지만 차단을 중지합니다. 문제가 SELinux 때문인지 좁혀 보는 용도로 사용하고, 확인이 끝나면 즉시 다시 적용합니다.

sudo setenforce 0
getenforce

Enforcing 모드로 복귀

sudo setenforce 1
getenforce

Permissive에서 문제가 사라졌다는 사실은 SELinux 관련 가능성을 뜻할 뿐, SELinux를 꺼야 한다는 결론은 아닙니다. 감사 로그를 확인해 필요한 파일 문맥, 불리언 또는 포트 유형을 수정해야 합니다.

차단 원인 확인

최근 AVC 거부 기록 조회

SELinux의 접근 거부는 감사 로그에 AVC(Access Vector Cache) 메시지로 남습니다. 최근 기록은 다음처럼 조회할 수 있습니다.

sudo ausearch -m AVC,USER_AVC -ts recent

ausearch가 없다면 audit 패키지와 서비스 상태를 확인합니다. 로그의 프로세스, 대상 경로와 요청 권한을 보고 실제 서비스 동작과 일치하는지 판단하십시오.

파일 보안 문맥 복원

웹 문서나 서비스 데이터의 보안 문맥이 잘못되었다면 임의의 chcon 변경보다 영구 규칙을 등록하고 restorecon으로 적용하는 방법이 관리하기 쉽습니다.

sudo semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'
sudo restorecon -Rv /srv/www

semanage 명령은 보통 policycoreutils-python-utils 패키지에서 제공합니다. 쓰기 권한이 필요한 디렉터리는 용도에 맞는 별도 유형을 선택해야 하며, 예시 유형을 무조건 적용하면 안 됩니다.

불리언과 비표준 포트 조정

서비스 기능을 불리언으로 허용

정책이 미리 제공하는 선택 기능은 SELinux 불리언으로 켤 수 있습니다. 현재 값과 설명을 확인한 뒤 필요한 항목만 영구 적용합니다.

getsebool -a | grep httpd
sudo setsebool -P httpd_can_network_connect on

서비스의 포트 유형 등록

서비스가 기본값이 아닌 포트를 사용하면 방화벽 허용과 별개로 SELinux 포트 정책이 필요할 수 있습니다. 기존 매핑을 먼저 확인한 뒤 추가합니다.

sudo semanage port -l | grep http_port_t
sudo semanage port -a -t http_port_t -p tcp 8088

이미 등록된 포트의 유형을 바꾸려면 -a가 아니라 -m이 필요할 수 있습니다. 다른 서비스가 사용하는 포트인지 먼저 확인하십시오.

부팅 후에도 Permissive 모드 유지

애플리케이션 호환성을 조사하는 동안 재부팅 후에도 기록 전용 모드를 유지하려면 /etc/selinux/config를 백업하고 SELINUX=permissive로 설정합니다.

sudo cp -a /etc/selinux/config /etc/selinux/config.backup
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
grep '^SELINUX=' /etc/selinux/config

설정 파일의 값은 다음 부팅에 적용됩니다. 현재 모드는 setenforce 0으로 별도 변경하거나 계획된 재부팅 후 확인합니다.

SELinux를 완전히 비활성화해야 한다면

다른 해결책이 없고 위험을 검토했다면 백업과 콘솔 접근을 확보한 뒤 설정 파일에서 SELINUX=disabled로 바꾸고 재부팅합니다.

sudo cp -a /etc/selinux/config /etc/selinux/config.before-disabled
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo reboot

비활성화된 동안에는 파일의 SELinux 문맥이 최신 상태로 유지되지 않을 수 있습니다. 나중에 다시 활성화할 때는 먼저 Permissive 모드로 부팅하고 전체 재레이블 작업과 서비스 검증을 계획해야 하며, 파일 수에 따라 재부팅 시간이 크게 늘어날 수 있습니다.

권장 문제 해결 순서

  1. getenforce와 sestatus로 현재 상태를 확인합니다.
  2. 서비스 자체 로그와 파일 권한, 방화벽을 먼저 점검합니다.
  3. 필요하면 잠시 Permissive 모드로 전환해 증상을 비교합니다.
  4. ausearch로 실제 거부 기록을 확인합니다.
  5. 올바른 파일 문맥, 불리언 또는 포트 유형으로 최소 범위만 수정합니다.
  6. Enforcing 모드로 되돌리고 기능과 로그를 다시 검증합니다.

참고 문서

Rocky Linux SELinux 학습 가이드는 모드, 보안 문맥, 불리언과 문제 해결의 기본 원리를 설명합니다.

같은 카테고리의 다른 글
Rocky Linux / GUI 환경 만드는 방법

Rocky Linux / GUI 환경 만드는 방법

Rocky Linux에 GNOME GUI를 설치하고 그래픽 부팅을 설정하는 방법을 설명합니다. Rocky Linux 8·9의 XRDP와 Rocky Linux 10의 GNOME 원격 데스크톱 차이도 정리합니다.

Rocky Linux / Memo

Rocky Linux / Memo

Rocky Linux와 관련된 잡다한 정보를 정리합니다.

Rocky Linux / DNF 사용법

Rocky Linux / DNF 사용법

Rocky Linux의 DNF로 패키지를 검색·설치·업데이트·삭제하는 방법을 설명합니다. 저장소, 거래 이력, 캐시와 안전한 운영 요령도 함께 정리합니다.

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux / MariaDB 설치하는 방법

Rocky Linux에 MariaDB를 설치하고 초기 보안을 설정하는 방법을 설명합니다. 최소 권한 계정, 원격 수신 주소, 방화벽 원본 제한과 TLS 점검 사항도 정리합니다.

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux / root 계정으로 ssh 접속 가능하게 설정하는 방법

Rocky Linux에서 root SSH 접속이 필요할 때 공개 키로만 허용하는 안전한 절차를 설명합니다. 설정 검사, 접속 제한과 원상 복구 방법도 정리합니다.

Rocky Linux / 호스트네임 변경하는 방법

Rocky Linux / 호스트네임 변경하는 방법

Rocky Linux에서 hostnamectl로 호스트네임을 변경하고 결과를 확인하는 방법을 설명합니다. 이름 해석과 서비스 재시작이 필요한 경우도 함께 살펴봅니다.

Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux / 설치된 패키지 확인하는 방법

Rocky Linux에서 설치된 패키지를 DNF와 RPM으로 확인하는 방법을 설명합니다. 전체 목록, 특정 파일의 소유 패키지, 설치 시각과 변경 검증 방법도 정리합니다.

Rocky Linux / 언어 변경하는 방법

Rocky Linux / 언어 변경하는 방법

Rocky Linux에서 localectl과 언어 팩으로 시스템 로케일을 확인·변경하는 방법을 설명합니다. 세션별 변경, LANG·LC_* 우선순위와 한글 깨짐 점검도 정리합니다.

Rocky Linux / SELinux 끄는 방법

Rocky Linux / SELinux 끄는 방법

Rocky Linux의 SELinux 상태와 모드를 확인하고 차단 원인을 해결하는 방법을 설명합니다. Permissive 전환, 정책 조정과 완전 비활성화 시 주의점도 정리합니다.

Rocky Linux / 방화벽 관리하는 방법

Rocky Linux / 방화벽 관리하는 방법

Rocky Linux firewalld에서 영역, 서비스와 포트를 확인·관리하는 방법을 설명합니다. 런타임 시험 후 영구 저장하고 원본 주소를 제한하는 안전한 절차를 정리합니다.