OpenSSH 6.6p1 Ciphers, MAC, Kex changes
[ach-master.git] / src / practical_settings / ssh.tex
1 %%---------------------------------------------------------------------- 
2 \begin{mdframed}[style=warningboxstyle]
3         Please be advised that any change in the SSH-Settings of your server might cause problems connecting to the server or starting/reloading the SSH-Daemon itself.
4         So every time you configure your SSH-Settings on a remote server via SSH itself, ensure that you have a second open connection to the server, which you can use to reset or adapt your changes!
5 \end{mdframed}
6
7 \subsection{OpenSSH}
8
9 \subsubsection{Tested with Version} OpenSSH 6.6p1 (Gentoo)
10 \subsubsection{Settings}
11 \paragraph*{sshd\_config}
12 \begin{lstlisting}[breaklines]
13 # ...
14
15 Protocol 2
16
17 PermitEmptyPasswords no
18 PermitRootLogin no # or 'without-password' to allow SSH key based login
19 StrictModes yes
20 HostKey /etc/ssh/ssh_host_rsa_key
21 HostKey /etc/ssh/ssh_host_ec25519_key
22 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
23 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
24 KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
25 \end{lstlisting}
26 \textbf{Note:} OpenSSH 6.6p1 now supports Curve25519
27
28 \subsubsection{Tested with Version} OpenSSH 6.0p1 (Debian wheezy)
29 \subsubsection{Settings}
30 \paragraph*{sshd\_config}
31 \begin{lstlisting}[breaklines]
32 # ...
33
34 Protocol 2
35 PermitEmptyPasswords no
36 PermitRootLogin no # or 'without-password' to allow SSH key based login
37 StrictModes yes
38 HostKey /etc/ssh/ssh_host_rsa_key
39 Ciphers aes256-ctr,aes128-ctr
40 MACs hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
41 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
42 \end{lstlisting}
43 \subsubsection{Tested with Version} OpenSSH 6.4 (Debian Jessie)
44 \subsubsection{Settings}
45 \paragraph*{sshd\_config}
46 \begin{lstlisting}[breaklines]
47 # ...
48
49 Protocol 2
50 PermitEmptyPasswords no
51 PermitRootLogin no # or 'without-password' to allow SSH key based login
52 StrictModes yes
53 HostKey /etc/ssh/ssh_host_rsa_key
54 Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
55 MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
56 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
57 \end{lstlisting}
58 \subsubsection{Tested with Version} OpenSSH 6.0p1 (Debian wheezy)
59 \subsubsection{Settings}
60 \paragraph*{sshd\_config}
61 \begin{lstlisting}[breaklines]
62 # ...
63
64 Protocol 2
65 PermitEmptyPasswords no
66 PermitRootLogin no # or 'without-password' to allow SSH key based login
67 StrictModes yes
68 HostKey /etc/ssh/ssh_host_rsa_key
69 Ciphers aes256-ctr,aes128-ctr
70 MACs hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
71 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
72 \end{lstlisting}
73
74 \textbf{Note:} Older Linux systems won't support SHA2. PuTTY (Windows) does not support
75 RIPE-MD160. Curve25519, AES-GCM and UMAC are only available upstream (OpenSSH
76 6.6p1). DSA host keys have been removed on purpose, the DSS standard does not
77 support for DSA keys stronger than 1024bit
78 \footnote{\url{https://bugzilla.mindrot.org/show_bug.cgi?id=1647}} which is far
79 below current standards (see section \ref{section:keylengths}). Legacy systems
80 can use this configuration and simply omit unsupported ciphers, key exchange
81 algorithms and MACs.  
82
83 %\subsubsection{Justification for special settings (if needed)}
84 \subsubsection{References}
85 The OpenSSH sshd\_config  man page is the best reference: \url{http://www.openssh.org/cgi-bin/man.cgi?query=sshd_config}
86
87 \subsubsection{How to test}
88 Connect a client with verbose logging enabled to the SSH server
89 \begin{lstlisting}
90 $ ssh -vvv myserver.com
91 \end{lstlisting}and observe the key exchange in the output.
92
93
94 %%---------------------------------------------------------------------- 
95 \subsection{Cisco ASA}
96 \subsubsection{Tested with Versions}
97 \begin{itemize*}
98   \item 9.1(3)
99 \end{itemize*}
100
101
102 \subsubsection{Settings}
103 \begin{lstlisting}
104 crypto key generate rsa modulus 2048
105 ssh version 2
106 ssh key-exchange group dh-group14-sha1
107 \end{lstlisting}
108 Note: When the ASA is configured for SSH, by default both SSH versions 1 and 2 are allowed. In addition to that, only a group1 DH-key-exchange is used. This should be changed to allow only SSH version 2 and to use a key-exchange with group14. The generated RSA key should be 2048 bit (the actual supported maximum). A non-cryptographic best practice is to reconfigure the lines to only allow SSH-logins.
109
110 \subsubsection{References}
111 \begin{itemize*}
112   \item \url{http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/general/admin\_management.html }
113 \end{itemize*}
114
115 \subsubsection{How to test}
116 Connect a client with verbose logging enabled to the SSH server
117 \begin{lstlisting}
118 $ ssh -vvv myserver.com
119 \end{lstlisting}and observe the key exchange in the output.
120
121
122 %---------------------------------------------------------------------- 
123 \subsection{Cisco IOS}
124 \subsubsection{Tested with Versions}
125 \begin{itemize*}
126   \item 15.0, 15.1, 15.2
127 \end{itemize*}
128
129
130 \subsubsection{Settings}
131 \begin{lstlisting}
132 crypto key generate rsa modulus 4096 label SSH-KEYS
133 ip ssh rsa keypair-name SSH-KEYS
134 ip ssh version 2
135 ip ssh dh min size 2048
136
137 line vty 0 15
138 transport input ssh
139 \end{lstlisting}
140 Note: Same as with the ASA, also on IOS by default both SSH versions 1 and 2 are allowed and the DH-key-exchange only use a DH-group of 768 Bit.
141 In IOS, a dedicated Key-pair can be bound to SSH to reduce the usage of individual keys-pairs.
142 From IOS Version 15.0 onwards, 4096 Bit rsa keys are supported and should be used according to the paradigm "use longest supported key". Also, do not forget to disable telnet vty access.
143
144
145 \subsubsection{References}
146 \begin{itemize*}
147   \item \url{http://www.cisco.com/en/US/docs/ios/sec\_user\_services/configuration/guide/sec\_cfg\_secure\_shell.html}
148 \end{itemize*}
149 % add any further references or best practice documents here
150
151 \subsubsection{How to test}
152 Connect a client with verbose logging enabled to the SSH server
153 \begin{lstlisting}
154 $ ssh -vvv myserver.com
155 \end{lstlisting}and observe the key exchange in the output.