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이 실행 중이기 때문에 원시 소켓을 여는 권한이 거부되었습니다 systemd --user
.
하지만 전체 설정이 꽤 복잡해 보이고 이를 뒤집을 수 있을지 잘 모르겠습니다. 그렇다면 좀 더 직접적인 방법이 있을까요?