SELinux-CentOSx86_64 : 사용자 명령 제한


1

SELinux-CentOSx86_64 : 사용자 명령 제한

SELinux가이 작업에 적합한 도구입니까? 그렇다면 가장 좋은 방법은 무엇입니까?

특정 사용자가 미리 정의 된 명령 / 스크립트 목록 (홈 디렉토리에 있음) 만 실행하도록 제한하고 싶습니다. 또한 사용자 스크립트는 사용자가 직접 실행할 수없는 명령을 실행할 수있는 권한을 가질 수 있습니다 (예 : 사용자 스크립트 test.sh는 'ping localhost'를 호출 할 수 있지만 사용자는 명령 행에서 'ping localhost'를 직접 호출 할 수 없음). 이러한 제한 사항은 하나의 사용자 계정에만 필요하다고 생각합니다 (다른 사용자 계정에 대해 여러 가지 다른 구성이 필요하지 않음).

OS는 CentOSx86_64이고 SELinux는 다음과 같이 사용 가능합니다.

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

SELinux를 처음 접했지만 다음을 실험했습니다.

(1) MLS 정책이 가장 적합하다고 생각했습니다 (이 링크는 유망한 것으로 보입니다 : http://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html ) 이 작업을 위해 먼저 이것을 켜려고했습니다. 'SELinux 관리 GUI'는 대상에서 정책을 변경하는 옵션을 제공하지 않으므로 / etc / selinux / config를 직접 변경하려고했습니다. 재부팅 후 '커널 패닉'으로 끝났으므로 원래 설치된 정책 (예 : 대상)을 사용하기로 결정했습니다.

(2) SELinux Admin GUI에서 '최소 터미널 사용자 역할'정책 유형으로 새 정책을 작성했습니다. 'name'의 경우 'limiteduser'라고했습니다. 전환 할 역할을 선택하지 않았습니다. 추가 역할을 선택하지 않았습니다. 바인드 / 연결을 위해 'All'TCP 및 UDP 포트를 선택했습니다. 정책에 부울을 추가하지 않았습니다. 생성 된 .sh를 실행 한 후 새 SELinux 사용자 및 역할이 작성되었습니다. 그런 다음 로그인 이름을 'limiteduser'에 할당했습니다. 예상대로 이것은 매우 제한된 권한을 가진 사용자에게 나에게 주었다.

(3) 처음에이 새 사용자는 홈 디렉토리에 스크립트를 작성할 수 있었지만 실행할 수 없었습니다. 'allow_guest_exec_content'라는 부울을 설정 한 후 사용자는 스크립트를 실행할 수있었습니다. 처음에는 스크립트에 '에코'가 포함되었지만 일단 핑으로 변경하면 다시 실패했습니다. 이 새로운 사용자에 대해 'ping'을 허용하려는 시도에서 부울 user_ping의 선택을 해제했습니다 (하지만 guest_u가 아닌 user_u에만 적용된다고 생각합니다). 내가 원하는 것을하기 위해 대안은 'user_u'기반 유형을 정의한 다음 권한을 제거하는 것일 수 있습니다. 어떻게 해야할지 모르겠다!).

(4) 많은 온라인 소스가 src 디렉토리의 정책 파일에 대해 설명하지만 이것이 설치되지 않았으므로 설치할 패키지를 파악할 수 없었습니다. 다음 selinux 관련 패키지가 설치되어 있습니다.

libselinux.x86_64                   2.0.94-5.3.el6                     installed
libselinux-devel.x86_64             2.0.94-5.3.el6                     installed
libselinux-python.x86_64            2.0.94-5.3.el6                     installed
libselinux-utils.x86_64             2.0.94-5.3.el6                     installed
selinux-policy.noarch               3.7.19-126.el6_2.4                 @updates 
selinux-policy-targeted.noarch      3.7.19-126.el6_2.4                 @updates 
setools-console.x86_64              3.3.7-4.el6                        @base    
setools-devel.x86_64                3.3.7-4.el6                        @base    
setools-gui.x86_64                  3.3.7-4.el6                        @base    
setools-libs.x86_64                 3.3.7-4.el6                        @base    
setools-libs-java.x86_64            3.3.7-4.el6                        @base    
setools-libs-python.x86_64          3.3.7-4.el6                        @base    
setools-libs-tcl.x86_64             3.3.7-4.el6                        @base 

(5) http://lshell.ghantoos.org/ 와 같은 대체 제한 쉘을 보았지만 회사 요구 사항은 SELinux를 사용하는 것입니다. 그러나 이것은 안전하지 않을 수 있습니다.

나는 사용자 정의 정책을 정의해야한다고 생각합니다.

(a) 사용자가 홈 디렉토리에서 파일을 실행할 수 있도록합니다.

(b) 사용자에게 권한이없는 명령을 실행하기 위해 사용자 스크립트가 다른 유형으로 전환되도록합니다.

SELinux 관리 GUI (및 내가 알고있는 구성 파일)를 사용하는 방법을 모르겠습니다.

도움을 주셔서 감사합니다.

답변:


0

CentOS 6 인 패키지 버전에서 현재 구현중인이 문제에 대한 접근 방식은 감사 기능 (sudo를 통한 감사), 단순성 (MLS / MCS가 필요하지 않음) 및 제한이라는 주요 이점이 있습니다.

  • 사용자는 다음을 HOME사용하여 디렉토리를 제공받습니다.pam_namespace
  • 사용자에게 rbash로그인 쉘 이 제공 됩니다
  • 집 밖에서 다른 곳의 통제 된 장소를 가리키는 noexec,ro것과 같은 HOME이 장착 HISTFILE됩니다.
  • 사용자는 user_useuser 에 맵핑됩니다 .
  • 허용 된 (기본) 이진에 대한 심볼릭 링크가 존재하는 PATH경우 사용자는 읽기 전용 세트로 제한되어 ~/bin있습니다.
  • 의 사용은 sudo다른 명령하지에 대한 필수입니다~/bin
  • /etc/sudoers파일에는 및 sudoers 옵션 SELinux_Spec을 지정 하여 대상 사용자 / 명령의 역할 및 유형 적용을 고려한 규칙이 포함되어 있습니다.roletype

블로그 게시물은 사용 사례를 설명합니다. 스레드는 RHEL5 / CentOS5 및 RHEL6 / CentOS6과 관련된 사물의 상태를 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.