diff --git a/hosts/skadi/home.nix b/hosts/skadi/home.nix index 03ea8e1..3ebb4f0 100644 --- a/hosts/skadi/home.nix +++ b/hosts/skadi/home.nix @@ -8,7 +8,6 @@ inputs.nix-index-database.homeModules.nix-index inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.agenix.homeManagerModules.default - inputs.zen-browser.homeModules.beta ]; # Some info diff --git a/modules/linux/home-manager/zen-browser.nix b/modules/linux/home-manager/zen-browser.nix index b63e5c4..201a425 100644 --- a/modules/linux/home-manager/zen-browser.nix +++ b/modules/linux/home-manager/zen-browser.nix @@ -1,9 +1,13 @@ { config, + inputs, pkgs, lib, ... }: { + imports = [ + inputs.zen-browser.homeModules.beta + ]; options = { crony.zen-browser.enable = lib.mkEnableOption "Enable and setup zen browser"; }; diff --git a/modules/servers/general/openssh.nix b/modules/servers/general/openssh.nix index c2853db..9ac21bb 100644 --- a/modules/servers/general/openssh.nix +++ b/modules/servers/general/openssh.nix @@ -21,8 +21,16 @@ services.fail2ban = { enable = true; + maxretry = 5; ignoreIP = [ "65.21.241.194" ]; + bantime = "24h"; # Ban IPs for one day on the first ban + bantime-increment = { + enable = true; # Enable increment of bantime after each violation + multipliers = "1 2 4 8 16 32 64"; + maxtime = "168h"; # Do not ban for more than 1 week + overalljails = true; # Calculate the bantime based on all the violations + }; }; } diff --git a/modules/servers/general/traefik.nix b/modules/servers/general/traefik.nix index e411f5e..19266ba 100644 --- a/modules/servers/general/traefik.nix +++ b/modules/servers/general/traefik.nix @@ -4,6 +4,14 @@ staticConfigOptions = { serversTransport.insecureSkipVerify = true; log = {level = "DEBUG";}; + experimental = { + plugins = { + fail2ban = { + moduleName = "github.com/tomMoulard/fail2ban"; + version = "v0.8.7"; + }; + }; + }; certificatesResolvers = { porkbun = { acme = { @@ -32,6 +40,29 @@ }; websecure = { address = ":443"; + http.middlewares = [ + "fail2ban" + ]; + }; + }; + }; + dynamicConfigOptions.http = { + middlewares = { + fail2ban = { + plugin = { + fail2ban = { + rules = { + bantime = "168h"; + enabled = true; + findtime = "10m"; + maxretry = 4; + statuscode = "400,401,403-499"; + }; + allowlist = { + ip = ["65.21.241.194"]; + }; + }; + }; }; }; };