File tree Expand file tree Collapse file tree 4 files changed +106
-0
lines changed Expand file tree Collapse file tree 4 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 4
4
../hydra.nix
5
5
../hydra-proxy.nix
6
6
./boot.nix
7
+ ./firewall.nix
7
8
./network.nix
8
9
] ;
9
10
Original file line number Diff line number Diff line change
1
+ {
2
+ pkgs ,
3
+ lib ,
4
+ inputs ,
5
+ ...
6
+ } :
7
+
8
+ let
9
+ blockedAutNums = [
10
+ 45102 # ALIBABA-CN-NET
11
+ 132203 # TENCENT-NET-AP-CN
12
+ ] ;
13
+ in
14
+
15
+ {
16
+ networking . nftables = {
17
+ enable = true ;
18
+ tables . "abuse" = {
19
+ family = "inet" ;
20
+ content = ''
21
+ set ipv4blocks {
22
+ type ipv4_addr;
23
+ flags interval, timeout;
24
+ auto-merge;
25
+ timeout 12h;
26
+ }
27
+ set ipv6blocks {
28
+ type ipv6_addr;
29
+ auto-merge;
30
+ flags interval, timeout;
31
+ timeout 12h;
32
+ }
33
+ chain input-abuse {
34
+ type filter hook input priority filter - 5;
35
+
36
+ ip saddr @ipv4blocks tcp dport 443 counter drop;
37
+ ip6 saddr @ipv6blocks tcp dport 443 counter drop;
38
+ }
39
+ '' ;
40
+ } ;
41
+ } ;
42
+
43
+ systemd . services . nft-prefix-import = {
44
+ wants = [ "network-online.target" ] ;
45
+ after = [ "network-online.target" ] ;
46
+ wantedBy = [ "multi-user.target" ] ;
47
+ path = with pkgs ; [ nftables ] ;
48
+ environment . USER_AGENT = "NixOS.org Infrastructure - [email protected] " ;
49
+ serviceConfig = {
50
+ Type = "oneshot" ;
51
+ AmbientCapabilities = [ "CAP_NET_ADMIN" ] ;
52
+ DynamicUser = true ;
53
+ User = "nft-asblock" ;
54
+ Group = "nft-asblock" ;
55
+ ExecStart = toString (
56
+ [
57
+ ( lib . getExe inputs . nft-prefix-import . packages . ${ pkgs . hostPlatform . system } . default )
58
+ "--table"
59
+ "abuse"
60
+ "--ipv4set"
61
+ "ipv4blocks"
62
+ "--ipv6set"
63
+ "ipv6blocks"
64
+ ]
65
+ ++ blockedAutNums
66
+ ) ;
67
+ StateDirectory = "nft-prefix-import" ;
68
+ WorkingDirectory = "/var/lib/nft-prefix-import" ;
69
+ } ;
70
+ } ;
71
+
72
+ systemd . timers . nft-prefix-import = {
73
+ wantedBy = [ "timers.target" ] ;
74
+ timerConfig = {
75
+ OnCalendar = "0/4:00" ;
76
+ RandomizedDelaySec = 3600 ;
77
+ } ;
78
+ } ;
79
+ }
Original file line number Diff line number Diff line change 70
70
inputs . nixpkgs . follows = "nixpkgs" ;
71
71
} ;
72
72
73
+ nft-prefix-import = {
74
+ url = "github:mweinelt/nft-prefix-import" ;
75
+ inputs . nixpkgs . follows = "nixpkgs-unstable" ;
76
+ } ;
77
+
73
78
srvos = {
74
79
url = "github:numtide/srvos" ;
75
80
inputs . nixpkgs . follows = "nixpkgs" ;
You can’t perform that action at this time.
0 commit comments