diff --git a/nixos/modules/services/misc/flaresolverr.nix b/nixos/modules/services/misc/flaresolverr.nix index 7967580307f9..8aad08abd781 100644 --- a/nixos/modules/services/misc/flaresolverr.nix +++ b/nixos/modules/services/misc/flaresolverr.nix @@ -46,13 +46,77 @@ in RestartSec = 5; Type = "simple"; DynamicUser = true; + UMask = "0077"; RuntimeDirectory = "flaresolverr"; WorkingDirectory = "/run/flaresolverr"; ExecStart = lib.getExe cfg.package; TimeoutStopSec = 30; + + # Systemd hardening + LockPersonality = true; + PrivateDevices = true; + PrivateMounts = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + RestrictRealtime = true; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_UNIX" + ]; + RestrictNamespaces = [ + "net" + "pid" + "user" + ]; + CapabilityBoundingSet = [ + "~CAP_BLOCK_SUSPEND" + "~CAP_BPF" + "~CAP_CHOWN" + "~CAP_IPC_LOCK" + "~CAP_MKNOD" + "~CAP_NET_ADMIN" + "~CAP_NET_RAW" + "~CAP_PERFMON" + "~CAP_SYSLOG" + "~CAP_SYS_ADMIN" + "~CAP_SYS_BOOT" + "~CAP_SYS_MODULE" + "~CAP_SYS_PACCT" + "~CAP_SYS_PTRACE" + "~CAP_SYS_TIME" + "~CAP_WAKE_ALARM" + ]; + SystemCallFilter = [ + "~@chown" + "~@clock" + "~@cpu-emulation" + "~@debug" + "~@keyring" + "~@memlock" + "~@module" + "~@obsolete" + "~@pkey" + "~@raw-io" + "~@reboot" + "~@setuid" + "~@swap" + "~@timer" + ]; + SystemCallErrorNumber = "EPERM"; + SystemCallArchitectures = "native"; }; }; networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ cfg.port ]; }; }; + + meta.maintainers = with lib.maintainers; [ diogotcorreia ]; } diff --git a/nixos/tests/flaresolverr.nix b/nixos/tests/flaresolverr.nix index db25ab117cad..19b95565bcb8 100644 --- a/nixos/tests/flaresolverr.nix +++ b/nixos/tests/flaresolverr.nix @@ -1,7 +1,7 @@ { lib, ... }: { name = "flaresolverr"; - meta.maintainers = [ ]; + meta.maintainers = with lib.maintainers; [ diogotcorreia ]; nodes.machine = { pkgs, ... }: diff --git a/pkgs/by-name/fl/flaresolverr/package.nix b/pkgs/by-name/fl/flaresolverr/package.nix index 66f2d85cfe3a..cc6b9231b022 100644 --- a/pkgs/by-name/fl/flaresolverr/package.nix +++ b/pkgs/by-name/fl/flaresolverr/package.nix @@ -71,7 +71,7 @@ stdenv.mkDerivation (finalAttrs: { changelog = "https://github.com/FlareSolverr/FlareSolverr/blob/${finalAttrs.src.rev}/CHANGELOG.md"; license = lib.licenses.mit; mainProgram = "flaresolverr"; - maintainers = [ ]; + maintainers = with lib.maintainers; [ diogotcorreia ]; inherit (undetected-chromedriver.meta) platforms; }; })