Red Hat Training

A Red Hat training course is available for RHEL 8

1.3. SELinux 예

다음 예제에서는 SELinux가 보안을 강화하는 방법을 보여줍니다.

  • 기본 작업은 deny입니다. 파일을 여는 프로세스와 같이 액세스를 허용하기 위한 SELinux 정책 규칙이 없으면 액세스가 거부됩니다.
  • SELinux는 Linux 사용자를 제한할 수 있습니다. SELinux 정책에는 많은 제한된 SELinux 사용자가 있습니다. 제한된 SELinux 사용자에게 Linux 사용자를 매핑하여 보안 규칙 및 메커니즘을 활용할 수 있습니다. 예를 들어 Linux 사용자를 SELinux user_u 사용자에게 매핑하면 sudo 및 su와 같은 sudosu 와 같은 사용자 ID(setuid) 애플리케이션을 설정하지 않으면 Linux 사용자가 실행되지 않습니다.
  • 프로세스 및 데이터 분리 증가. SELinux 도메인 개념을 사용하면 특정 파일 및 디렉터리에 액세스할 수 있는 프로세스를 정의할 수 있습니다. 예를 들어, SELinux를 실행할 때 공격자는 Samba 서버를 손상시킬 수 없으며 MariaDB 데이터베이스와 같은 다른 프로세스에서 사용하는 파일을 읽고 쓸 수 있는 공격 벡터로 해당 Samba 서버를 사용할 수 없습니다.
  • SELinux를 사용하면 구성 실수로 인한 손상을 완화할 수 있습니다. DNS(Domain Name System) 서버는 영역 전송에서 서로 간에 정보를 복제하는 경우가 많습니다. 공격자는 영역 전송을 사용하여 false 정보로 DNS 서버를 업데이트할 수 있습니다. RHEL의 DNS 서버로 Berkeley Internet Name Domain(BIND)을 실행하는 경우 관리자가 영역 전송을 수행할 수 있는 서버를 제한하는 것을 잊어버리더라도 기본 SELinux 정책은 영역 파일 업데이트를 방지합니다. [1] 영역 전송을 사용하는 경우 데몬 자체 및 기타 프로세스에 의해 이름이 지정된 BIND입니다.
  • SELinux가 없으면 공격자는 Apache 웹 서버의 traversal을 라우팅하기 위해 취약점을 악용할 수 있으며, . / 와 같은 특수 요소를 사용하여 파일 시스템에 저장된 파일 및 디렉터리에 액세스할 수 있습니다. 공격자가 강제 모드에서 SELinux로 실행되는 서버를 공격하는 경우 SELinux는 httpd 프로세스가 액세스할 수 없는 파일에 대한 액세스를 거부합니다. SELinux는 이러한 유형의 공격을 완전히 차단할 수는 없지만 효과적으로 완화합니다.
  • 강제 모드의 SELinux는 비SMAP 플랫폼에서 커널 NULL 포인터 역참조 연산자(CVE-2019-9213)를 악용하지 않습니다. 공격자는 mmap 함수의 취약점을 악용하여 null 페이지의 매핑을 확인하지 않고 이 페이지에 임의의 코드를 배치합니다.
  • enforcing 모드에서 deny_ptrace SELinux 부울 및 SELinux는 PTRACE_TRACEME 취약점(CVE-2019-13272)으로부터 시스템을 보호합니다. 이러한 구성으로 인해 공격자가 root 권한을 얻을 수 있는 시나리오가 방지됩니다.
  • nfs_export_all_rwnfs_export_all_ro SELinux 부울을 사용하면 실수로 /home 디렉터리와 같은 NFS(Network File System)의 잘못된 설정을 방지하기 위해 사용하기 쉬운 툴이 제공됩니다.

추가 리소스



[1] IP 주소 매핑에 대한 호스트 이름과 같은 DNS 정보가 포함된 텍스트 파일입니다.