mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-27 09:23:01 +00:00
Merge pull request #256090 from CRTified/sshd-validation-fix
nixos/sshd: Specify connection parameters for configuration validation
This commit is contained in:
commit
9bd9e20e9a
@ -27,13 +27,11 @@ let
|
||||
mkValueString = mkValueStringSshd;
|
||||
} " ";});
|
||||
|
||||
configFile = settingsFormat.generate "config" cfg.settings;
|
||||
sshconf = pkgs.runCommand "sshd.conf-validated" { nativeBuildInputs = [ validationPackage ]; } ''
|
||||
configFile = settingsFormat.generate "sshd.conf-settings" cfg.settings;
|
||||
sshconf = pkgs.runCommand "sshd.conf-final" { } ''
|
||||
cat ${configFile} - >$out <<EOL
|
||||
${cfg.extraConfig}
|
||||
EOL
|
||||
|
||||
sshd -G -f $out
|
||||
'';
|
||||
|
||||
cfg = config.services.openssh;
|
||||
@ -576,6 +574,21 @@ in
|
||||
'')}
|
||||
'';
|
||||
|
||||
system.checks = [
|
||||
(pkgs.runCommand "check-sshd-config"
|
||||
{
|
||||
nativeBuildInputs = [ validationPackage ];
|
||||
} ''
|
||||
${concatMapStringsSep "\n"
|
||||
(lport: "sshd -G -T -C lport=${toString lport} -f ${sshconf} > /dev/null")
|
||||
cfg.ports}
|
||||
${concatMapStringsSep "\n"
|
||||
(la: "sshd -G -T -C laddr=${la.addr},lport=${toString la.port} -f ${sshconf} > /dev/null")
|
||||
cfg.listenAddresses}
|
||||
touch $out
|
||||
'')
|
||||
];
|
||||
|
||||
assertions = [{ assertion = if cfg.settings.X11Forwarding then cfgc.setXAuthLocation else true;
|
||||
message = "cannot enable X11 forwarding without setting xauth location";}
|
||||
(let
|
||||
|
@ -52,6 +52,36 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
server_match_rule =
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
services.openssh = {
|
||||
enable = true; listenAddresses = [ { addr = "127.0.0.1"; port = 22; } ];
|
||||
extraConfig = ''
|
||||
# Combined test for two (predictable) Match criterias
|
||||
Match LocalAddress 127.0.0.1 LocalPort 22
|
||||
PermitRootLogin yes
|
||||
|
||||
# Separate tests for Match criterias
|
||||
Match User root
|
||||
PermitRootLogin yes
|
||||
Match Group root
|
||||
PermitRootLogin yes
|
||||
Match Host nohost.example
|
||||
PermitRootLogin yes
|
||||
Match LocalAddress 127.0.0.1
|
||||
PermitRootLogin yes
|
||||
Match LocalPort 22
|
||||
PermitRootLogin yes
|
||||
Match RDomain nohost.example
|
||||
PermitRootLogin yes
|
||||
Match Address 127.0.0.1
|
||||
PermitRootLogin yes
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
client =
|
||||
{ ... }: { };
|
||||
|
||||
@ -114,5 +144,8 @@ in {
|
||||
with subtest("localhost-only"):
|
||||
server_localhost_only.succeed("ss -nlt | grep '127.0.0.1:22'")
|
||||
server_localhost_only_lazy.succeed("ss -nlt | grep '127.0.0.1:22'")
|
||||
|
||||
with subtest("match-rules"):
|
||||
server_match_rule.succeed("ss -nlt | grep '127.0.0.1:22'")
|
||||
'';
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user