selinux를 허용으로 설정하는 것보다 chcon을 사용하여 selinux를 더 안전하게 우회하는 것이 더 안전합니까?

selinux를 허용으로 설정하는 것보다 chcon을 사용하여 selinux를 더 안전하게 우회하는 것이 더 안전합니까?

chconSELinux를 사용하여 허용 모드에서 CentOS 7 서버를 SELinux보다 덜 안전하게 만드는 것이 가능한지 궁금합니다 . 저는 기본적으로 rbenvsudoer(사용자의 홈 디렉터리에 Ruby 라이브러리, 바이너리, libs 등을 기본적으로 설치하는 Ruby 버전 관리자)가 아닌 사용자와 함께 설치된 Ruby 버전을 사용하기 위해 Nginx를 사용하여 Phusion Passenger를 설정하려고 합니다 . 저는 SELinux 부울과 같은 다양한 문제를 근본적으로 해결하기 위해 유사한 도구를 사용했지만 setroubleshoot-server특정 사용자의 홈 디렉토리에 설치된 Ruby 버전의 문제를 진단하는 데는 도움이 되지 않았습니다. 다음 조건에서는 Phusion Passenger 및 Nginx에서 모든 것이 잘 작동합니다.

  • 시스템 전체 Ruby(v2.0) 설치 사용(적용 모드의 SELinux)
  • 설치된 Ruby(v2.2.3) 사용 rbenv(허용 모드의 SELinux)
  • rbenv다음 명령을 실행한 후 설치된 Ruby(v2.2.3)(SELinux는 적용 모드에 있음)를 사용하십시오.

    chcon -R --reference /bin /home/myuser/.rbenv/

관찰된 동작을 확인하기 위해 구성 변경 사이에 서버를 다시 시작했습니다.

Ruby 버전이 포함된 폴더의 보안 컨텍스트를 chcon변경하여 해당 폴더와 동일한 보안 컨텍스트를 갖게 함으로써 기본적으로 SELinux를 우회하는 것처럼 느껴집니다 . 이러한 방식으로 사용하면 의도하지 않은 보안 결과가 발생합니까?rbenv/binchcon

이는 질문의 범위를 벗어날 수 있지만 Nginx 및 Phusion Passenger와 함께 사용하기 위해 사용자의 홈 디렉터리에 설치된 Ruby 인터프리터의 보안 컨텍스트를 설정하는 올바른 방법이 있습니까?

답변1

SELinux는 기본적으로 명시적으로 허용되지 않는 모든 것을 거부합니다. SELinux가 허용 모드에서 실행 중인 경우 SELinux는 권한 거부를 기록하지만 이를 시행하지는 않습니다(즉, SELinux는 작업 완료를 방해하지 않습니다). 시행 모드에서 SELinux는 권한 거부를 기록하고 시행합니다(즉, SELinux는 작업 완료를 방지합니다).

기본적으로 SELinux를 우회하는 방식을 사용한다고 해서 chcon허용 모드에서 SELinux를 사용하는 것보다 시스템이 더 안전해지는 것은 아닙니다. 강제 모드의 SELinux는 사용자가 건드리지 않은 시스템의 다른 모든 부분에 대한 작업을 여전히 거부하기 때문입니다 chcon.

원천:https://source.android.com/security/selinux/

관련 정보