Skip to content

Commit 2f148d6

Browse files
committed
Added an firewall to skyflake.
1 parent 5aaf687 commit 2f148d6

9 files changed

Lines changed: 59 additions & 26 deletions

File tree

example-server.nix

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@
4040
networking.hostName = "example${toString instance}";
4141
users.users.root.password = "";
4242

43-
# TODO:? Shoulld firewall be fixed?
44-
networking.firewall.enable = false;
43+
networking.firewall.enable = true;
4544

4645
networking.useDHCP = false;
4746
networking.useNetworkd = true;

flake.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
./nixos-modules/storage/seaweedfs/db-backend/etcd/options.nix
4141
./nixos-modules/storage/ceph/server.nix
4242
./nixos-modules/defaults.nix
43+
./nixos-modules/firewall.nix
4344
./nixos-modules/nodes.nix
4445
./nixos-modules/nomad.nix
4546
./nixos-modules/users.nix

nixos-modules/firewall.nix

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{ ... }:
2+
{
3+
networking.nftables = {
4+
enable = true;
5+
flushRuleset = true;
6+
};
7+
}

nixos-modules/nomad.nix

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ in
99
default = "sky0";
1010
};
1111

12+
# https://developer.hashicorp.com/nomad/docs/install/production/requirements#ports-used
13+
networking.firewall.allowedUDPPorts = [
14+
4648 #Serf WAN
15+
];
16+
networking.firewall.allowedTCPPorts = [
17+
4646 # HTTP API
18+
4648 # Serf WAN
19+
];
20+
1221
server.enable = mkOption {
1322
type = types.bool;
1423
default = builtins.elem config.networking.hostName cfg.servers;

nixos-modules/storage/ceph/ssh-deploy.nix

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,10 @@ in {
150150
skyflake-gcroots.mountPoint = "/nix/var/nix/gcroots/skyflake";
151151
};
152152

153-
services.openssh.enable = true;
153+
services.openssh = {
154+
enable = true;
155+
openFirewall = true;
156+
};
154157

155158
users.users = builtins.mapAttrs (_: userConfig: {
156159
openssh.authorizedKeys.keys = map (sshKey:

nixos-modules/storage/seaweedfs/db-backend/etcd/default.nix

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,20 @@
1717
mode = "0700";
1818
};
1919

20+
networking.firewall.allowedTCPPorts = [ 2380 ];
21+
2022
systemd.services."etcd" = {
2123
description = "etcd key-value store";
2224
wantedBy = [ "multi-user.target" ];
2325
after = [
2426
"network-online.target"
2527
"network.target"
26-
];
27-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
28-
wants = [ "network-online.target" ];
29-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
30-
28+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
29+
wants =
30+
[ "network-online.target" ]
31+
++ lib.mkIf config.networking.firewall.enable [
32+
"firewall.service"
33+
];
3134
environment =
3235
# (nixpgs.filterAttrs (n: v: v != null)
3336
let

nixos-modules/storage/seaweedfs/options.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
# '';
3333
#};
3434
};
35-
S3 = lib.mkOption {
35+
s3 = lib.mkOption {
3636
type = lib.types {
3737
enable = lib.mkOption {
3838
type = lib.bool;

nixos-modules/storage/seaweedfs/server.nix

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@
77
{
88
config = lib.mkIf config.skyflake.storage.seaweedfs.enable {
99

10+
networking.firewall = {
11+
allowedTCPPorts =
12+
[
13+
9333 # seaweedfs Master
14+
19333 # seaweedfs Master
15+
# TODO Make option to block web UI
16+
8080 # seaweedfs Volume
17+
18080 # seaweedfs Volume
18+
8888 # seaweedfs Filer
19+
18888 # seaweedfs Filer
20+
]
21+
++ lib.mkIf config.skyflake.storage.seaweedfs.s3.enable [
22+
config.skyflake.storage.seaweedfs.s3.port
23+
];
24+
};
25+
1026
users.users.seaweedfs = {
1127
isSystemUser = true;
1228
group = "seaweedfs";
@@ -38,13 +54,11 @@
3854
after = [
3955
"network-online.target"
4056
"etcd.service"
41-
];
42-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
57+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
4358
wants = [
4459
"network-online.target"
4560
"etcd.service"
46-
];
47-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
61+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
4862
unitConfig = {
4963
Documentation = "https://github.com/seaweedfs/seaweedfs/wiki";
5064
};
@@ -73,14 +87,12 @@
7387
"network-online.target"
7488
"etcd.service"
7589
"seaweedfs-master.service"
76-
];
77-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
90+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
7891
wants = [
7992
"network-online.target"
8093
"etcd.service"
8194
"seaweedfs-master.service"
82-
];
83-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
95+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
8496
unitConfig = {
8597
Documentation = "https://github.com/seaweedfs/seaweedfs/wiki";
8698
};
@@ -106,14 +118,12 @@
106118
"network-online.target"
107119
"etcd.service"
108120
"seaweedfs-master.service"
109-
];
110-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
121+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
111122
wants = [
112123
"network-online.target"
113124
"etcd.service"
114125
"seaweedfs-master.service"
115-
];
116-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
126+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
117127
unitConfig = {
118128
Documentation = "https://github.com/seaweedfs/seaweedfs/wiki";
119129
};
@@ -143,14 +153,12 @@
143153
"network-online.target"
144154
"etcd.service"
145155
"seaweedfs-filer.service"
146-
];
147-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
156+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
148157
wants = [
149158
"network-online.target"
150159
"etcd.service"
151160
"seaweedfs-filer.service"
152-
];
153-
# ++ lib.optional config.networking.firewall.enable "firewall.service";
161+
] ++ lib.mkIf config.networking.firewall.enable [ "firewall.service" ];
154162
unitConfig = {
155163
Documentation = "https://github.com/seaweedfs/seaweedfs/wiki";
156164
};

nixos-modules/storage/seaweedfs/ssh-deploy.nix

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,10 @@ in {
150150
${config.skyflake.deploy.sharedGcrootsPath}.mountSource = "/skyflake-internals${config.skyflake.deploy.sharedGcrootsPath}";
151151
};
152152

153-
services.openssh.enable = true;
153+
services.openssh = {
154+
enable = true;
155+
openFirewall = true;
156+
};
154157

155158
users.users = builtins.mapAttrs (_: userConfig: {
156159
openssh.authorizedKeys.keys = map (sshKey:

0 commit comments

Comments
 (0)