├── qr-btc.png ├── services ├── systemd-journald.nix ├── systemd-udevd.nix ├── blocky.nix ├── bluetooth.nix ├── accounts-daemon.nix ├── systemd-machined.nix ├── nscd.nix ├── user.nix ├── NetworkManager.nix ├── sshd.nix ├── systemd-rfkill.nix ├── rtkit.nix ├── cups.nix ├── colord.nix ├── reload-systemd-vconsole-setup.nix ├── getty.nix ├── autovt.nix ├── systemd-ask-password-wall.nix ├── systemd-ask-password-console.nix ├── rescue.nix ├── acipd.nix ├── dbus.nix ├── docker.nix ├── NetworkManager-dispatcher.nix ├── auditd.nix ├── wpa_supplicant.nix ├── display-manager.nix └── nix-daemon.nix ├── README.md └── LICENSE /qr-btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wallago/nix-system-services-hardened/HEAD/qr-btc.png -------------------------------------------------------------------------------- /services/systemd-journald.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-journald.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectProc = "invisible"; 5 | ProtectHostname = true; 6 | PrivateMounts = true; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /services/systemd-udevd.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-udevd.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectKernelLogs = true; 7 | ProtectControlGroups = true; 8 | ProtectClock = true; 9 | ProtectProc = "invisible"; 10 | RestrictNamespaces = true; 11 | CapabilityBoundingSet = "~CAP_SYS_PTRACE ~CAP_SYS_PACCT"; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /services/blocky.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.blocky.serviceConfig = { 3 | ProtectKernelTunables = true; 4 | ProtectKernelModules = true; 5 | ProtectKernelLogs = true; 6 | ProtectHostname = true; 7 | ProtectControlGroups = true; 8 | ProtectProc = "invisible"; 9 | SystemCallFilter = [ 10 | "~@obsolete" 11 | "~@cpu-emulation" 12 | "~@swap" 13 | "~@reboot" 14 | "~@mount" 15 | ]; 16 | SystemCallArchitectures = "native"; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /services/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.bluetooth.serviceConfig = { 3 | ProtectKernelTunables = true; 4 | ProtectKernelModules = true; 5 | ProtectKernelLogs = true; 6 | ProtectHostname = true; 7 | ProtectControlGroups = true; 8 | ProtectProc = "invisible"; 9 | SystemCallFilter = [ 10 | "~@obsolete" 11 | "~@cpu-emulation" 12 | "~@swap" 13 | "~@reboot" 14 | "~@mount" 15 | ]; 16 | SystemCallArchitectures = "native"; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /services/accounts-daemon.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.accounts-daemon.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectProc = "invisible"; 7 | ProtectHostname = true; 8 | ProtectKernelLogs = true; 9 | ProtectClock = true; 10 | PrivateTmp = true; 11 | RestrictSUIDSGID = true; 12 | SystemCallFilter = [ 13 | "~@swap" 14 | "~@resources" 15 | "~@raw-io" 16 | "~@mount" 17 | "~@module" 18 | "~@reboot" 19 | "~@debug" 20 | "~@cpu-emulation" 21 | "~@clock" 22 | ]; 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /services/systemd-machined.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-machined.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | PrivateUsers = true; 15 | PrivateNetwork = true; 16 | RestrictNamespaces = true; 17 | RestrictRealtime = true; 18 | RestrictSUIDSGID = true; 19 | RestrictAddressFamilies = [ "AF_UNIX" ]; 20 | MemoryDenyWriteExecute = true; 21 | SystemCallArchitectures = "native"; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /services/nscd.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.nscd.serviceConfig = { 3 | ProtectClock = true; 4 | ProtectHostname = true; 5 | ProtectKernelTunables = true; 6 | ProtectKernelModules = true; 7 | ProtectKernelLogs = true; 8 | ProtectControlGroups = true; 9 | ProtectProc = "invisible"; 10 | RestrictNamespaces = true; 11 | RestrictRealtime = true; 12 | MemoryDenyWriteExecute = true; 13 | LockPersonality = true; 14 | SystemCallFilter = [ 15 | "~@mount" 16 | "~@swap" 17 | "~@clock" 18 | "~@obsolete" 19 | "~@cpu-emulation" 20 | ]; 21 | SystemCallArchitectures = "native"; 22 | CapabilityBoundingSet= [ 23 | "~CAP_CHOWN" 24 | "~CAP_FSETID" 25 | "~CAP_SETFCAP" 26 | ]; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /services/user.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services."user@".serviceConfig = { 3 | ProtectSystem = "strict"; 4 | ProtectClock = true; 5 | ProtectHostname = true; 6 | ProtectKernelTunables = true; 7 | ProtectKernelModules = true; 8 | ProtectKernelLogs = true; 9 | ProtectProc = "invisible"; 10 | PrivateTmp = true; 11 | PrivateNetwork = true; 12 | MemoryDenyWriteExecute = true; 13 | RestrictAddressFamilies = [ 14 | "AF_UNIX" 15 | "AF_NETLINK" 16 | "AF_BLUETOOTH" 17 | ]; 18 | RestrictNamespaces = true; 19 | RestrictRealtime = true; 20 | RestrictSUIDSGID = true; 21 | SystemCallFilter = [ 22 | "~@keyring" 23 | "~@swap" 24 | "~@debug" 25 | "~@module" 26 | "~@obsolete" 27 | "~@cpu-emulation" 28 | ]; 29 | SystemCallArchitectures = "native"; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /services/NetworkManager.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.NetworkManager.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectHome = true; 5 | ProtectKernelModules = true; 6 | ProtectKernelLogs = true; 7 | ProtectControlGroups = true; 8 | ProtectClock = true; 9 | ProtectHostname = true; 10 | ProtectProc = "invisible"; 11 | PrivateTmp = true; 12 | RestrictRealtime = true; 13 | RestrictAddressFamilies = [ 14 | "AF_UNIX" 15 | "AF_NETLINK" 16 | "AF_INET" 17 | "AF_INET6" 18 | "AF_PACKET" 19 | ]; 20 | RestrictNamespaces = true; 21 | RestrictSUIDSGID = true; 22 | MemoryDenyWriteExecute = true; 23 | SystemCallFilter = [ 24 | "~@mount" 25 | "~@module" 26 | "~@swap" 27 | "~@obsolete" 28 | "~@cpu-emulation" 29 | "ptrace" 30 | ]; 31 | SystemCallArchitectures = "native"; 32 | LockPersonality= true; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /services/sshd.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.sshd.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = "read-only"; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectControlGroups = true; 12 | ProtectProc = "invisible"; 13 | PrivateTmp = true; 14 | PrivateMounts = true; 15 | PrivateDevices = true; 16 | RestrictNamespaces = true; 17 | RestrictRealtime = true; 18 | RestrictSUIDSGID = true; 19 | MemoryDenyWriteExecute = true; 20 | LockPersonality = true; 21 | DevicePolicy = "closed"; 22 | SystemCallFilter = [ 23 | "~@keyring" 24 | "~@swap" 25 | "~@clock" 26 | "~@module" 27 | "~@obsolete" 28 | "~@cpu-emulation" 29 | ]; 30 | SystemCallArchitectures = "native"; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /services/systemd-rfkill.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-rfkill.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectKernelLogs = true; 7 | ProtectControlGroups = true; 8 | ProtectClock = true; 9 | ProtectHostname = true; 10 | ProtectProc = "invisible"; 11 | PrivateTmp = true; 12 | PrivateNetwork = true; 13 | PrivateUsers = true; 14 | RestrictNamespaces = true; 15 | RestrictRealtime = true; 16 | RestrictAddressFamilies = [ "AF_UNIX" ]; 17 | RestrictSUIDSGID = true; 18 | MemoryDenyWriteExecute = true; 19 | SystemCallFilter = [ 20 | "~@swap" 21 | "~@obsolete" 22 | "~@cpu-emulation" 23 | "~@privileged" 24 | ]; 25 | SystemCallArchitectures = "native"; 26 | LockPersonality = true; 27 | CapabilityBoundingSet = [ 28 | "~CAP_SYS_PTRACE" 29 | "~CAP_SYS_PACCT" 30 | ]; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /services/rtkit.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.rtkit-daemon.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectControlGroups = true; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | PrivateDevices = true; 15 | RestrictNamespaces = true; 16 | RestrictSUIDSGID = true; 17 | RestrictAddressFamilies = [ 18 | "~AF_INET6" 19 | "~AF_INET" 20 | "~AF_PACKET" 21 | ]; 22 | MemoryDenyWriteExecute = true; 23 | DevicePolicy = "closed"; 24 | LockPersonality = true; 25 | SystemCallFilter = [ 26 | "~@keyring" 27 | "~@swap" 28 | "~@clock" 29 | "~@module" 30 | "~@obsolete" 31 | "~@cpu-emulation" 32 | ]; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /services/cups.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.cups.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "full"; 5 | ProtectHome = true; 6 | ProtectKernelModules = true; 7 | ProtectKernelTunables = true; 8 | ProtectKernelLogs = true; 9 | ProtectControlGroups = true; 10 | ProtectHostname = true; 11 | ProtectClock = true; 12 | ProtectProc = "invisible"; 13 | RestrictRealtime = true; 14 | RestrictNamespaces = true; 15 | RestrictSUIDSGID = true; 16 | RestrictAddressFamilies = [ 17 | "AF_UNIX" 18 | "AF_NETLINK" 19 | "AF_INET" 20 | "AF_INET6" 21 | "AF_PACKET" 22 | ]; 23 | 24 | MemoryDenyWriteExecute = true; 25 | SystemCallFilter = [ 26 | "~@clock" 27 | "~@reboot" 28 | "~@debug" 29 | "~@module" 30 | "~@swap" 31 | "~@obsolete" 32 | "~@cpu-emulation" 33 | ]; 34 | SystemCallArchitectures = "native"; 35 | LockPersonality= true; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /services/colord.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.colord.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectHostname = true; 7 | ProtectKernelTunables = true; 8 | ProtectKernelModules = true; 9 | ProtectKernelLogs = true; 10 | ProtectControlGroups = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | RestrictNamespaces = true; 14 | RestrictRealtime = true; 15 | RestrictSUIDSGID = true; 16 | RestrictAddressFamilies = [ 17 | "~AF_INET6" 18 | "~AF_INET" 19 | "~AF_PACKET" 20 | ]; 21 | MemoryDenyWriteExecute = true; 22 | LockPersonality = true; 23 | SystemCallFilter = [ 24 | "~@swap" 25 | "~@obsolete" 26 | "~@cpu-emulation" 27 | "~@mount" 28 | ]; 29 | SystemCallArchitectures = "native"; 30 | CapabilityBoundingSet= [ 31 | "~CAP_CHOWN" 32 | "~CAP_FSETID" 33 | "~CAP_SETFCAP" 34 | ]; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /services/reload-systemd-vconsole-setup.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.reload-systemd-vconsole-setup.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | PrivateNetwork = true; 15 | RestrictNamespaces = true; 16 | RestrictRealtime = true; 17 | RestrictSUIDSGID = true; 18 | RestrictAddressFamilies = [ 19 | "~AF_INET6" 20 | "~AF_INET" 21 | "~AF_PACKET" 22 | ]; 23 | MemoryDenyWriteExecute = true; 24 | DevicePolicy = "closed"; 25 | LockPersonality = true; 26 | SystemCallFilter = [ 27 | "~@keyring" 28 | "~@swap" 29 | "~@obsolete" 30 | "~@cpu-emulation" 31 | ]; 32 | SystemCallArchitectures = "native"; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /services/getty.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services."getty@".serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "stric"; 5 | ProtectControlGroups = true; 6 | ProtectHome = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectClock = true; 12 | PrivateMounts = true; 13 | PrivateTmp = true; 14 | RestrictSUIDSGID = true; 15 | RestrictRealtime = true; 16 | RestrictAddressFamilies = [ 17 | "AF_UNIX" 18 | "AF_NETLINK" 19 | ]; 20 | RestrictNamespaces = true; 21 | SystemCallErrorNumber = "EPERM"; 22 | SystemCallArchitectures = "native"; 23 | SystemCallFilter = [ 24 | "~@obsolete" 25 | "~@debug" 26 | "~@reboot" 27 | "~@swap" 28 | "~@clock" 29 | "~@cpu-emulation" 30 | ]; 31 | LockPersonality = true; 32 | IPAddressDeny = ["0.0.0.0/0" "::/0"]; 33 | MemoryDenyWriteExecute = true; 34 | UMask = 0077; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /services/autovt.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services."autovt@".serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "stric"; 5 | ProtectControlGroups = true; 6 | ProtectHome = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectClock = true; 12 | PrivateMounts = true; 13 | PrivateTmp = true; 14 | RestrictSUIDSGID = true; 15 | RestrictRealtime = true; 16 | RestrictAddressFamilies = [ 17 | "AF_UNIX" 18 | "AF_NETLINK" 19 | ]; 20 | RestrictNamespaces = true; 21 | SystemCallErrorNumber = "EPERM"; 22 | SystemCallArchitectures = "native"; 23 | SystemCallFilter = [ 24 | "~@obsolete" 25 | "~@debug" 26 | "~@reboot" 27 | "~@swap" 28 | "~@clock" 29 | "~@cpu-emulation" 30 | ]; 31 | LockPersonality = true; 32 | IPAddressDeny = ["0.0.0.0/0" "::/0"]; 33 | MemoryDenyWriteExecute = true; 34 | UMask = 0077; 35 | }; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /services/systemd-ask-password-wall.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-ask-password-wall.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | PrivateNetwork = true; 15 | PrivateDevices = true; 16 | RestrictNamespaces = true; 17 | RestrictRealtime = true; 18 | RestrictSUIDSGID = true; 19 | RestrictAddressFamilies = [ 20 | "~AF_INET6" 21 | "~AF_INET" 22 | "~AF_PACKET" 23 | ]; 24 | MemoryDenyWriteExecute = true; 25 | DevicePolicy = "closed"; 26 | LockPersonality = true; 27 | SystemCallFilter = [ 28 | "~@keyring" 29 | "~@swap" 30 | "~@clock" 31 | "~@module" 32 | "~@obsolete" 33 | "~@cpu-emulation" 34 | ]; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /services/systemd-ask-password-console.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.systemd-ask-password-console.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectClock = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | PrivateNetwork = true; 15 | PrivateDevices = true; 16 | RestrictNamespaces = true; 17 | RestrictRealtime = true; 18 | RestrictSUIDSGID = true; 19 | RestrictAddressFamilies = [ 20 | "~AF_INET6" 21 | "~AF_INET" 22 | "~AF_PACKET" 23 | ]; 24 | MemoryDenyWriteExecute = true; 25 | DevicePolicy = "closed"; 26 | LockPersonality = true; 27 | SystemCallFilter = [ 28 | "~@keyring" 29 | "~@swap" 30 | "~@clock" 31 | "~@module" 32 | "~@obsolete" 33 | "~@cpu-emulation" 34 | ]; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /services/rescue.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.rescue.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "full"; 5 | ProtectClock = true; 6 | ProtectHostname = true; 7 | ProtectKernelTunables = true; 8 | ProtectKernelModules = true; 9 | ProtectKernelLogs = true; 10 | ProtectControlGroups = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateNetwork = true; 14 | RestrictNamespaces = true; 15 | RestrictRealtime = true; 16 | RestrictSUIDSGID = true; 17 | RestrictAddressFamilies = [ 18 | "~AF_INET6" 19 | "~AF_INET" 20 | "~AF_PACKET" 21 | ]; 22 | MemoryDenyWriteExecute = true; 23 | LockPersonality = true; 24 | SystemCallFilter = [ 25 | "~@swap" 26 | "~@clock" 27 | "~@obsolete" 28 | "~@cpu-emulation" 29 | "~@resources" 30 | ]; 31 | SystemCallArchitectures = "native"; 32 | CapabilityBoundingSet= [ 33 | "~CAP_CHOWN" 34 | "~CAP_FSETID" 35 | "~CAP_SETFCAP" 36 | ]; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /services/acipd.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.acpid.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectHostname = true; 7 | ProtectKernelTunables = true; 8 | ProtectKernelModules = true; 9 | ProtectKernelLogs = true; 10 | ProtectControlGroups = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateNetwork = true; 14 | PrivateMounts = true; 15 | RestrictNamespaces = true; 16 | RestrictRealtime = true; 17 | RestrictSUIDSGID = true; 18 | RestrictAddressFamilies = [ 19 | "~AF_INET6" 20 | "~AF_INET" 21 | "~AF_PACKET" 22 | ]; 23 | MemoryDenyWriteExecute = true; 24 | LockPersonality = true; 25 | SystemCallFilter = [ 26 | "~@mount" 27 | "~@swap" 28 | "~@obsolete" 29 | "~@cpu-emulation" 30 | ]; 31 | SystemCallArchitectures = "native"; 32 | CapabilityBoundingSet= [ 33 | "~CAP_CHOWN" 34 | "~CAP_FSETID" 35 | "~CAP_SETFCAP" 36 | ]; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /services/dbus.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.dbus.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "stric"; 5 | ProtectControlGroups = true; 6 | ProtectHome = true; 7 | ProtectHostname = true; 8 | ProtectKernelTunables = true; 9 | ProtectKernelModules = true; 10 | ProtectKernelLogs = true; 11 | PrivateMounts = true; 12 | PrivateDevices = true; 13 | PrivateTmp = true; 14 | RestrictSUIDSGID = true; 15 | RestrictRealtime = true; 16 | RestrictAddressFamilies = [ 17 | "AF_UNIX" 18 | ]; 19 | RestrictNamespaces = true; 20 | SystemCallErrorNumber = "EPERM"; 21 | SystemCallArchitectures = "native"; 22 | SystemCallFilter = [ 23 | "~@obsolete" 24 | "~@resources" 25 | "~@debug" 26 | "~@mount" 27 | "~@reboot" 28 | "~@swap" 29 | "~@cpu-emulation" 30 | ]; 31 | LockPersonality = true; 32 | IPAddressDeny = ["0.0.0.0/0" "::/0"]; 33 | MemoryDenyWriteExecute = true; 34 | DevicePolicy = "closed"; 35 | UMask = 0077; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /services/docker.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.docker.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "full"; 5 | ProtectHome = true; 6 | ProtectKernelModules = true; 7 | ProtectKernelLogs = true; 8 | ProtectControlGroups = true; 9 | ProtectClock = true; 10 | ProtectProc = "invisible"; 11 | PrivateTmp = true; 12 | PrivateMounts = true; 13 | RestrictRealtime = true; 14 | RestrictAddressFamilies = [ 15 | "AF_UNIX" 16 | "AF_NETLINK" 17 | "AF_INET" 18 | "AF_INET6" 19 | ]; 20 | RestrictNamespaces = [ 21 | "~user" 22 | ]; 23 | MemoryDenyWriteExecute = true; 24 | SystemCallFilter = [ 25 | "~@debug" 26 | "~@raw-io" 27 | "~@reboot" 28 | "~@clock" 29 | "~@module" 30 | "~@swap" 31 | "~@obsolete" 32 | "~@cpu-emulation" 33 | ]; 34 | SystemCallArchitectures = "native"; 35 | CapabilityBoundingSet= [ 36 | "~CAP_SYS_RAWIO" 37 | "~CAP_SYS_PTRACE" 38 | "~CAP_SYS_BOOT" 39 | ]; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /services/NetworkManager-dispatcher.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.NetworkManager-dispatcher.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectKernelModules = true; 7 | ProtectKernelLogs = true; 8 | ProtectControlGroups = true; 9 | ProtectClock = true; 10 | ProtectHostname = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | RestrictRealtime = true; 15 | RestrictAddressFamilies = [ 16 | "AF_UNIX" 17 | "AF_NETLINK" 18 | "AF_INET" 19 | "AF_INET6" 20 | "AF_PACKET" 21 | ]; 22 | RestrictNamespaces = true; 23 | RestrictSUIDSGID = true; 24 | MemoryDenyWriteExecute = true; 25 | SystemCallFilter = [ 26 | "~@mount" 27 | "~@module" 28 | "~@swap" 29 | "~@obsolete" 30 | "~@cpu-emulation" 31 | "ptrace" 32 | ]; 33 | SystemCallArchitectures = "native"; 34 | LockPersonality= true; 35 | CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_RAW"; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /services/auditd.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.auditd.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "full"; 5 | ProtectHome = true; 6 | ProtectHostname = true; 7 | ProtectKernelTunables = true; 8 | ProtectKernelModules = true; 9 | ProtectControlGroups = true; 10 | ProtectProc = "invisible"; 11 | ProtectClock = true; 12 | PrivateTmp = true; 13 | PrivateNetwork = true; 14 | PrivateMounts = true; 15 | PrivateDevices = true; 16 | RestrictNamespaces = true; 17 | RestrictRealtime = true; 18 | RestrictSUIDSGID = true; 19 | RestrictAddressFamilies = [ 20 | "~AF_INET6" 21 | "~AF_INET" 22 | "~AF_PACKET" 23 | ]; 24 | MemoryDenyWriteExecute = true; 25 | LockPersonality = true; 26 | SystemCallFilter = [ 27 | "~@clock" 28 | "~@module" 29 | "~@mount" 30 | "~@swap" 31 | "~@obsolete" 32 | "~@cpu-emulation" 33 | ]; 34 | SystemCallArchitectures = "native"; 35 | CapabilityBoundingSet= [ 36 | "~CAP_CHOWN" 37 | "~CAP_FSETID" 38 | "~CAP_SETFCAP" 39 | ]; 40 | }; 41 | } 42 | -------------------------------------------------------------------------------- /services/wpa_supplicant.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.wpa_supplicant.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectSystem = "strict"; 5 | ProtectHome = true; 6 | ProtectKernelModules = true; 7 | ProtectKernelLogs = true; 8 | ProtectControlGroups = true; 9 | ProtectClock = true; 10 | ProtectHostname = true; 11 | ProtectProc = "invisible"; 12 | PrivateTmp = true; 13 | PrivateMounts = true; 14 | RestrictRealtime = true; 15 | RestrictAddressFamilies = [ 16 | "AF_UNIX" 17 | "AF_NETLINK" 18 | "AF_INET" 19 | "AF_INET6" 20 | "AF_PACKET" 21 | ]; 22 | RestrictNamespaces = true; 23 | RestrictSUIDSGID = true; 24 | MemoryDenyWriteExecute = true; 25 | SystemCallFilter = [ 26 | "~@mount" 27 | "~@raw-io" 28 | "~@privileged" 29 | "~@keyring" 30 | "~@reboot" 31 | "~@module" 32 | "~@swap" 33 | "~@resources" 34 | "~@obsolete" 35 | "~@cpu-emulation" 36 | "ptrace" 37 | ]; 38 | SystemCallArchitectures = "native"; 39 | LockPersonality= true; 40 | CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_RAW"; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /services/display-manager.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.display-manager.serviceConfig = { 3 | ProtectSystem = "full"; 4 | ProtectControlGroups = true; 5 | ProtectClock = true; 6 | ProtectKernelModules = true; 7 | PrivateMounts = true; 8 | PrivateIPC = true; 9 | RestrictSUIDSGID = true; 10 | RestrictRealtime = true; 11 | RestrictNamespaces = [ 12 | "~cgroup" 13 | ]; 14 | RestrictAddressFamilies = [ 15 | "AF_UNIX" 16 | "AF_NETLINK" 17 | "AF_INET" 18 | "AF_INET6" 19 | ]; 20 | SystemCallErrorNumber = "EPERM"; 21 | SystemCallFilter = [ 22 | "~@obsolete" 23 | "~@cpu-emulation" 24 | "~@clock" 25 | "~@swap" 26 | "~@module" 27 | "~@reboot" 28 | "~@raw-io" 29 | "~@debug" 30 | ]; 31 | SystemCallArchitectures = "native"; 32 | LockPersonality = true; 33 | IPAddressDeny = ["0.0.0.0/0" "::/0"]; 34 | CapabilityBoundingSet = [ 35 | "CAP_SYS_ADMIN" 36 | "CAP_SETUID" 37 | "CAP_SETGID" 38 | "CAP_SETPCAP" 39 | "CAP_KILL" 40 | "CAP_SYS_TTY_CONFIG" 41 | "CAP_DAC_OVERRIDE" 42 | "CAP_DAC_READ_SEARCH" 43 | "CAP_FOWNER" 44 | "CAP_IPC_OWNER" 45 | "CAP_FSETID" 46 | "CAP_SETFCAP" 47 | "CAP_CHOWN" 48 | ]; 49 | DeviceAllow = "/dev/tty7 rw"; 50 | DevicePolicy = "closed"; 51 | UMask = 0077; 52 | LogLevelMax = "debug"; 53 | KeyringMode = lib.mkForce "private"; 54 | }; 55 | } 56 | -------------------------------------------------------------------------------- /services/nix-daemon.nix: -------------------------------------------------------------------------------- 1 | { 2 | systemd.services.nix-daemon.serviceConfig = { 3 | NoNewPrivileges = true; 4 | ProtectControlGroups = true; 5 | ProtectKernelModules = true; 6 | PrivateMounts = true; 7 | PrivateTmp = true; 8 | PrivateDevices = true; 9 | RestrictSUIDSGID = true; 10 | RestrictRealtime = true; 11 | RestrictNamespaces = [ "~cgroup" ]; 12 | RestrictAddressFamilies = [ 13 | "AF_UNIX" 14 | "AF_NETLINK" 15 | "AF_INET6" 16 | "AF_INET" 17 | ]; 18 | CapabilityBoundingSet= [ 19 | "~CAP_SYS_CHROOT" 20 | "~CAP_BPF" 21 | "~CAP_AUDIT_WRITE" 22 | "~CAP_AUDIT_CONTROL" 23 | "~CAP_AUDIT_READ" 24 | "~CAP_SYS_PTRACE" 25 | "~CAP_SYS_NICE" 26 | "~CAP_SYS_RESOURCE" 27 | "~CAP_SYS_RAWIO" 28 | "~CAP_SYS_TIME" 29 | "~CAP_SYS_PACCT" 30 | "~CAP_LINUX_IMMUTABLE" 31 | "~CAP_IPC_LOCK" 32 | "~CAP_WAKE_ALARM" 33 | "~CAP_SYS_TTY_CONFIG" 34 | "~CAP_SYS_BOOT" 35 | "~CAP_LEASE" 36 | "~CAP_BLOCK_SUSPEND" 37 | "~CAP_MAC_ADMIN" 38 | "~CAP_MAC_OVERRIDE" 39 | ]; 40 | SystemCallErrorNumber = "EPERM"; 41 | SystemCallArchitectures = "native"; 42 | SystemCallFilter = [ 43 | "~@resources" 44 | "~@module" 45 | "~@obsolete" 46 | "~@debug" 47 | "~@reboot" 48 | "~@swap" 49 | "~@cpu-emulation" 50 | "~@clock" 51 | "~@raw-io" 52 | ]; 53 | LockPersonality = true; 54 | MemoryDenyWriteExecute = true; 55 | DevicePolicy = "closed"; 56 | UMask = 0077; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nix-system-services-hardened 2 | 3 |