52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
|
{ lib, ... }:
|
||
|
let
|
||
|
pools = map (pool: "phpfpm-${pool}") [
|
||
|
"idp"
|
||
|
"mediawiki"
|
||
|
"pvv-nettsiden"
|
||
|
"roundcube"
|
||
|
"snappymail"
|
||
|
];
|
||
|
in
|
||
|
{
|
||
|
# Source: https://www.pierreblazquez.com/2023/06/17/how-to-harden-apache-php-fpm-daemons-using-systemd/
|
||
|
systemd.services = lib.genAttrs pools (_: {
|
||
|
serviceConfig = let
|
||
|
caps = [
|
||
|
"CAP_NET_BIND_SERVICE"
|
||
|
"CAP_SETGID"
|
||
|
"CAP_SETUID"
|
||
|
"CAP_CHOWN"
|
||
|
"CAP_KILL"
|
||
|
"CAP_IPC_LOCK"
|
||
|
"CAP_DAC_OVERRIDE"
|
||
|
];
|
||
|
in {
|
||
|
AmbientCapabilities = caps;
|
||
|
CapabilityBoundingSet = caps;
|
||
|
DeviceAllow = [ "" ];
|
||
|
LockPersonality = true;
|
||
|
MemoryDenyWriteExecute = false;
|
||
|
NoNewPrivileges = true;
|
||
|
PrivateMounts = true;
|
||
|
ProtectClock = true;
|
||
|
ProtectControlGroups = true;
|
||
|
ProtectHome = true;
|
||
|
ProtectHostname = true;
|
||
|
ProtectKernelLogs = true;
|
||
|
ProtectKernelModules = true;
|
||
|
ProtectKernelTunables = true;
|
||
|
RemoveIPC = true;
|
||
|
UMask = "0077";
|
||
|
RestrictNamespaces = "~mnt";
|
||
|
RestrictRealtime = true;
|
||
|
RestrictSUIDSGID = true;
|
||
|
SystemCallArchitectures = "native";
|
||
|
KeyringMode = "private";
|
||
|
SystemCallFilter = [
|
||
|
"@system-service"
|
||
|
];
|
||
|
};
|
||
|
});
|
||
|
}
|