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