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