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