SELinux: socat이 unreserved_port_t에서 실행되도록 허용합니다.

SELinux: socat이 unreserved_port_t에서 실행되도록 허용합니다.

저는 SELinux를 사용하여 임베디드 배포판을 개발 중입니다.

이 문제가 있습니다.

root@unknown7:~# socat openssl-listen:7777,reuseaddr, stdio
2022/02/03 13:44:44 socat[2331] E bind(5, {AF=2 0.0.0.0:7777}, 16): Permission denied

audit2allow에서는 정책에 다음 줄을 추가할 것을 권장합니다.

allow sysadm_t unreserved_port_t:tcp_socket name_bind;

하지만 그렇게 하면 SELinux 정책이 컴파일되지 않습니다.

| Compliling mls sysadm.mod module
| policy/modules/roles/sysadm.te:54:ERROR 'unknown type unreserved_port_t' at token ';' on line 25502:
| allow sysadm_t unreserved_port_t:tcp_socket name_bind;
| allow sysadm_t node_t:tcp_socket node_bind;
| [...]/usr/bin/checkmodule:  error(s) encountered while parsing configuration
| [...]/tmp/sysroots/x86_64-linux/usr/bin/checkmodule:  loading policy configuration from tmp/sysadm.tmp
| make: *** [tmp/sysadm.mod] Error 1
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (log file is located at [...]/tmp/work/namc_p2041-fsl-linux/refpolicy-mls/git-r0/temp/log.do_compile.14399)
ERROR: Task 2020 ([...]/sources/meta-selinux/recipes-security/refpolicy/refpolicy-mls_git.bb, do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3770 tasks of which 3746 didn't need to be rerun and 2 failed.
Waiting for 0 running tasks to finish:

Summary: 2 tasks failed:
  [...]sources/meta-selinux/recipes-security/refpolicy/refpolicy-standard_git.bb, do_compile
  [...]/QorIQ-SDK-V2.0-20160527-yocto/sources/meta-selinux/recipes-security/refpolicy/refpolicy-mls_git.bb, do_compile
Summary: There were 4 ERROR messages shown, returning a non-zero exit code.

내 질문:

  1. SELinux를 사용하여 모든 포트를 여는 방법이 있습니까? 나는 이것이 처음에 SELinux의 원칙에 어긋난다는 것을 알고 있지만 이는 개발 목적으로만 사용됩니다.

  2. 다른 예약된 port_ts에 대한 제한을 유지하면서 unrestricted_port_t만 여는 방법이 있습니까?

  3. 몇 개의 포트(7777, 7778 등)에만 액세스를 허용하고 싶습니다. 내 정책에 이를 어떻게 선언하나요? 새로운 .te, .fc, .if 파일을 만들어야 합니까?

관련 정보