77c16521a6babc6eda481485495346d2e42796da
[ach-master.git] / src / practical_settings / ssh.tex
1 %%---------------------------------------------------------------------- 
2 \subsection{OpenSSH}
3 \subsubsection{Tested with Version} OpenSSH 6.1, 6.4
4 \subsubsection{Settings}
5 \paragraph*{sshd\_config}
6 \begin{lstlisting}[breaklines]
7         # ...
8
9         Protocol 2
10         PermitEmptyPasswords no
11         PermitRootLogin no
12         StrictModes yes
13         HostKey /etc/ssh/ssh_host_rsa_key
14         Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-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 curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
17
18         # In addition, you can whitelist only specific users for SSH login
19         # AllowUsers user1 user2
20 \end{lstlisting}
21
22 \textbf{Note:} Older Linux systems won't support SHA2. PuTTY (Windows) does not support
23 RIPE-MD160. Curve25519, AES-GCM and UMAC are only available upstream (OpenSSH
24 6.1). DSA host keys have been removed on purpose, the DSS standard does not
25 support for DSA keys stronger than 1024bit
26 \footnote{\url{https://bugzilla.mindrot.org/show_bug.cgi?id=1647}} which is far
27 below current standards (see section \ref{section:keylengths}). Legacy systems
28 can use this configuration and simply omit unsupported ciphers, key exchange
29 algorithms and MACs.  
30 %\subsubsection{Justification for special settings (if needed)}
31 \subsubsection{References}
32 The openssh sshd\_config  man page is the best reference: \url{http://www.openssh.org/cgi-bin/man.cgi?query=sshd_config}
33 \subsubsection{How to test}
34 Connect a client with verbose logging enabled to the SSH server \\
35 \begin{lstlisting}[breaklines]
36 $ ssh -vvv myserver.com
37 \end{lstlisting}and observe the key exchange in the output.
38
39
40 %%---------------------------------------------------------------------- 
41 \subsection{Cisco ASA}
42 \subsubsection{Tested with Version} 9.1(3)
43 \subsubsection{Settings}
44 \begin{lstlisting}[breaklines]
45 crypto key generate rsa modulus 2048
46 ssh version 2
47 ssh key-exchange group dh-group14-sha1
48 \end{lstlisting}
49 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.
50 \subsubsection{References}
51 \url{http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/general/admin\_management.html }
52 \subsubsection{How to test}
53 Connect a client with verbose logging enabled to the SSH server \\
54 \begin{lstlisting}[breaklines]
55 $ ssh -vvv myserver.com
56 \end{lstlisting}and observe the key exchange in the output.
57
58
59 %---------------------------------------------------------------------- 
60 \subsection{Cisco IOS}
61 \subsubsection{Tested with Version} 15.0, 15.1, 15.2
62 \subsubsection{Settings}
63 \begin{lstlisting}[breaklines]
64 crypto key generate rsa modulus 2048 label SSH-KEYS
65 ip ssh rsa keypair-name SSH-KEYS
66 ip ssh version 2
67 ip ssh dh min size 2048
68 \end{lstlisting}
69 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.
70 In IOS, a dedicated Key-pair can be bound to SSH to reduce the usage of individual keys-pairs.
71 \subsubsection{References}
72 \url{http://www.cisco.com/en/US/docs/ios/sec\_user\_services/configuration/guide/sec\_secure\_shell\_v2.html }
73 % add any further references or best practice documents here
74 \subsubsection{How to test}
75 Connect a client with verbose logging enabled to the SSH server \\
76 \begin{lstlisting}[breaklines]
77 $ ssh -vvv myserver.com
78 \end{lstlisting}and observe the key exchange in the output.