nixos/iodine: hardening
This commit is contained in:
parent
7437bff7d1
commit
00a91d919d
@ -9,6 +9,8 @@ let
|
|||||||
|
|
||||||
iodinedUser = "iodined";
|
iodinedUser = "iodined";
|
||||||
|
|
||||||
|
/* is this path made unreadable by ProtectHome = true ? */
|
||||||
|
isProtected = x: hasPrefix "/root" x || hasPrefix "/home" x;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@ -134,6 +136,24 @@ in
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
RestartSec = "30s";
|
RestartSec = "30s";
|
||||||
Restart = "always";
|
Restart = "always";
|
||||||
|
|
||||||
|
# hardening :
|
||||||
|
# Filesystem access
|
||||||
|
ProtectSystem = "strict";
|
||||||
|
ProtectHome = if isProtected cfg.passwordFile then "read-only" else "true" ;
|
||||||
|
PrivateTmp = true;
|
||||||
|
ReadWritePaths = "/dev/net/tun";
|
||||||
|
PrivateDevices = false;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
# Caps
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
# Misc.
|
||||||
|
LockPersonality = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
@ -147,6 +167,24 @@ in
|
|||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}";
|
script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}";
|
||||||
|
serviceConfig = {
|
||||||
|
# Filesystem access
|
||||||
|
ProtectSystem = "strict";
|
||||||
|
ProtectHome = if isProtected cfg.server.passwordFile then "read-only" else "true" ;
|
||||||
|
PrivateTmp = true;
|
||||||
|
ReadWritePaths = "/dev/net/tun";
|
||||||
|
PrivateDevices = false;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
# Caps
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
# Misc.
|
||||||
|
LockPersonality = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user