SELINUX_ERR op=security_bounded_transition

SELINUX_ERR op=security_bounded_transition

그래서 공급업체진짜*nix에 Red Hat 시리즈 호스트에 대한 서비스 관리자와 에이전트가 있는지 모르겠습니다. (즉, 공급업체는 여기서 아무런 도움이 되지 않습니다.)

SELinux Enforcing이 포함된 Oracle Linux 7에서는 이 서비스 관리자와 에이전트를 문제 없이 수동으로 시작할 수 있습니다. 프록시가 서버에 연결되고 모든 것이 정상입니다.

systemd합격 했는데 systemctl, 서비스 매니저님이 잘 시작하셔서 journalctl좋은 출발을 보여주셨어요. 그러나 서비스 관리자가 에이전트를 시작하려고 하면 에이전트가 실패합니다. 에이전트 로그를 보면 에이전트가 다음 오류를 보고합니다.

Access to key store './agent.keystore' not possible

처음에는 /var/log/audit/audit.log여러 줄의 메시지를 포함하여 16줄의 메시지가 표시되었습니다 SELINUX_ERR. 시도한 후

chcon --type init_exec_t \
 /path/to/agent \
 /path/to/agent.ini \
 /path/to/agent.keystore

SELinux 메시징을 다음 네 줄로 줄였습니다.

type=SERVICE_START msg=audit(1490115506.797:14942): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=[UNIT NAME] comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SELINUX_ERR msg=audit(1490115506.818:14943): op=security_bounded_transition seresult=denied oldcontext=system_u:system_r:init_t:s0 newcontext=system_u:system_r:unconfined_service_t:s0
type=SYSCALL msg=audit(1490115506.818:14943): arch=c000003e syscall=59 success=yes exit=0 a0=55b4fd411540 a1=55b4fd3ee990 a2=55b4fd3223b0 a3=ffffffe0 items=0 ppid=1 pid=23199 auid=4294967295 uid=21908 gid=1040 euid=21908 suid=21908 fsuid=21908 egid=1040 sgid=1040 fsgid=1040 tty=(none) ses=4294967295 comm="[SERVICEMGR]" exe="[/PATH/TO/SERVICEMGR]" subj=system_u:system_r:init_t:s0 key=(null)
type=PROCTITLE msg=audit(1490115506.818:14943): proctitle=[REALLY LONG HEX STRING]

ls -Z영향을 받는 디렉터리는 다음과 같습니다.

-rwsr-xr-x. root    appuser unconfined_u:object_r:init_exec_t:s0 agent
-rw-r-----. appuser appuser unconfined_u:object_r:init_exec_t:s0 agent.ini
-r--------. root    root    unconfined_u:object_r:init_exec_t:s0 agent.keystore

키 저장소에 대한 읽기 권한을 확장해도 오류 메시지는 변경되지 않습니다.

따라서 chconSELinux 오류 로드가 줄어들었지만 제거되지는 않았습니다. 에이전트 로그에 여전히 "키 저장소에 액세스할 수 없습니다"라는 메시지가 표시됩니다. SELINUX_ERR지금까지 이 특정 문제를 처리하는 방법에 대한 유용한 정보를 찾지 못했습니다.

이 문제를 해결한 사람이 있나요 SELINUX_ERR op=security_bounded_transition?

ls -Z업데이트 1: 서비스 관리자 정보 는 다음과 같습니다 .

-rwxr-xr-x. appuser appuser unconfined_u:object_r:usr_t:s0   servicemgr

업데이트 2:

servicemgr파일 형식을 변경해 보았 init_exec_t으나 동작이 바뀌지 않았습니다. 나는 나중에 그것을 다시 바꿨다 usr_t. 지금 내 생각에는 에이전트 파일을 변경하면 init_exec_t오류 메시지가 75% 줄어들기 때문에 문제의 일부가 해결될 것 같습니다. 현재 내 생각은 init_exec_t파일 컨텍스트에서 읽을 수 있는 SELinux 파일 유형을 식별해야 한다는 것입니다 .

업데이트 3:

아래 @Jakuje 님의 댓글을 보고 확인해보니 semanage fcontext -l목록 unconfined_service_t에 없어도 놀랍지 않습니다. 특정 컨텍스트가 예약되어 있지 않은 파일은 관계가 usr_t무엇인지 알 수 없습니다 .usr_tunconfined_service_t

나는 sealert과거에 Google의 도움을 받아 맞춤 정책을 만든 적이 있습니다. 이러한 바이너리를 실행하기 위해 사용자 지정 정책을 만들어야 하는 경우 필요한 것은 좋은 시작 안내서뿐입니다. Google은 이에 대해 도움을 주지 않습니다. 일어나야 할 한 가지는 security_bounded_transition이 문제를 해결해야 한다는 것입니다. 그러므로 내가 만들거나 끝내는 환경이 무엇이든 init_t전환할 때 질식하지 않아야 합니다.

답변1

안돼, 안돼, 안돼, 안돼, 안돼!

SELinux가 존재하는 데에는 이유가 있습니다. 애플리케이션에는 init_exec_t라벨이 있어서는 안 됩니다. 이 태그는 시스템에서 사용할 수 있는 systemd 또는 기타 init 시스템용으로 예약되어 있습니다.페도라 정책(예를 들어).

이 컨텍스트에서 응용 프로그램을 실행하면 응용 프로그램이 특별히 처리되고 응용 프로그램이 init 시스템처럼 동작할 것으로 예상됩니다(물론 그렇지 않습니다).

이 문제를 해결하려면 애플리케이션이 수행해야 하는 작업, 실행 방법, 저장 위치를 ​​공유해야 합니다. 일반적으로 실행 파일에 대해 적절한 실행 컨텍스트(?)를 설정할 수 있어야 sbin_exec_t하고 해당 파일을 읽을 수 있는 다른 파일에 대해 일부 일반 컨텍스트(?)를 설정할 수 있어야 합니다 etc_t.

지금은 더 구체적인 힌트를 제공할 수 있는 RHEL/Fedora가 없지만 모든 컨텍스트를 init_exec_t.

답변2

그것은 중요하지 않습니다. 그리고 이마 중앙에 보이는 멍은 테이블에 머리를 세게 부딪쳐서 생긴 멍이에요...

에이전트 바이너리가 루트 디렉터리라는 것을 알고 있음에도 불구하고 /opt파일 시스템을 설정했습니다 .nosuidsetuid()

관련 정보