forked from jan-leila/nix-config
		
	feat: added per service enable options for fail2ban configs
This commit is contained in:
		
							parent
							
								
									ecec04a9ce
								
							
						
					
					
						commit
						a8af8930fa
					
				
					 4 changed files with 59 additions and 31 deletions
				
			
		|  | @ -310,7 +310,7 @@ | ||||||
| 
 | 
 | ||||||
|     forgejo = { |     forgejo = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       domain = "git.jan-leila.com"; |       reverseProxy.domain = "git.jan-leila.com"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     searx = { |     searx = { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,16 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   ... |   ... | ||||||
| }: { | }: { | ||||||
|   config = lib.mkIf (config.services.forgejo.enable && config.services.fail2ban.enable) { |   options.services.forgejo = { | ||||||
|  |     fail2ban = { | ||||||
|  |       enable = lib.mkOption { | ||||||
|  |         type = lib.types.bool; | ||||||
|  |         default = config.services.forgejo.enable && config.services.fail2ban.enable; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = lib.mkIf config.services.forgejo.fail2ban.enable { | ||||||
|     environment.etc = { |     environment.etc = { | ||||||
|       "fail2ban/filter.d/forgejo.local".text = lib.mkIf config.services.forgejo.enable ( |       "fail2ban/filter.d/forgejo.local".text = lib.mkIf config.services.forgejo.enable ( | ||||||
|         pkgs.lib.mkDefault (pkgs.lib.mkAfter '' |         pkgs.lib.mkDefault (pkgs.lib.mkAfter '' | ||||||
|  |  | ||||||
|  | @ -3,36 +3,46 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   config, |   config, | ||||||
|   ... |   ... | ||||||
| }: | }: { | ||||||
| lib.mkIf (config.services.fail2ban.enable && config.services.home-assistant.enable) { |   options.services.home-assistant = { | ||||||
|   environment.etc = { |     fail2ban = { | ||||||
|     "fail2ban/filter.d/hass.local".text = ( |       enable = lib.mkOption { | ||||||
|       pkgs.lib.mkDefault (pkgs.lib.mkAfter '' |         type = lib.types.bool; | ||||||
|         [INCLUDES] |         default = config.services.fail2ban.enable && config.services.home-assistant.enable; | ||||||
|         before = common.conf |       }; | ||||||
| 
 |     }; | ||||||
|         [Definition] |  | ||||||
|         failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from <HOST>.*$ |  | ||||||
| 
 |  | ||||||
|         ignoreregex = |  | ||||||
| 
 |  | ||||||
|         [Init] |  | ||||||
|         datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S |  | ||||||
|       '') |  | ||||||
|     ); |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   services.fail2ban = { |   config = lib.mkIf config.services.home-assistant.fail2ban.enable { | ||||||
|     jails = { |     environment.etc = { | ||||||
|       home-assistant-iptables.settings = { |       "fail2ban/filter.d/hass.local".text = ( | ||||||
|         enabled = true; |         pkgs.lib.mkDefault (pkgs.lib.mkAfter '' | ||||||
|         filter = "hass"; |           [INCLUDES] | ||||||
|         action = ''iptables-multiport[name=HTTP, port="http,https"]''; |           before = common.conf | ||||||
|         logpath = "${config.services.home-assistant.configDir}/*.log"; | 
 | ||||||
|         backend = "auto"; |           [Definition] | ||||||
|         findtime = 600; |           failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from <HOST>.*$ | ||||||
|         bantime = 600; | 
 | ||||||
|         maxretry = 5; |           ignoreregex = | ||||||
|  | 
 | ||||||
|  |           [Init] | ||||||
|  |           datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S | ||||||
|  |         '') | ||||||
|  |       ); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     services.fail2ban = { | ||||||
|  |       jails = { | ||||||
|  |         home-assistant-iptables.settings = { | ||||||
|  |           enabled = true; | ||||||
|  |           filter = "hass"; | ||||||
|  |           action = ''iptables-multiport[name=HTTP, port="http,https"]''; | ||||||
|  |           logpath = "${config.services.home-assistant.configDir}/*.log"; | ||||||
|  |           backend = "auto"; | ||||||
|  |           findtime = 600; | ||||||
|  |           bantime = 600; | ||||||
|  |           maxretry = 5; | ||||||
|  |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -4,7 +4,16 @@ | ||||||
|   pkgs, |   pkgs, | ||||||
|   ... |   ... | ||||||
| }: { | }: { | ||||||
|   config = lib.mkIf (config.services.fail2ban.enable && config.services.immich.enable) { |   options.services.immich = { | ||||||
|  |     fail2ban = { | ||||||
|  |       enable = lib.mkOption { | ||||||
|  |         type = lib.types.bool; | ||||||
|  |         default = config.services.fail2ban.enable && config.services.immich.enable; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = lib.mkIf config.services.immich.fail2ban.enable { | ||||||
|     environment.etc = { |     environment.etc = { | ||||||
|       "fail2ban/filter.d/immich.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter '' |       "fail2ban/filter.d/immich.local".text = pkgs.lib.mkDefault (pkgs.lib.mkAfter '' | ||||||
|         [Definition] |         [Definition] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue