システムバインディングルールはユーザーの断片化には影響しません。

システムバインディングルールはユーザーの断片化には影響しません。

testユーザー(1000)が1537以外のすべてのポートにバインドされるのを防ぎます。systemd.resourcecontrolユーザーSliceのとを設定しますSocketBindAllow=1537SocketBindDeny=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

自分で答えを見つけました。

説明どおりに動作しますが、現在Debianにあるものと一緒にコンパイルする必要があるsystemdため、+BPF_FRAMEWORKこれらのオプションは効果がありません。

関連情報