aboutsummaryrefslogtreecommitdiff
path: root/tharos/security.nix
blob: 03b59dccd24d23375524281f3220e7471832330f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
  self,
  inputs,
  ...
}:
{
  flake.machines.tharos = {
    nixos =
      {
        lib,
        modulesPath,
        ...
      }:
      {
        # Kein Login für Nutzer die nicht explizit deklariert sind
        users.mutableUsers = false;
        users.users = lib.mapAttrs (username: keyFiles: {
          isNormalUser = true;
          openssh.authorizedKeys.keyFiles = keyFiles;
          # ANMERKUNG: Der Einfachheit halber sind bis auf Weiteres alle Nutzer mit SSH-Zugang auch Administratoren
          extraGroups = [ "wheel" ];
        }) self.keys;

        /*
          `sudo` über SSH ohne Passworteingabe
          ANMERKUNG: Nutzer sollten in ihrem ` ~/.ssh/config` für die Maschine einstellen:

          ForwardAgent: yes
        */
        security.pam.sshAgentAuth.enable = true;
        security.pam.services.sudo.sshAgentAuth = true;

        # Nur Administratoren können den angemeldeten Benutzer wechseln
        security.pam.services.su.requireWheel = true;

        networking.firewall.allowPing = true;
        services.openssh = {
          enable = true;
          settings = {
            PasswordAuthentication = false;
            PermitRootLogin = "prohibit-password";
          };
        };
      };
  };
}