[CS/운영체제] 접근제어와 SELinux - 2부

황제연·2025년 5월 27일
0

CS학습

목록 보기
87/193
post-thumbnail

SELinux의 구조

  1. SELinux 환경에서 리눅스 User와 SELinux user가 각각 존재합니다
    SELinux user는 SELinux policy의 일부로 관리되고, 리눅스 user는 SELinux user에 매핑되어 관리됩니다
  2. 모든 프로세스와 파일에 Type이 있습니다
  3. 프로세스에 부여되는 Type은 보통 Domain을 정의하며,
    해당 프로세스는 자신만의 Domain에서 실행되어 다른 프로세스와 분리됩니다
  4. SELinux policy는 프로세스와 파일, 프로세스와 프로세스의 상호작용을 정의하고
    SELinux policy rule이 허용하는 경우에만 접근을 허용합니다
  5. SELinux는 리눅스 커널에 포함되어 동작합니다
    특정 프로세스에서 파일을 열거나 보안관련 접근이 발생하면 커널 차원에서 프로세스를
    가로채어 SELinux policy rule을 참조하여 접근을 통제합니다
  6. SELinux에서 접근을 허용하거나 금지하는 결정을 캐싱하는데 이것을 AVC(Access Vector Cache)라고 합니다
    이 캐시를 이용하여 접근 여부 결정단계가 신속하게 처리되어 성능을 향상시킵니다

SELinux의 적용 예시

  1. SELinux 기본정책은 거부이기 때문에, 별도로 허용하지 않으면 파일이나 프로세스 접근이 거부됩니다
  2. SELinux는 리눅스 user를 제한할 수 있어서, 리눅스 user를 SELinux의 user_u로 매핑하면
    set-UID 응용 프로그램의 실행을 제한할 수 있습니다
    따라서 su나 sudo 같은 명령을 실행할 수 없게 됩니다
  3. 각각의 프로세스가 자신만의 Domain에서 실행되므로 침입자가 HTTP Server의 취약점을 이용해 침입하였다고 하더라도 사용자의 홈 디렉토리 파일은 접근할 수 없습니다

SELinux 관련 에러 발생 시 대처방법

SELinux의 제한을 받는 데몬들의 서비스 작동 시 정상적으로 작동되지 않는 경우가 있습니다
이 경우에는 관련 로그를 검사해야합니다

초기 버전에서는 /var/log/messages에 기록했으나 최근 배포판 리눅스에서는 /var/log/audit/audit.log 파일에 기록됩니다

SELinux 관련 로그는 AVC로 나타나므로 이 부분을 찾아 관련 내용을 살펴본 후에 적절한 조치를 취하면 됩니다

참고

  • CentOS 7로 이해하는 리눅스 관리 및 시스템 보안 - 도서
profile
Software Developer

0개의 댓글