>  기사  >  운영 및 유지보수  >  SELinux의 세 가지 작업 모드는 무엇입니까?

SELinux의 세 가지 작업 모드는 무엇입니까?

青灯夜游
青灯夜游원래의
2023-02-13 10:04:136196검색

SELinux에는 비활성화, 허용, 시행의 세 가지 작업 모드가 있습니다. 비활성화 모드에서는 SELinux가 꺼지고 기본 DAC 액세스 제어 방법이 사용됩니다. 허용 모드에서는 SELinux가 활성화되지만 보안 정책 규칙이 액세스를 거부해야 하는 경우에도 보안 정책 규칙이 적용되지 않습니다. 적용 모드에서는 SELinux가 시작되고 모든 보안 정책 규칙이 적용됩니다.

SELinux의 세 가지 작업 모드는 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

SELinux란 무엇입니까

SELinux는 Security Enhanced Linux의 약자로 보안이 강화된 Linux로 미국 국가안보국(NSA)과 기타 보안기관(SCC Corporation 등)이 공동 개발한 것입니다. ) 기존 Linux 운영 체제의 보안을 강화하고 기존 Linux 시스템의 DAC(Discretionary Access Control) 시스템에서 발생하는 다양한 권한 문제(예: 과도한 루트 권한 등)를 해결하도록 설계되었습니다.

SELinux 프로젝트는 2000년에 GPL 라이센스에 따라 오픈 소스로 제공되었습니다. SELinux는 Red Hat이 Linux 배포판에 SELinux를 포함시키면서 점차 인기를 얻었습니다. 이제 SELinux는 많은 조직에서 널리 사용되고 있으며 거의 ​​모든 Linux 커널 버전 2.6 이상에는 SELinux 기능이 통합되어 있습니다.

초보자도 SELinux를 이렇게 이해할 수 있습니다. 시스템 보안을 강화하기 위해 Linux에 배포되는 기능적 모듈입니다.
기존 Linux 시스템에서는 기본 권한이 파일이나 디렉터리의 소유자, 그룹 및 다른 사람의 읽기, 쓰기 및 실행 권한을 제어하는 ​​것임을 알고 있습니다. 이 제어 방법을 DAC(임의 액세스 제어) 방법이라고 합니다. ; SELinux에서는 MAC(Mandatory Access Control) 시스템이 사용되는데, 이는 프로세스가 특정 파일 시스템의 파일이나 디렉터리에 대한 액세스 권한을 가지고 있는지 여부와 프로세스가 파일이나 디렉터리에 액세스할 수 있는지 여부를 결정하는 기준입니다. . 는 SELinux에 설정된 많은 정책 규칙에 따라 달라집니다.

이렇게 말하면 독자들이 이 두 가지 접근 제어 시스템의 특징을 자세히 이해할 필요가 있습니다.

  • Discretionary Access Control(DAC) 은 Linux의 기본 접근 제어 방법으로 사용자 기반입니다. ID와 파일 및 디렉터리에 대한 ID의 rwx 권한은 액세스 가능 여부를 결정하는 데 사용됩니다. 그러나 실제 DAC 액세스 제어 사용에서도 몇 가지 문제점을 발견했습니다.
    루트 권한이 너무 높아 루트 사용자에게 rwx 권한이 유효하지 않습니다. 일단 루트 사용자를 도난당하거나 루트 사용자 자체가 오작동하면 Linux 시스템에 치명적인 위협이 됩니다.
    Linux의 기본 권한은 소유자, 자신이 속한 그룹 및 다른 사람의 신원만 갖고 있어 권한 세분화 및 실행에 도움이 되지 않습니다. 환경.
    권한을 부당하게 할당하면 시스템의 민감한 파일이나 디렉터리에 대해 777 권한을 설정하거나 특수 권한(민감한 파일에 SetUID 권한 등)을 설정하는 등 심각한 결과를 초래할 수 있습니다.
  • MAC(Mandatory Access Control)는 SELinux의 기본 정책 규칙을 통해 시스템 파일 리소스에 대한 특정 프로세스의 액세스를 제어합니다. 즉, 루트 사용자라도 파일 리소스에 접근할 때 잘못된 프로세스를 사용하면 해당 파일 리소스에 접근할 수 없게 됩니다.

이런 방식으로 SELinux는 사용자와 권한뿐만 아니라 프로세스도 제어합니다. 각 프로세스가 액세스할 수 있는 파일 리소스와 각 파일 리소스가 액세스할 수 있는 프로세스는 SELinux 규칙 정책에 따라 결정됩니다.

SELinux에서는 Linux의 기본 권한이 여전히 유효하다는 점에 유의하세요. 즉, 사용자가 파일에 액세스하려면 rwx 권한을 준수해야 하며 사용자의 프로세스가 필요합니다. SELinux의 규정을 준수합니다.

하지만 시스템에는 프로세스와 파일이 너무 많아 수동으로 할당하고 지정하면 작업 부하가 너무 커집니다. 따라서 SELinux는 비교적 완전한 기본 정책 규칙을 많이 제공하며 이러한 정책 규칙을 보고 관리하는 방법은 나중에 배우겠습니다.

독자들에게 SELinux가 수행하는 역할을 명확하게 이해할 수 있도록 다음은 원격 사용자가 시스템의 민감한 파일(예: /etc/shadow)에 액세스할 수 있는 취약점이 발견되었다고 가정합니다. . Linux에서 SELinux가 활성화된 경우 Apache 서비스 프로세스에는 /etc/shadow에 대한 액세스 권한이 없기 때문에 원격 사용자가 Apache를 통해 /etc/shadow 파일에 액세스하는 것은 SELinux에 의해 차단됩니다. 리눅스. 시스템의 역할.

SELinux 작업 모드(비활성화, 허용 및 적용)

기존 Linux 시스템에서 사용하는 액세스 제어 방법을 기반으로 SELinux를 추가로 사용하면 시스템 보안이 향상될 수 있습니다. 그렇다면 SELinux는 어떻게 작동합니까?

SELinux의 작동 모드를 설명하기 전에 몇 가지 개념을 설명하겠습니다.

1.Subject: 파일이나 디렉터리 리소스에 접근하려는 프로세스입니다. 리소스를 얻기 위한 기본 프로세스는 사용자가 명령을 호출하고, 명령이 프로세스를 생성하고, 프로세스가 파일이나 디렉터리 리소스에 액세스하는 과정입니다. 임의 접근 제어 시스템(Linux 기본 권한)에서 권한에 의해 제어되는 주체는 사용자이고, 필수 접근 제어 시스템(SELinux)에서 정책 규칙에 의해 제어되는 주체는 프로세스입니다.
2. Object(Object): 이 개념은 비교적 명확하며 액세스해야 하는 파일 또는 디렉터리 리소스입니다.
3. Policy: Linux 시스템에는 엄청난 수의 프로세스와 파일이 있으므로 프로세스가 파일에 액세스할 수 있는지 여부를 제한하는 SELinux 규칙의 수는 훨씬 더 번거롭습니다. 각 규칙에 관리자가 수동으로 설정해야 하는 경우 SELinux의 가용성은 매우 낮습니다. 다행스럽게도 SELinux에서는 기본적으로 두 가지 정책을 정의할 필요가 없습니다. 기본적으로 해당 정책을 호출하면 정상적으로 사용할 수 있습니다. 두 가지 기본 정책은 다음과 같습니다.

  • -targeted: SELinux의 기본 정책입니다. 이 정책은 주로 네트워크 서비스를 제한하며 로컬 시스템에 대한 제한은 거의 없습니다. 우리에게는 이 전략이면 충분합니다.
  • -mls: 다단계 보안 보호 전략, 이 전략은 더 제한적입니다.

4. 보안 컨텍스트: 각 프로세스, 파일 및 디렉터리에는 고유한 보안 컨텍스트가 있습니다. 프로세스가 파일이나 디렉터리에 액세스할 수 있는지 여부는 보안 컨텍스트가 일치하는지에 따라 다릅니다. 프로세스의 보안 컨텍스트가 파일이나 디렉터리의 보안 컨텍스트와 일치하면 프로세스는 파일이나 디렉터리에 액세스할 수 있습니다. 물론 프로세스의 보안 컨텍스트가 파일이나 디렉터리의 보안 컨텍스트와 일치하는지 확인하려면 정책의 규칙을 사용해야 합니다.

예를 들어 파트너를 찾아야 하는데, 남자는 주체로, 여자는 타겟으로 볼 수 있습니다. 남자가 여자를 추적할 수 있는지(주체가 대상에 접근할 수 있는지)는 주로 두 사람의 성격이 적합한지(주체와 대상의 보안 맥락이 일치하는지)에 달려 있다. 그러나 두 사람의 성격이 적합한지는 생활 습관, 행동, 가족 환경 등 구체적인 조건을 토대로 판단해야 한다. (보안 맥락이 일치하는지 여부는 정책 내 규칙을 통해 판단해야 한다.)

그림 1과 같이 이러한 개념 간의 관계를 보여주는 개략도를 그려 보겠습니다.

SELinux의 세 가지 작업 모드는 무엇입니까?
그림 1 SELinux 운영 모드의 관련 개념

이 도식 다이어그램을 설명하십시오. 주체가 대상에 액세스하려고 할 때 SELinux가 시스템에서 시작되면 먼저 주체의 액세스 요청이 다음에 정의된 정책과 일치해야 합니다. SELinux 일치. 프로세스가 정책에 정의된 규칙을 준수하면 접근이 허용되며, 이때 프로세스의 보안 컨텍스트와 대상의 보안 컨텍스트를 일치시킬 수 있으며, 비교에 실패하면 접근이 거부되고 접근 벡터 캐시가 생성됩니다. 주로 SELinux 관련 모든 접속 통계를 기록하고 접속 거부 정보를 생성하는데 사용됩니다. 보안 컨텍스트가 일치하면 대상 파일에 정상적으로 접근할 수 있다. 물론, 최종적으로 대상 파일에 실제로 접근할 수 있는지 여부는 프로세스(주체)를 생성한 사용자에게 대상 파일에 대한 합당한 읽기, 쓰기, 실행 권한이 있는지 여부에 따라 달라집니다.

SELinux를 관리할 때 일반적으로 프로세스가 파일이나 디렉터리 리소스에 액세스할 수 있는지 여부를 제어하기 위해 액세스하는 프로세스의 보안 컨텍스트를 일치시키거나 불일치시키기 위해 파일이나 디렉터리의 보안 컨텍스트를 수정하는 경우가 많습니다. 규칙이 너무 많고 수정하기가 너무 복잡하므로 정책의 특정 규칙을 수정하세요. 그러나 규칙의 활성화 및 비활성화를 제어하기 위해 규칙이 적용되는지 여부를 수동으로 정의할 수 있습니다.

SELinux의 작업 모드SELinux는 비활성화, 허용, 적용의 3가지 작업 모드를 제공하며 각 모드는 Linux 시스템 보안에 서로 다른 이점을 제공합니다.

  • 작업 모드 비활성화(오프 모드)

  • 비활성화 모드에서는 SELinux가 꺼지고 기본 DAC 액세스 제어 방법이 사용됩니다. 이 모드는 강화된 보안이 필요하지 않은 환경에 유용합니다.

예를 들어, 실행 중인 애플리케이션이 사용자의 관점에서는 잘 작동하지만 많은 SELinux AVC 거부 메시지를 생성하는 경우 결국 로그 파일이 가득 차고 시스템을 사용할 수 없게 될 수 있습니다. 이 경우 가장 간단한 해결책은 SELinux를 비활성화하는 것이지만, 애플리케이션이 액세스하는 파일에 올바른 보안 컨텍스트를 설정할 수도 있습니다.

SELinux를 비활성화하기 전에 시스템에서 SELinux를 다시 사용할 수 있는지 고려해야 합니다. 나중에 이를 강제 또는 허용으로 설정하면 시스템이 자동 SELinux 파일을 전달합니다. 다음에 태그를 다시 처리하세요.

SELinux를 끄는 방법도 매우 간단합니다. /etc/selinux/config 구성 파일을 편집하고 텍스트에서 SELINUX=disabled로 변경하면 시스템을 다시 시작하면 SELinux가 비활성화됩니다.

  • Permissive 작업 모드(permissive 모드)

Permissive 모드에서는 SELinux가 활성화되지만 보안 정책 규칙은 시행되지 않습니다. 보안 정책 규칙이 액세스를 거부해야 하는 경우에도 액세스는 계속 허용됩니다. 그러나 액세스가 거부되어야 함을 나타내는 메시지가 로그 파일로 전송됩니다.

SELinux 허용 모드는 주로 다음 상황에서 사용됩니다.
현재 SELinux 정책 규칙을 검토합니다.
SELinux 정책 규칙이 이러한 프로그램에 적용될 때 어떤 영향을 미치는지 확인합니다.
특정 서비스 또는 문제 해결. SELinux에서는 애플리케이션이 더 이상 제대로 작동하지 않습니다.

어떤 경우에는 audit2allow 명령을 사용하여 SELinux 감사 로그를 읽고 거부된 동작을 선택적으로 허용하는 새로운 SELinux 규칙을 생성할 수 있습니다. 이는 또한 SELinux를 비활성화하지 않고 애플리케이션을 허용하는 방법이기도 합니다. Linux에서 프로그램이 작동하도록 하는 빠른 방법입니다. 시스템.

  • Enforcing 작업 모드(enforcement 모드)

이 모드 이름에서 알 수 있듯이 Enforcing 모드에서는 SELinux가 시작되고 모든 보안 정책 규칙이 적용됩니다.

관련 추천: "Linux 비디오 튜토리얼"

위 내용은 SELinux의 세 가지 작업 모드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.