mod: firewall changes
This commit is contained in:
@@ -151,7 +151,10 @@ in {
|
|||||||
|
|
||||||
# Core networking module (see ../../networking/core.nix)
|
# Core networking module (see ../../networking/core.nix)
|
||||||
network = {
|
network = {
|
||||||
firewall.enable = true;
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
firewalld.enable = true;
|
||||||
|
};
|
||||||
networkManager.enable = true;
|
networkManager.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ in {
|
|||||||
options.network = {
|
options.network = {
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = lib.mkEnableOption "system firewall";
|
enable = lib.mkEnableOption "system firewall";
|
||||||
|
firewalld.enable = lib.mkEnableOption "firewalld with its nftables backend";
|
||||||
|
nftables.extraConfig = lib.mkOption {
|
||||||
|
type = lib.types.lines;
|
||||||
|
default = "";
|
||||||
|
description = "Rules inside a separate inet nftables table alongside firewalld";
|
||||||
|
};
|
||||||
tcpPorts = {
|
tcpPorts = {
|
||||||
ssh.enable = lib.mkEnableOption "SSH service port (22)";
|
ssh.enable = lib.mkEnableOption "SSH service port (22)";
|
||||||
web.enable = lib.mkEnableOption "common web service ports (80, 443)";
|
web.enable = lib.mkEnableOption "common web service ports (80, 443)";
|
||||||
@@ -42,6 +48,21 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = {
|
config = {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = cfg.firewall.nftables.extraConfig == "" || cfg.firewall.firewalld.enable;
|
||||||
|
message = "network.firewall.nftables.extraConfig requires network.firewall.firewalld.enable";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
services.firewalld.enable = cfg.firewall.firewalld.enable;
|
||||||
|
networking.nftables = lib.mkIf cfg.firewall.firewalld.enable {
|
||||||
|
enable = true;
|
||||||
|
flushRuleset = false;
|
||||||
|
tables."local-extra" = lib.mkIf (cfg.firewall.nftables.extraConfig != "") {
|
||||||
|
family = "inet";
|
||||||
|
content = cfg.firewall.nftables.extraConfig;
|
||||||
|
};
|
||||||
|
};
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = cfg.firewall.enable;
|
enable = cfg.firewall.enable;
|
||||||
allowedTCPPorts = lib.flatten [
|
allowedTCPPorts = lib.flatten [
|
||||||
|
|||||||
Reference in New Issue
Block a user