LaTeX-Code cleanup, syntax uniformed and correct typography, new
[ach-master.git] / src / practical_settings / vpn.tex
1 % ---------------------------------------------------------------------- 
2 \subsection{IPSec}
3 \label{section:IPSECgeneral}
4
5 % ciphersuites current 2013-12-09
6
7 \subsubsection{Settings}
8
9 \paragraphDiamond{Assumptions}
10 We assume the use of IKE (v1 or v2) and ESP for this document.
11
12 \paragraphDiamond{Authentication}
13 IPSEC authentication should optimally be performed via RSA signatures,
14 with a key size of 2048 bits or more. Configuring only the trusted CA
15 that issued the peer certificate provides for additional protection
16 against fake certificates.
17
18 If you need to use Pre-Shared Key authentication:
19
20 \begin{enumerate}
21   \item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
22   \item Use a \textbf{separate} PSK for any IPSEC connection
23   \item Change the PSKs regularly
24 \end{enumerate}
25
26 The size of the PSK should not be shorter than the output size of
27 the hash algorithm used in IKE \footnote{It is used in a HMAC, see
28 RFC2104~\cite{rfc2104} and the discussion starting
29 in \url{http://www.vpnc.org/ietf-ipsec/02.ipsec/msg00268.html}.}.
30
31 For a key composed of upper- and lowercase letters, numbers, and two
32 additional symbols\footnote{64 possible values = 6 bits},
33 table~\ref{tab:IPSEC_psk_len} gives the minimum lengths in characters.
34
35 \begin{table}[h]
36   \centering
37   \small
38   \begin{tabular}{lc}
39     \toprule
40     IKE Hash & PSK length \\
41     \midrule
42     SHA256 & 43 \\
43     SHA384 & 64 \\
44     SHA512 & 86 \\
45     \bottomrule
46   \end{tabular}
47   \caption{PSK lengths}
48   \label{tab:IPSEC_psk_len}
49 \end{table}
50
51 \paragraphDiamond{Cryptographic Suites}
52 IPSEC Cryptographic Suites are pre-defined settings for all the items
53 of a configuration; they try to provide a balanced security level and
54 make setting up VPNs easier.
55 \footnote{RFC6379~\cite{rfc6379}, RFC4308~\cite{rfc4308}}
56
57 When using any of those suites, make sure to enable ``Perfect Forward
58 Secrecy`` for Phase 2, as this is not specified in the suites. The
59 equivalents to the recommended ciphers suites in section
60 \ref{section:recommendedciphers} are shown in
61 table~\ref{tab:IPSEC_suites}.
62
63 \begin{table}[h]
64   \centering
65   \small
66   \begin{tabular}{p{2.5cm}p{2.5cm}l}
67     \toprule
68     Configuration A & Configuration B & Notes\\
69     \midrule
70     \verb|Suite-B-GCM-256| &
71     \verb|Suite-B-GCM-128| \newline
72     \verb|VPN-B| 
73     & All Suite-B variants use NIST elliptic curves\\
74     \bottomrule
75   \end{tabular}
76   \caption{IPSEC Cryptographic Suites}
77   \label{tab:IPSEC_suites}
78 \end{table}
79
80 \paragraphDiamond{IKE or Phase 1}
81
82 Alternatively to the pre-defined cipher suites, you can define your
83 own, as described in this and the next section.
84
85 IKE or Phase 1 is the mutual authentication and key exchange phase;
86 table~\ref{tab:IPSEC_ph1_params} shows the parameters.
87
88 Use only ``main mode``, as ``aggressive mode`` has known security
89 vulnerabilities \footnote{\url{http://ikecrack.sourceforge.net/}}.
90
91 \begin{table}[h]
92   \centering
93   \small
94   \begin{tabular}{lll}
95     \toprule
96     & Configuration A & Configuration B \\
97     \midrule
98     Mode & Main Mode & Main Mode \\
99     Encryption & AES-256 & AES, CAMELLIA (-256 or -128) \\
100     Hash & SHA2-* & SHA2-*, SHA1 \\
101     DH Group & Group 14-18 & Group 14-18 \\
102 %    Lifetime & \todo{need recommendations; 1 day seems to be common
103 %      practice} & \\
104     \bottomrule
105   \end{tabular}
106   \caption{IPSEC Phase 1 parameters}
107   \label{tab:IPSEC_ph1_params}
108 \end{table}
109
110 \paragraphDiamond{ESP or Phase 2}
111 ESP or Phase 2 is where the actual data are protected; recommended
112 parameters are shown in table \ref{tab:IPSEC_ph2_params}.
113
114 \begin{table}[h]
115   \centering
116   \small
117   \begin{tabular}{lll}
118     \toprule
119     & Configuration A & Configuration B \\
120     \midrule
121     Perfect Forward Secrecy & yes & yes \\
122     Encryption & 
123     \parbox[t]{5cm}{\raggedright
124     \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}}
125     &
126     \parbox[t]{5cm}{\raggedright
127     \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}, \mbox{CAMELLIA-256}, \mbox{AES-128}, \mbox{CAMELLIA-128}} \\
128     Hash & SHA2-* (or none for AEAD) & SHA2-*, SHA1 (or none for AEAD) \\
129     DH Group & Same as Phase 1 & Same as Phase 1 \\
130 %    Lifetime & \todo{need recommendations; 1-8 hours is common} & \\
131     \bottomrule
132   \end{tabular}
133   \caption{IPSEC Phase 2 parameters}
134   \label{tab:IPSEC_ph2_params}
135 \end{table}
136
137 \subsubsection{References}
138 \begin{itemize}
139   \item ``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
140     Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
141 \end{itemize}
142
143
144 %---------------------------------------------------------------------- 
145 \subsection{Check Point FireWall-1}
146
147 \subsubsection{Tested with Versions}
148 \begin{itemize}
149   \item R77 (should work with any currently supported version)
150 \end{itemize}
151
152 \subsubsection{Settings}
153 Please see section \ref{section:IPSECgeneral} for guidance on
154 parameter choice. In this section, we will configure a strong setup
155 according to ``Configuration A''.
156
157 This is based on the concept of a ``VPN Community'', which has all the
158 settings for the gateways that are included in that community.
159 Communities can be found in the ``IPSEC VPN'' tab of SmartDashboard.
160
161 \begin{figure}[p]
162   \centering
163   \includegraphics[width=0.592\textwidth]{img/checkpoint_1.png}
164   \caption{VPN Community encryption properties}
165   \label{fig:checkpoint_1}
166 \end{figure}
167
168 Either chose one of the encryption suites in the properties dialog
169 (figure \ref{fig:checkpoint_1}), or proceed to
170 ``Custom Encryption...'', where you can set encryption and hash for
171 Phase 1 and 2 (figure \ref{fig:checkpoint_2}).
172
173 \begin{figure}[p]
174   \centering
175   \includegraphics[width=0.411\textwidth]{img/checkpoint_2.png}
176   \caption{Custom Encryption Suite Properties}
177   \label{fig:checkpoint_2}
178 \end{figure}
179
180 The Diffie-Hellman groups and Perfect Forward Secrecy Settings can be
181 found under ``Advanced Settings'' / ``Advanced VPN Properties''
182 (figure \ref{fig:checkpoint_3}).
183
184 \begin{figure}[p]
185   \centering
186   \includegraphics[width=0.589\textwidth]{img/checkpoint_3.png}
187   \caption{Advanced VPN Properties}
188   \label{fig:checkpoint_3}
189 \end{figure}
190
191
192 \subsubsection{Additional settings}
193 For remote Dynamic IP Gateways, the settings are not taken from the
194 community, but set in the ``Global Properties'' dialog under ``Remote
195 Access'' / ``VPN Authentication and Encryption''. Via the ``Edit...''
196 button, you can configure sets of algorithms that all gateways support
197 (figure \ref{fig:checkpoint_4}).
198
199 \begin{figure}[p]
200   \centering
201   \includegraphics[width=0.474\textwidth]{img/checkpoint_4.png}
202   \caption{Remote Access Encryption Properties}
203   \label{fig:checkpoint_4}
204 \end{figure}
205
206 Please note that these settings restrict the available algorithms for
207 \textbf{all} gateways, and also influence the VPN client connections.
208
209 %\subsubsection{Justification for special settings (if needed)}
210
211 %\subsubsection{Limitations}
212
213 \subsubsection{References}
214 \begin{itemize}
215   \item Check Point \href{https://sc1.checkpoint.com/documents/R77/CP_R77_VPN_AdminGuide/html_frameset.htm}{VPN R77 Administration Guide} (may require a UserCenter account to access)
216 \end{itemize}
217
218 %\subsubsection{How to test}
219
220 %% cipherstrings current 2013-12-09
221 % ---------------------------------------------------------------------- 
222 \subsection{OpenVPN}
223
224 \subsubsection{Tested with Versions}
225 \begin{itemize}
226   \item OpenVPN 2.3.2 from Debian ``wheezy-backports'' linked against openssl (libssl.so.1.0.0) 
227   \item OpenVPN 2.2.1 from Debian Wheezy linked against openssl
228     (libssl.so.1.0.0) 
229   \item OpenVPN 2.3.2 for Windows
230 \end{itemize}
231
232 \subsubsection{Settings}
233
234 \paragraphDiamond{General}
235 We describe a configuration with certificate-based authentication; see
236 below for details on the \verb|easyrsa| tool to help you with that.
237
238 OpenVPN uses TLS only for authentication and key exchange. The
239 bulk traffic is then encrypted and authenticated with the OpenVPN
240 protocol using those keys.
241
242 Note that while the \verb|tls-cipher| option takes a list of ciphers
243 that is then negotiated as usual with TLS, the \verb|cipher|
244 and \verb|auth| options both take a single argument that must match on
245 client and server.
246
247 \paragraphDiamond{Server Configuration}
248 % the cipherlist here is config B without the ECDHE strings, because
249 % it must fit in 256 bytes...
250 % DO NOT CHANGE TO THE CIPHERSTRING MACRO!
251 \begin{lstlisting}
252 tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
253 cipher AES-256-CBC
254 auth SHA384
255 \end{lstlisting}
256
257 \paragraph{Client Configuration}\mbox{}
258
259 Client and server have to use compatible configurations, otherwise they can't communicate.
260 The \verb|cipher| and \verb|auth| directives have to be identical.
261
262 % the cipherlist here is config B without the ECDHE strings, because
263 % it must fit in 256 bytes...
264 % DO NOT CHANGE TO THE CIPHERSTRING MACRO!
265 \begin{lstlisting}
266 tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
267 cipher AES-256-CBC
268 auth SHA384
269
270 # http://openvpn.net/index.php/open-source/documentation/howto.html#mitm
271 remote-cert-tls server
272
273 tls-remote server.example.com
274 \end{lstlisting}
275
276 \subsubsection{Justification for special settings}
277 OpenVPN 2.3.1 changed the values that the \verb|tls-cipher| option
278 expects from OpenSSL to IANA cipher names. That means from that
279 version on you will get ``Deprecated TLS cipher name'' warnings for
280 the configurations above. You cannot use the selection strings from
281 section \ref{section:recommendedciphers} directly from 2.3.1 on, which
282 is why we give an explicit cipher list here.
283
284 In addition, there is a 256 character limit on configuration file line
285 lengths; that limits the size of cipher suites, so we dropped all
286 ECDHE suites.
287
288 The configuration shown above is compatible with all tested versions.
289
290
291 \subsubsection{References}
292 \begin{itemize}
293   \item OpenVPN Documentation: \emph{Security Overview} \url{http://openvpn.net/index.php/open-source/documentation/security-overview.html}
294 \end{itemize}
295
296 %\subsubsection{How to test}
297
298
299 \subsubsection{Additional settings}
300
301 \paragraph{Key renegotiation interval}\mbox{}
302
303 The default for renegotiation of encryption keys is one hour
304 (\verb|reneg-sec 3600|). If you
305 transfer huge amounts of data over your tunnel, you might consider
306 configuring a shorter interval, or switch to a byte- or packet-based
307 interval (\verb|reneg-bytes| or \verb|reneg-pkts|).
308
309 \paragraph{Fixing ``easy-rsa''}\mbox{}
310
311 When installing an OpenVPN server instance, you are probably using
312 \emph{easy-rsa} to generate keys and certificates.
313 The file \verb|vars| in the easyrsa installation directory has a
314 number of settings that should be changed to secure values:
315
316 \begin{lstlisting}
317 export KEY_SIZE=4096
318 export KEY_EXPIRE=365
319 export CA_EXPIRE=1826
320 \end{lstlisting}
321
322 This will enhance the security of the key generation by using RSA keys
323 with a length of 4096 bits, and set a lifetime of one year for the
324 server/client certificates and five years for the CA certificate. \textbf{NOTE: 4096 bits is only an example of how to do this with easy-rsa.} See also section \ref{section:keylengths} for a discussion on keylengths.
325
326 In addition, edit the \verb|pkitool| script and replace all occurences
327 of \verb|sha1| with \verb|sha256|, to sign the certificates with
328 SHA256.
329
330 \subsubsection{Limitations}
331 Note that the ciphersuites shown by \verb|openvpn --show-tls| are \emph{known}, but not necessarily \emph{supported} \footnote{\url{https://community.openvpn.net/openvpn/ticket/304}}.
332
333 Which cipher suite is actually used can be seen in the logs:
334
335 \verb|Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-CAMELLIA256-SHA, 2048 bit RSA|
336
337
338 % ---------------------------------------------------------------------- 
339 \subsection{PPTP}
340
341 PPTP is considered insecure, Microsoft recommends to ``use a more secure VPN
342 tunnel''\footnote{\url{http://technet.microsoft.com/en-us/security/advisory/2743314}}.
343
344 There is a cloud service that cracks the underlying MS-CHAPv2
345 authentication protocol for the price of USD~200\footnote{\url{https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/}},
346 and given the resulting MD4 hash, all PPTP traffic for a user can
347 be decrypted.
348
349 % ---------------------------------------------------------------------- 
350 \subsection{Cisco ASA}
351 The following settings reflect our recommendations as best as possible on the Cisco ASA platform. These are - of course - just settings regarding SSL/TLS (i.e. Cisco AnyConnect) and IPSec. For further security settings regarding this platform the appropriate Cisco guides should be followed.
352
353
354 \subsubsection{Tested with Versions}
355 \begin{itemize}
356   \item 9.1(3) - X-series model
357 \end{itemize}
358
359 \subsubsection{Settings}
360 \begin{lstlisting}
361 crypto ipsec ikev2 ipsec-proposal AES-Fallback
362  protocol esp encryption aes-256 aes-192 aes
363  protocol esp integrity sha-512 sha-384 sha-256
364 crypto ipsec ikev2 ipsec-proposal AES-GCM-Fallback
365  protocol esp encryption aes-gcm-256 aes-gcm-192 aes-gcm
366  protocol esp integrity sha-512 sha-384 sha-256
367 crypto ipsec ikev2 ipsec-proposal AES128-GCM
368  protocol esp encryption aes-gcm
369  protocol esp integrity sha-512
370 crypto ipsec ikev2 ipsec-proposal AES192-GCM
371  protocol esp encryption aes-gcm-192
372  protocol esp integrity sha-512
373 crypto ipsec ikev2 ipsec-proposal AES256-GCM
374  protocol esp encryption aes-gcm-256
375  protocol esp integrity sha-512
376 crypto ipsec ikev2 ipsec-proposal AES
377  protocol esp encryption aes
378  protocol esp integrity sha-1 md5
379 crypto ipsec ikev2 ipsec-proposal AES192
380  protocol esp encryption aes-192
381  protocol esp integrity sha-1 md5
382 crypto ipsec ikev2 ipsec-proposal AES256
383  protocol esp encryption aes-256
384  protocol esp integrity sha-1 md5
385 crypto ipsec ikev2 sa-strength-enforcement
386 crypto ipsec security-association pmtu-aging infinite
387 crypto dynamic-map SYSTEM_DEFAULT_CRYPTO_MAP 65535 set pfs group14
388 crypto dynamic-map SYSTEM_DEFAULT_CRYPTO_MAP 65535 set ikev2 ipsec-proposal AES256-GCM AES192-GCM AES128-GCM AES-GCM-Fallback AES-Fallback
389 crypto map Outside-DMZ_map 65535 ipsec-isakmp dynamic SYSTEM_DEFAULT_CRYPTO_MAP
390 crypto map Outside-DMZ_map interface Outside-DMZ
391
392 crypto ikev2 policy 1
393  encryption aes-gcm-256
394  integrity null
395  group 14
396  prf sha512 sha384 sha256 sha
397  lifetime seconds 86400
398 crypto ikev2 policy 2
399  encryption aes-gcm-256 aes-gcm-192 aes-gcm
400  integrity null
401  group 14
402  prf sha512 sha384 sha256 sha
403  lifetime seconds 86400
404 crypto ikev2 policy 3
405  encryption aes-256 aes-192 aes
406  integrity sha512 sha384 sha256
407  group 14
408  prf sha512 sha384 sha256 sha
409  lifetime seconds 86400
410 crypto ikev2 policy 4
411  encryption aes-256 aes-192 aes
412  integrity sha512 sha384 sha256 sha
413  group 14
414  prf sha512 sha384 sha256 sha
415  lifetime seconds 86400
416 crypto ikev2 enable Outside-DMZ client-services port 443
417 crypto ikev2 remote-access trustpoint ASDM_TrustPoint0
418
419 ssl server-version tlsv1-only
420 ssl client-version tlsv1-only
421 ssl encryption dhe-aes256-sha1 dhe-aes128-sha1 aes256-sha1 aes128-sha1
422 ssl trust-point ASDM_TrustPoint0 Outside-DMZ
423 \end{lstlisting}
424
425 \subsubsection{Justification for special settings}
426 New IPsec policies have been defined which do not make use of ciphers that may be cause for concern. Policies have a "Fallback" option to support legacy devices.
427
428 3DES has been completely disabled as such Windows XP AnyConnect Clients will no longer be able to connect.
429
430 The Cisco ASA platform does not currently support RSA Keys above 2048bits.
431
432 Legacy ASA models (e.g. 5505, 5510, 5520, 5540, 5550) do not offer the possibility to configure for SHA256/SHA384/SHA512 nor AES-GCM for IKEv2 proposals.
433
434 \subsubsection{References}
435 \begin{itemize}
436   \item \url{http://www.cisco.com/en/US/docs/security/asa/roadmap/asaroadmap.html}\\
437   \item \url{http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html}
438 \end{itemize}
439
440 % add any further references or best practice documents here
441
442 %%\subsubsection{How to test}
443 % describe here or point the admin to tools (can be a simple footnote or \ref{} to  the tools section) which help the admin to test his settings.
444
445
446
447 % ---------------------------------------------------------------------- 
448 %%\subsection{Juniper VPN}
449 %%\todo{write this subsubsection. AK: ask Hannes}
450
451
452
453
454 % ---------------------------------------------------------------------- 
455 %\subsection{L2TP over IPSec}
456 %\todo{write this subsubsection}
457
458
459
460
461 % ---------------------------------------------------------------------- 
462 %\subsection{Racoon}
463 %\todo{write this subsubsection}
464
465