Merge branch 'master' of github.com:BetterCrypto/Applied-Crypto-Hardening
[ach-master.git] / src / practical_settings / ssh.tex
1 %%---------------------------------------------------------------------- 
2 \subsection{OpenSSH}
3 \subsubsection{Tested with Version} OpenSSH 6.4 (Debian Jessie)
4 \subsubsection{Settings}
5 \paragraph*{sshd\_config}
6 \begin{lstlisting}[breaklines]
7 # ...
8
9 Protocol 2
10 PermitEmptyPasswords no
11 PermitRootLogin no # or 'without-password' to allow SSH key based login
12 StrictModes yes
13 HostKey /etc/ssh/ssh_host_rsa_key
14 Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
15 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
16 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
17 \end{lstlisting}
18 \subsubsection{Tested with Version} OpenSSH 6.0p1 (Debian wheezy)
19 \subsubsection{Settings}
20 \paragraph*{sshd\_config}
21 \begin{lstlisting}[breaklines]
22 # ...
23
24 Protocol 2
25 PermitEmptyPasswords no
26 PermitRootLogin no # or 'without-password' to allow SSH key based login
27 StrictModes yes
28 HostKey /etc/ssh/ssh_host_rsa_key
29 Ciphers aes256-ctr,aes128-ctr
30 MACs hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
31 KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
32 \end{lstlisting}
33
34 \textbf{Note:} Older Linux systems won't support SHA2. PuTTY (Windows) does not support
35 RIPE-MD160. Curve25519, AES-GCM and UMAC are only available upstream (OpenSSH
36 6.2). DSA host keys have been removed on purpose, the DSS standard does not
37 support for DSA keys stronger than 1024bit
38 \footnote{\url{https://bugzilla.mindrot.org/show_bug.cgi?id=1647}} which is far
39 below current standards (see section \ref{section:keylengths}). Legacy systems
40 can use this configuration and simply omit unsupported ciphers, key exchange
41 algorithms and MACs.  
42
43 %\subsubsection{Justification for special settings (if needed)}
44 \subsubsection{References}
45 The openssh sshd\_config  man page is the best reference: \url{http://www.openssh.org/cgi-bin/man.cgi?query=sshd_config}
46
47 \subsubsection{How to test}
48 Connect a client with verbose logging enabled to the SSH server
49 \begin{lstlisting}
50 $ ssh -vvv myserver.com
51 \end{lstlisting}and observe the key exchange in the output.
52
53
54 %%---------------------------------------------------------------------- 
55 \subsection{Cisco ASA}
56 \subsubsection{Tested with Versions}
57 \begin{itemize*}
58   \item 9.1(3)
59 \end{itemize*}
60
61
62 \subsubsection{Settings}
63 \begin{lstlisting}
64 crypto key generate rsa modulus 2048
65 ssh version 2
66 ssh key-exchange group dh-group14-sha1
67 \end{lstlisting}
68 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.
69
70 \subsubsection{References}
71 \begin{itemize*}
72   \item \url{http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/general/admin\_management.html }
73 \end{itemize*}
74
75 \subsubsection{How to test}
76 Connect a client with verbose logging enabled to the SSH server
77 \begin{lstlisting}
78 $ ssh -vvv myserver.com
79 \end{lstlisting}and observe the key exchange in the output.
80
81
82 %---------------------------------------------------------------------- 
83 \subsection{Cisco IOS}
84 \subsubsection{Tested with Versions}
85 \begin{itemize*}
86   \item 15.0, 15.1, 15.2
87 \end{itemize*}
88
89
90 \subsubsection{Settings}
91 \begin{lstlisting}
92 crypto key generate rsa modulus 4096 label SSH-KEYS
93 ip ssh rsa keypair-name SSH-KEYS
94 ip ssh version 2
95 ip ssh dh min size 2048
96
97 line vty 0 15
98 transport input ssh
99 \end{lstlisting}
100 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.
101 In IOS, a dedicated Key-pair can be bound to SSH to reduce the usage of individual keys-pairs.
102 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.
103
104
105 \subsubsection{References}
106 \begin{itemize*}
107   \item \url{http://www.cisco.com/en/US/docs/ios/sec\_user\_services/configuration/guide/sec\_cfg\_secure\_shell.html}
108 \end{itemize*}
109 % add any further references or best practice documents here
110
111 \subsubsection{How to test}
112 Connect a client with verbose logging enabled to the SSH server
113 \begin{lstlisting}
114 $ ssh -vvv myserver.com
115 \end{lstlisting}and observe the key exchange in the output.