시스템 바인딩 규칙은 사용자 조각화에 영향을 주지 않습니다.

시스템 바인딩 규칙은 사용자 조각화에 영향을 주지 않습니다.

test사용자 (1000)가 1537을 제외한 모든 포트에 바인딩되는 것을 방지하고 싶습니다 .systemd.resourcecontrol사용자 Slice 에 대해 및 을 구성합니다 SocketBindAllow=1537.SocketBindDeny=any

하지만 여전히 사용자 테스트로 로그인하고 실행하여 nc -l 1234포트 1234에 바인딩할 수 있습니다. nc 프로세스가 사용자 슬라이스의 일부인지 확인했습니다. SocketBind*사용자가 바인딩할 수 있는 포트를 제한하는 데 사용할 수 있는 옵션과 방법이 있습니까?

# systemd --version
systemd 252 (252.6-1)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified
# cat << EOF > /etc/systemd/system/user-1000.slice.d/socket.conf
[Slice]
SocketBindAllow=80
SocketBindAllow=1537
SocketBindDeny=any
EOF
# systemd-daemon-reload
# systemctl show user-1000.slice | rg Bind
SocketBindAllow=1537
SocketBindAllow=80
SocketBindDeny=any
DropInPaths=/usr/lib/systemd/system/user-.slice.d/10-defaults.conf /etc/systemd/system.control/user-1000.slice.d/50-SocketBindDeny.conf /etc/systemd/system/user-1000.slice.d/socket.conf

또한 포트 80이 권한 있는 포트에서만 작동하는지 테스트하도록 허용하려고 시도했지만 예상대로 사용자는 test80에 바인딩할 수 없습니다.

답변1

나는 스스로 답을 찾았습니다.

설명대로 작동하지만 현재 데비안에 있는 것과 함께 컴파일 systemd해야 하므로 +BPF_FRAMEWORK이러한 옵션은 효과가 없습니다.

관련 정보