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