Skip to content

Commit

Permalink
nixos/services/networking/g3proxy: init
Browse files Browse the repository at this point in the history
This adds a simple hardened systemd-based module for g3proxy, a generic
purpose forward proxy.

Change-Id: I8c6e5d2cc8a9faa2aea8c5df3af56756ffed542d
Signed-off-by: Raito Bezarius <[email protected]>
  • Loading branch information
RaitoBezarius committed Jan 30, 2025
1 parent c3722e5 commit 68f0fd8
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1266,6 +1266,7 @@
./services/networking/spacecookie.nix
./services/networking/spiped.nix
./services/networking/squid.nix
./services/networking/g3proxy.nix
./services/networking/ssh/sshd.nix
./services/networking/sslh.nix
./services/networking/strongswan-swanctl/module.nix
Expand Down
93 changes: 93 additions & 0 deletions nixos/modules/services/networking/g3proxy.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.g3proxy;

inherit (lib)
mkPackageOption
mkEnableOption
mkOption
mkIf
literalExpression
;

settingsFormat = pkgs.formats.yaml { };
in
{
options.services.g3proxy = {
enable = mkEnableOption "g3proxy, a generic purpose forward proxy";

package = mkPackageOption pkgs { } "g3proxy";

settings = mkOption {
type = settingsFormat.type;
default = { };
example = literalExpression ''
{
server = [{
name = "test";
escaper = "default";
type = "socks_proxy";
listen = {
address = "[::]:10086";
};
}];
}
'';
description = ''
Settings of g3proxy.
'';
};
};

config = mkIf cfg.enable {
systemd.services.g3proxy = {
description = "g3proxy server";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];

serviceConfig = {
ExecStart =
let
g3proxy-yaml = settingsFormat.generate "g3proxy.yaml" cfg.settings;
in
"${cfg.package}/bin/g3proxy --config-file ${g3proxy-yaml}";

WorkingDirectory = "/var/lib/g3proxy";
StateDirectory = "g3proxy";
RuntimeDirectory = "g3proxy";
DynamicUser = true;

RuntimeDirectoryMode = "0755";
PrivateTmp = true;
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
PrivateUsers = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectControlGroups = true;
ProtectSystem = "strict";
ProcSubset = "pid";
RestrictNamespaces = true;
RestrictRealtime = true;
RemoveIPC = true;
SystemCallArchitectures = "native";
UMask = "0077";
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
];
RestrictSUIDSGID = true;
};
};
};
}

0 comments on commit 68f0fd8

Please sign in to comment.