liminfo

SELinux Reference

SELinux 보안 레퍼런스

41개 결과

SELinux Reference 소개

SELinux 레퍼런스는 8개 카테고리로 구성된 SELinux 관리 명령어 치트 시트입니다. 모드(getenforce, setenforce, sestatus), 컨텍스트(ls -Z, chcon, restorecon, semanage fcontext), 정책(semodule, sesearch, seinfo, audit2allow), 부울(getsebool, setsebool), 모듈, 포트(semanage port), 파일(matchpathcon, fixfiles), 트러블슈팅(ausearch, sealert, audit2why)을 다룹니다.

각 명령어 항목에는 구문, 기능 설명, 실무 예시가 포함됩니다. 사용자 정의 웹 디렉토리에 httpd_sys_content_t 설정, httpd_can_network_connect 활성화, 사용자 정의 포트 레이블 추가, AVC 거부 로그에서 정책 모듈 생성 등의 실전 사용 예시를 제공합니다.

SELinux가 기본 활성화된 RHEL, CentOS, AlmaLinux, Rocky Linux, Fedora 시스템을 관리하는 리눅스 시스템 관리자, DevOps 엔지니어, 보안 전문가를 위해 설계되었습니다. 모든 콘텐츠는 서버 의존성 없이 브라우저에서 로컬로 실행됩니다.

주요 기능

  • 완전한 모드 관리: getenforce, setenforce, sestatus, /etc/selinux/config, 커널 파라미터 레퍼런스
  • 파일 컨텍스트 명령어: ls -Z, chcon, restorecon, semanage fcontext와 실제 httpd_sys_content_t 예시
  • 정책 도구: 사용자 정의 규칙 생성을 위한 semodule, sesearch, seinfo, sepolicy, audit2allow
  • 부울 관리: getsebool, setsebool -P 및 일반적인 httpd와 네트워크 부울 문서
  • 포트 레이블 관리: http_port_t에 8080 같은 사용자 정의 포트 추가를 위한 semanage port -a/-d/-m
  • 트러블슈팅 도구: ausearch -m avc, sealert, audit2why, setroubleshoot, 디버깅용 semodule -DB
  • 정책 모듈 생명주기: checkmodule 컴파일, semodule_package, 설치, 제거 명령어
  • 8개 카테고리 전체 검색 지원, 다크 모드와 모바일 반응형 레이아웃

자주 묻는 질문

현재 SELinux 모드를 어떻게 확인하나요?

"getenforce"를 실행하면 현재 모드(Enforcing, Permissive, Disabled)를 확인할 수 있습니다. 정책 유형 등 더 자세한 정보는 "sestatus"를 실행하면 SELinux 상태, 로드된 정책 이름, 정책 모드, MLS/MCS 상태를 보여줍니다. 영구 설정은 /etc/selinux/config에 저장됩니다.

SELinux가 웹 파일 접근을 거부할 때 어떻게 해결하나요?

먼저 "ls -Z /var/www/html/"로 파일 컨텍스트를 확인합니다. 파일 타입이 잘못되었으면 영구 규칙을 추가합니다: "semanage fcontext -a -t httpd_sys_content_t \"/mysite(/.*)?\""를 실행한 후 "restorecon -Rv /mysite"로 적용합니다. 쓰기 가능한 디렉토리에는 httpd_sys_rw_content_t를 사용하세요.

Apache가 네트워크 서비스에 연결하도록 허용하려면 어떻게 하나요?

httpd_can_network_connect 부울을 활성화합니다: "setsebool -P httpd_can_network_connect on". -P 플래그는 재부팅 후에도 유지되도록 합니다. "getsebool -a | grep httpd"로 모든 httpd 관련 부울을 나열하여 데이터베이스 연결용 httpd_can_network_connect_db 등 관련 권한을 찾을 수 있습니다.

웹 서버용 사용자 정의 포트를 SELinux에 추가하려면 어떻게 하나요?

semanage port로 포트를 추가합니다: "semanage port -a -t http_port_t -p tcp 8080". 확인하려면 "semanage port -l | grep http_port_t"를 실행합니다. 포트가 이미 다른 타입에 할당되어 있으면 -a(추가) 대신 -m(수정)을 사용하세요. 사용자 정의 포트 레이블을 제거하려면 "semanage port -d"를 사용합니다.

AVC 거부에서 사용자 정의 SELinux 정책 모듈을 어떻게 만드나요?

감사 로그에서 거부를 필터링하고 모듈을 생성합니다: "grep denied /var/log/audit/audit.log | audit2allow -M myfix" 후 설치: "semodule -i myfix.pp". 더 세밀한 제어를 위해 -M 없이 audit2allow를 사용하여 규칙을 먼저 검토한 다음 checkmodule과 semodule_package로 수동 컴파일합니다.

SELinux AVC 거부를 어떻게 트러블슈팅하나요?

"ausearch -m avc -ts recent"로 최근 거부를 찾습니다. "audit2why"로 파이프하여 근본 원인을 분석합니다. setroubleshoot-server를 설치하고 "sealert -a /var/log/audit/audit.log"를 실행하면 수정 제안이 포함된 읽기 쉬운 설명을 볼 수 있습니다. 숨겨진 거부를 디버깅하려면 "semodule -DB"로 dontaudit 규칙을 임시 비활성화합니다.

chcon과 semanage fcontext의 차이는 무엇인가요?

chcon은 파일 컨텍스트를 임시로 변경하며 restorecon이나 리라벨링 시 원복됩니다. semanage fcontext는 파일 컨텍스트 정책에 영구 규칙을 추가하므로 restorecon과 리라벨링 후에도 유지됩니다. 영구적 변경을 위해 항상 "semanage fcontext -a -t 타입 패턴" 후 "restorecon -Rv 경로"를 사용하세요.

SELinux를 영구적으로 비활성화하려면 어떻게 하나요?

/etc/selinux/config를 편집하여 SELINUX=disabled로 설정한 후 재부팅합니다. 또는 "grubby --update-kernel ALL --args selinux=0"으로 커널 파라미터에 "selinux=0"을 추가합니다. 운영 서버에서는 비활성화를 권장하지 않으며, 임시 트러블슈팅을 위해서는 "setenforce 0"으로 Permissive 모드 사용을 고려하세요.