
systemdサービスをサンドボックスするのと同じように、リモートLinux VMでユーザーセッションをサンドボックスしたいと思います。たとえば、サービスファイルで[Service]
次のように部分行に追加できます。
NoNewPrivileges=yes
PrivateDevices=yes
PrivateTmp=yes
ProtectKernelTunables=yes
ProtectSystem=strict
SystemCallFilter=...
特定のユーザーのすべてのユーザープロセスに対して同じことをしたいと思います。これを行う簡単な方法はありますか?
systemd --userを実行する上記の行を使用してsystemdデバイスを作成してこれを実行しようとしました。その後、sshd_configに次の行を追加しました。
Match User UserNameToRestrict
ForceCommand env XDG_RUNTIME_DIR=/run/user/UserIdToRestrict systemd-run --user --pipe --pty /bin/bash -l
これで仕事がうまくいくようです。たとえば、SSHを介してボックスに接続すると、次のような結果が発生します。
$ ssh UserNameToRestrict@my-host
Running as unit: run-u2.service
Press ^] three times within 1s to disconnect TTY.
UserNameToRestrict@my-host:~$ ping 1.1.1.
ping: socket: Operation not permitted
NoNewPrivileges
pingが実行中であるため、rawソケットを開く権限が拒否されましたsystemd --user
。
しかし、全体の設定がかなり複雑に見え、これを反転できるかどうかはわかりません。それでは、もっと直接的な方法がありますか?