🧱 Firewall changes #17
@@ -151,7 +151,10 @@ in {
|
||||
|
||||
# Core networking module (see ../../networking/core.nix)
|
||||
network = {
|
||||
firewall.enable = true;
|
||||
firewall = {
|
||||
enable = true;
|
||||
firewalld.enable = true;
|
||||
};
|
||||
networkManager.enable = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -8,6 +8,12 @@ in {
|
||||
options.network = {
|
||||
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 = {
|
||||
ssh.enable = lib.mkEnableOption "SSH service port (22)";
|
||||
web.enable = lib.mkEnableOption "common web service ports (80, 443)";
|
||||
@@ -42,6 +48,21 @@ in {
|
||||
};
|
||||
};
|
||||
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 = {
|
||||
enable = cfg.firewall.enable;
|
||||
allowedTCPPorts = lib.flatten [
|
||||
|
||||
Reference in New Issue
Block a user