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