nixos/nginx: add option enableSandbox

This commit is contained in:
Izorkin 2020-05-12 15:02:57 +03:00
parent aa12fb8adb
commit 94391fce1d
3 changed files with 12 additions and 2 deletions

View File

@ -237,8 +237,8 @@ php.override {
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Nginx web server is now started with additional sandbox/hardening options. By default, write access to Add option <literal>services.nginx.enableSandbox</literal> to starting Nginx web server with additional sandbox/hardening options.
<literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders, By default, write access to <literal>services.nginx.stateDir</literal> is allowed. To allow writing to other folders,
use <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal> use <literal>systemd.services.nginx.serviceConfig.ReadWritePaths</literal>
<programlisting> <programlisting>
systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ]; systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ];

View File

@ -463,6 +463,14 @@ in
''; '';
}; };
enableSandbox = mkOption {
default = false;
type = types.bool;
description = ''
Starting Nginx web server with additional sandbox/hardening options.
'';
};
user = mkOption { user = mkOption {
type = types.str; type = types.str;
default = "nginx"; default = "nginx";
@ -713,6 +721,7 @@ in
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" "CAP_SYS_RESOURCE" ]; CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" "CAP_SYS_RESOURCE" ];
# Security # Security
NoNewPrivileges = true; NoNewPrivileges = true;
} // optionalAttrs cfg.enableSandbox {
# Sandboxing # Sandboxing
ProtectSystem = "strict"; ProtectSystem = "strict";
ProtectHome = mkDefault true; ProtectHome = mkDefault true;

View File

@ -18,6 +18,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
]; ];
services.nginx.enable = true; services.nginx.enable = true;
services.nginx.package = pkgs.nginx-lua; services.nginx.package = pkgs.nginx-lua;
services.nginx.enableSandbox = true;
services.nginx.virtualHosts.localhost = { services.nginx.virtualHosts.localhost = {
extraConfig = '' extraConfig = ''
location /test1-write { location /test1-write {