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 모드로 부팅하고 전체 재레이블 작업과 서비스 검증을 계획해야 하며, 파일 수에 따라 재부팅 시간이 크게 늘어날 수 있습니다.
권장 문제 해결 순서
getenforce와sestatus로 현재 상태를 확인합니다.- 서비스 자체 로그와 파일 권한, 방화벽을 먼저 점검합니다.
- 필요하면 잠시 Permissive 모드로 전환해 증상을 비교합니다.
ausearch로 실제 거부 기록을 확인합니다.- 올바른 파일 문맥, 불리언 또는 포트 유형으로 최소 범위만 수정합니다.
- Enforcing 모드로 되돌리고 기능과 로그를 다시 검증합니다.
참고 문서
Rocky Linux SELinux 학습 가이드는 모드, 보안 문맥, 불리언과 문제 해결의 기본 원리를 설명합니다.









