By running it on command line with strace, I know that for instance at least
sendtoandrecvfromsystemcalls are being used. However, when I empty the SystemCallFilter (SystemCallFilter=), the service still can be loaded and runs as usual.
CapabilityBoundingSet=CAP_NET_ADMIN AmbientCapabilities=CAP_NET_ADMIN
Resposta
Esses dois trechos de sua pergunta (acima) meio que respondem por que seu serviço OpenVPN está tendo acesso a todos os syscalls necessários.
Primeiro: SystemCallFilter= não bloqueia todos os syscalls. Manpage :
Note that the
execve,exit,exit_group,getrlimit,rt_sigreturn,sigreturnsystem calls and the system calls for querying time and sleeping are implicitly whitelisted and do not need to be listed explicitly.
Segundo: Se você der uma olhada na socket(7) página de manual, você Veja que praticamente todos os syscalls relacionados a soquetes (incluindo sendto e recvfrom ) e os recursos de manipulação de interface de rede podem ser acessados se CAP_NET_ADMIN estiver definido como um processo / arquivo. capabilities(7) página de manual:
CAP_NET_ADMIN Perform various network-related operations: * interface configuration; * administration of IP firewall, masquerading, and accounting; * modify routing tables; * bind to any address for transparent proxying; * set type-of-service (TOS) * clear driver statistics; * set promiscuous mode; * enabling multicasting; * use setsockopt(2) to set the following socket options: SO_DEBUG, SO_MARK, SO_PRIORITY (for a priority outside the range 0 to 6), SO_RCVBUFFORCE, and SO_SNDBUFFORCE.
Terceiro: NoNewPrivileges= será ignorado por SystemCallFilter= , SystemCallArchitectures= , RestrictAddressFamilies= , RestrictNamespaces= , PrivateDevices= , ProtectKernelTunables= , ProtectKernelModules= , MemoryDenyWriteExecute= , RestrictRealtime= ou% opçõesLockPersonality=. Dê uma olhada na manpage acima.
Se você der uma olhada na documentação, você verá que systemd está cheio de advertências, então, meu palpite é que, mesmo que você não esteja permitindo essas syscalls, elas são parte de CAP_NET_ADMIN .
Você pode usar systemd-analyze syscall-filter para verificar seu serviço openvpn.