diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix
index e50c4dbacf36..aab1203086ce 100644
--- a/nixos/modules/services/networking/ssh/sshd.nix
+++ b/nixos/modules/services/networking/ssh/sshd.nix
@@ -213,6 +213,65 @@ in
description = "Files from which authorized keys are read.";
};
+ kexAlgorithms = mkOption {
+ type = types.listOf types.str;
+ default = [
+ "curve25519-sha256@libssh.org"
+ "diffie-hellman-group-exchange-sha256"
+ ];
+ description = ''
+ Allowed key exchange algorithms
+
+
+ Defaults to recommended settings from both
+
+ and
+
+ '';
+ };
+
+ ciphers = mkOption {
+ type = types.listOf types.str;
+ default = [
+ "chacha20-poly1305@openssh.com"
+ "aes256-gcm@openssh.com"
+ "aes128-gcm@openssh.com"
+ "aes256-ctr"
+ "aes192-ctr"
+ "aes128-ctr"
+ ];
+ description = ''
+ Allowed ciphers
+
+
+ Defaults to recommended settings from both
+
+ and
+
+ '';
+ };
+
+ macs = mkOption {
+ type = types.listOf types.str;
+ default = [
+ "hmac-sha2-512-etm@openssh.com"
+ "hmac-sha2-256-etm@openssh.com"
+ "umac-128-etm@openssh.com"
+ "hmac-sha2-512"
+ "hmac-sha2-256"
+ "umac-128@openssh.com"
+ ];
+ description = ''
+ Allowed MACs
+
+
+ Defaults to recommended settings from both
+
+ and
+
+ '';
+ };
+
extraConfig = mkOption {
type = types.lines;
default = "";
@@ -363,14 +422,9 @@ in
HostKey ${k.path}
'')}
- ### Recommended settings from both:
- # https://stribika.github.io/2015/01/04/secure-secure-shell.html
- # and
- # https://wiki.mozilla.org/Security/Guidelines/OpenSSH#Modern_.28OpenSSH_6.7.2B.29
-
- KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
- Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
- MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
+ KexAlgorithms ${concatStringsSep "," cfg.kexAlgorithms}
+ Ciphers ${concatStringsSep "," cfg.ciphers}
+ MACs ${concatStringsSep "," cfg.macs}
# LogLevel VERBOSE logs user's key fingerprint on login.
# Needed to have a clear audit track of which key was used to log in.