added Cisco ASA IPsec + SSL VPN Settings
[ach-master.git] / src / practical_settings / vpn.tex
1 %%\subsection{VPNs}
2 \todo{write this subsection}
3 \subsubsection{IPSec}
4 \label{section:IPSECgeneral}
5
6
7 \todo{cm: check if there are downgrade attacks for checkpoint \& co} \\
8
9 \begin{description}
10
11 \item[Settings:] \mbox{}
12
13 \paragraph*{Assumptions}\mbox{}\\
14
15 We assume the usage of IKE (v1 or v2) for this document, and ESP.
16
17 \paragraph*{Authentication}\mbox{}\\
18
19 IPSEC authentication should optimally be performed via RSA signatures,
20 with a key size of 2048 bits or more. Configuring only the trusted CA
21 that issued the peer certificate provides for additional protection
22 against fake certificates.
23
24 If you need to use Pre-Shared Key authentication:
25
26 \begin{enumerate}
27 \item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
28 \item Use a \textbf{separate} PSK for any IPSEC connection
29 \item Change the PSKs regularily
30 \end{enumerate}
31
32 The size of the PSK should not be shorter than the output size of
33 the hash algorithm used in IKE \footnote{It is used in a HMAC, see
34   \url{http://www.ietf.org/rfc/rfc2104.txt}.}.
35
36 For a key composed of upper- and lowercase letters, numbers, and two
37 additional symbols \footnote{64 possible values = 6 bits}, that gives
38 the following 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 \end{table}
53
54 \paragraph*{Cryptographic Suites}\mbox{}\\
55
56 IPSEC Cryptographic Suites are pre-defined settings for all the
57 items of a configuration; they try to provide a balanced security
58 level and make setting up VPNs easier.
59
60 When using any of those suites, make sure to enable ``Perfect Forward
61 Secrecy`` for Phase 2, as this is not specified in the suites. The
62 equivalents to the recommended ciphers suites in section
63 \ref{section:recommendedciphers} are:
64
65 \begin{table}[h]
66   \centering
67   \small
68   \begin{tabular}{lll}
69     \toprule
70     Configuration A & Configuration B & Notes\\
71     \midrule
72     \verb|Suite-B-GCM-256|\footnote{\url{http://tools.ietf.org/html/rfc6379}} &
73 \verb|Suite-B-GCM-128| & Uses NIST elliptic curves
74 \\ & \verb|VPN-B|\footnote{\url{http://tools.ietf.org/html/rfc4308}} &
75 \\
76     \bottomrule
77   \end{tabular}
78 \end{table}
79
80 \paragraph*{IKE or Phase 1}\mbox{}\\
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
87 Use only ``main mode``, as ``aggressive mode`` has known security
88 vulnerabilities \footnote{\url{http://ikecrack.sourceforge.net/}}.
89
90 \todo{how to make footnotes in a table appear in the output document?}
91
92 \begin{table}
93   \centering
94   \small
95   \begin{tabular}{lll}
96     \toprule
97     & Configuration A & Configuration B \\
98     \midrule
99     Mode & Main Mode & Main Mode \\
100     Encryption & AES-256 & AES-256, CAMELLIA-256 \\
101     Hash & SHA2-* & SHA2-*, SHA1 \\
102     DH Group & Group 14--18 \footnote{2048--8192 bit DH},
103     19--21\footnote{(256--521 bit ECDH)} & Group 14--21 \\
104     Lifetime & \todo{need recommendations; 1 day seems to be common
105       practice} & \\
106     \bottomrule
107   \end{tabular}
108 \end{table}
109
110 \paragraph*{ESP or Phase 2}\mbox{}\\
111
112 ESP or Phase 2 is where the actual data are protected.
113
114 \todo{make the tables appear right here!}
115
116 \begin{table}
117   \centering
118   \small
119   \begin{tabular}{lll}
120     \toprule
121     & Configuration A & Configuration B \\
122     \midrule
123     Perfect Forward Secrecy & yes & yes \\
124     Encryption & AES-GCM-16, AES-CTR, AES-CCM-16, AES-256 & AES-GCM-16, AES-CTR, AES-CCM-16, AES-256, CAMELLIA-256 \\
125     Hash & SHA2-* (or none for AES-GCM) & SHA2-*, SHA1 (or none for AES-GCM) \\
126     DH Group & Same as Phase 1 & Same as Phase 1 \\
127     Lifetime & \todo{need recommendations; 1-8 hours is common} & \\
128     \bottomrule
129   \end{tabular}
130 \end{table}
131
132 \item[References:] \mbox{}
133
134 ``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
135   Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
136
137 \end{description}
138
139 \subsubsection{Check Point FireWall-1}
140    
141 \begin{description}
142 \item[Tested with Version:] \mbox{}
143
144 \begin{itemize}
145 \item R77 (should work with any currently supported version)
146 \end{itemize}
147
148 \item[Settings:] \mbox{}
149
150 Please see section \ref{section:IPSECgeneral} for guidance on
151 parameter choice. In this section, we will configure a strong setup
152 according to ``Configuration A''.
153
154 This is based on the concept of a ``VPN Community'', which has all the
155 settings for the gateways that are included in that community.
156 Communities can be found in the ``IPSEC VPN'' tab of SmartDashboard.
157
158 \todo{make those graphics prettier -- whoever has the right LaTeX
159   mojo, please do!}
160
161 \includegraphics{checkpoint_1.png}
162
163 Either chose one of the encryption suites here, or proceed to
164 ``Custom Encryption...'', where you can set encryption and hash for
165 Phase 1 and 2:
166
167 \includegraphics{checkpoint_2.png}
168
169 The Diffie-Hellman groups and Perfect Forward Secrecy Settings can be
170 found under ``Advanced Settings'' / ``Advanced VPN Properties'':
171
172 \includegraphics{checkpoint_3.png}
173
174 \item[Additional settings:]
175
176 For remote Dynamic IP Gateways, the settings are not taken from the
177 community, but set in the ``Global Properties'' dialog under ``Remote
178 Access'' / ``VPN Authentication and Encryption''. Via the ``Edit...''
179 button, you can configure sets of algorithms that all gateways support:
180
181 \includegraphics{checkpoint_4.png}
182
183 Please note that these settings restrict the available algorithms for
184 \textbf{all} gateways, and also influence the VPN client connections.
185
186 %\item[Justification for special settings (if needed):]
187
188 %\item[Limitations:]
189
190 \item[References:]\mbox{}
191
192 \begin{itemize}
193
194 \item Check Point
195   \href{https://sc1.checkpoint.com/documents/R77/CP_R77_VPN_AdminGuide/html_frameset.htm}{VPN
196     R77 Administration Guide} (may require a
197   UserCenter account to access)
198
199 \end{itemize}
200
201 % \item[How to test:]
202
203 \end{description}
204
205
206 \subsubsection{OpenVPN}
207
208 \begin{description}
209
210 \item[Tested with Version:] OpenVPN 2.3.2 from Debian backports linked against openssl (libssl.so.1.0.0) 
211
212 \todo{cm: please write this subsubsection}
213 \todo{We suppose user uses easy-rsa which is roughly used in all HOWTO\footnote{\url{http://openvpn.net/index.php/open-source/documentation/howto.html}}}
214
215
216 \item[Additional settings:] \mbox{}
217
218 \paragraph{Fine tuning at installation level}
219
220 When installing an OpenVPN server instance, you are probably using {\it easy-rsa} tools to generate the crypto stuff needed.
221 From the directory where you will run them, you can enhance you configuration by changing the following variables in \verb|vars|:
222
223 \begin{lstlisting}[breaklines]
224 export KEY_SIZE=2048 
225 export KEY_EXPIRE=365
226 export CA_EXPIRE=1826
227 \end{lstlisting}
228
229 This will enhance the security of the key generation by using RSA keys
230 with a length of 2048 bits, and set a lifetime of one year for the
231 keys and five years for the CA certificate.
232
233 In addition, edit the \verb|pkitool| script and replace all occurences
234 of \verb|sha1| with \verb|sha256|, to sign the certificates with
235 SHA256.
236
237 \paragraph{Server Configuration}
238
239 In the server configuration file, you can select the algorithm that will be used for traffic encryption.
240 Based on previous recommendation established in that document, select AES with a 256 bits key in CBC mode.
241
242 Note that TLS is used only for negotiation bla bla bla...
243
244 \todo{cm: explain how openvpn crypto works; make configA/B sections/tables}
245
246 \item[Settings:] \mbox{}
247
248 % openvpn --show-ciphers
249 % --show-tls
250
251 \todo{cm: changelog 2.3.1: ``Switch to IANA names for TLS ciphers'' --
252 give both types of strings?}
253
254 \begin{lstlisting}[breaklines]
255 cipher AES-256-CBC   # AES
256
257 # TLS Authentication
258 tls-auth ta.key
259 tls-cipher EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EDH+CAMELLIA256:EECDH:EDH+aRSA:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128:!ECDSA:AES256-SHA
260
261 auth SHA512
262
263 reneg-bytes XXX
264 reneg-pkts XXX
265 reneg-sec XXX
266
267 \end{lstlisting}
268
269 % tls-cipher is a list, C&P the string!
270 % what about: TLS-DHE-RSA-WITH-AES-256-CBC-SHA
271 % DH params/DH key sizes
272
273 \todo{Explain a little bit tls-auth and auth directives + TEST}
274 \todo{also test with network-damager?}
275
276 The following ciphers are avaible and recommended\footnote{You can retrieve the list of supported algorithm on your OpenVPN installation thanks to the command {\it openvpn --show-ciphers}}
277 \begin{lstlisting}[breaklines]
278 AES-128-CBC
279 AES-192-CBC
280 AES-256-CBC
281 CAMELLIA-128-CBC
282 CAMELLIA-192-CBC
283 CAMELLIA-256-CBC
284 SEED-CBC
285 \end{lstlisting}
286
287
288 \paragraph{Client Configuration}
289
290 Client and server have to use identical configuration otherwise they can't communicate.
291 The {\it cipher} directive has then to be identical in both server and client configuration.
292
293 \begin{lstlisting}[breaklines]
294 cipher AES-256-CBC   # AES
295
296 remote-cert-tls server # http://openvpn.net/index.php/open-source/documentation/howto.html#mitm
297
298 tls-remote server.example.com
299
300 \end{lstlisting}
301
302 \todo{what about tls-auth keys/ta.key? }. 
303 \todo{what about auth sha512 ?}
304
305 \item[Justification for special settings (if needed):]
306
307 \item[References:] \url{http://openvpn.net/index.php/open-source/documentation/security-overview.html}
308
309 \item[How to test:]
310 \todo{write me please}
311
312
313 \end{description}
314
315
316 \subsubsection{PPTP}
317
318 PPTP is considered insecure, Microsoft recommends to ``use a more secure VPN
319 tunnel''\footnote{\url{http://technet.microsoft.com/en-us/security/advisory/2743314}}.
320
321 There is a cloud service that cracks the underlying MS-CHAPv2
322 authentication protocol for the price of USD~200\footnote{\url{https://www.cloudcracker.com/blog/2012/07/29/cracking-ms-chap-v2/}},
323 and given the resulting MD4 hash, all PPTP traffic for a user can
324 be decrypted.
325
326 \subsubsection{Cisco ASA IPSec and AnyConnect (SSL/TLS)}
327 \todo{write this subsubsection}
328
329 \begin{description}
330 \item[Tested with Version:] \todo{version?}
331 ASA Version 9.1(3)
332 \item[Settings:] \mbox{}
333
334 \begin{lstlisting}[breaklines]
335 crypto ipsec ikev2 ipsec-proposal AES-Fallback
336  protocol esp encryption aes-256 aes-192 aes
337  protocol esp integrity sha-512 sha-384 sha-256
338 crypto ipsec ikev2 ipsec-proposal AES-GMAC-Fallback
339  protocol esp encryption aes-gmac-256 aes-gmac-192 aes-gmac
340  protocol esp integrity sha-512 sha-384 sha-256
341 crypto ipsec ikev2 ipsec-proposal AES128-GMAC
342  protocol esp encryption aes-gmac
343  protocol esp integrity sha-512
344 crypto ipsec ikev2 ipsec-proposal AES192-GMAC
345  protocol esp encryption aes-gcm-192
346  protocol esp integrity sha-512
347 crypto ipsec ikev2 ipsec-proposal AES256-GMAC
348  protocol esp encryption aes-gmac-256
349  protocol esp integrity sha-512
350 crypto ipsec ikev2 ipsec-proposal AES-GCM-Fallback
351  protocol esp encryption aes-gcm-256 aes-gcm-192 aes-gcm
352  protocol esp integrity sha-512 sha-384 sha-256
353 crypto ipsec ikev2 ipsec-proposal AES128-GCM
354  protocol esp encryption aes-gcm
355  protocol esp integrity sha-512
356 crypto ipsec ikev2 ipsec-proposal AES192-GCM
357  protocol esp encryption aes-gcm-192
358  protocol esp integrity sha-512
359 crypto ipsec ikev2 ipsec-proposal AES256-GCM
360  protocol esp encryption aes-gcm-256
361  protocol esp integrity sha-512
362 crypto ipsec ikev2 ipsec-proposal DES
363  protocol esp encryption des
364  protocol esp integrity sha-1 md5
365 crypto ipsec ikev2 ipsec-proposal 3DES
366  protocol esp encryption 3des
367  protocol esp integrity sha-1 md5
368 crypto ipsec ikev2 ipsec-proposal AES
369  protocol esp encryption aes
370  protocol esp integrity sha-1 md5
371 crypto ipsec ikev2 ipsec-proposal AES192
372  protocol esp encryption aes-192
373  protocol esp integrity sha-1 md5
374 crypto ipsec ikev2 ipsec-proposal AES256
375  protocol esp encryption aes-256
376  protocol esp integrity sha-1 md5
377 crypto ipsec ikev2 sa-strength-enforcement
378 crypto ipsec security-association pmtu-aging infinite
379 crypto dynamic-map SYSTEM_DEFAULT_CRYPTO_MAP 65535 set pfs group5
380 crypto dynamic-map SYSTEM_DEFAULT_CRYPTO_MAP 65535 set ikev2 ipsec-proposal AES256 AES192 AES
381
382 crypto ikev2 policy 1
383  encryption aes-gcm-256
384  integrity null
385  group 24 14
386  prf sha512 sha384 sha256 sha
387  lifetime seconds 86400
388 crypto ikev2 policy 2
389  encryption aes-gcm-256 aes-gcm-192 aes-gcm
390  integrity null
391  group 24 14 5
392  prf sha512 sha384 sha256 sha
393  lifetime seconds 86400
394 crypto ikev2 policy 3
395  encryption aes-256 aes-192 aes
396  integrity sha512 sha384 sha256
397  group 24 14
398  prf sha512 sha384 sha256 sha
399  lifetime seconds 86400
400 crypto ikev2 policy 4
401  encryption aes-256 aes-192 aes
402  integrity sha512 sha384 sha256 sha
403  group 24 14 5
404  prf sha512 sha384 sha256 sha
405  lifetime seconds 86400
406 crypto ikev2 enable Outside-DMZ client-services port 443
407 crypto ikev2 remote-access trustpoint ASDM_TrustPoint0
408
409 ssl server-version tlsv1-only
410 ssl client-version tlsv1-only
411 ssl encryption dhe-aes256-sha1 dhe-aes128-sha1 aes256-sha1 aes128-sha1
412 ssl trust-point ASDM_TrustPoint0 Outside-DMZ
413 \end{lstlisting}
414
415 \item[Additional settings:] \mbox{}
416
417 %Here you can add additional settings
418
419 \begin{lstlisting}[breaklines]
420     %copy \& paste additional settings
421 \end{lstlisting}
422
423 \item[Justification for special settings (if needed):] \mbox{}
424
425 % 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
426
427 \item[References:] \todo{add references}
428
429 % add any further references or best practice documents here
430
431 \item[How to test:] 
432 % 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.
433
434 \end{description}
435
436
437
438
439
440
441
442 \subsubsection{Juniper VPN}
443 \todo{write this subsubsection. AK: ask Hannes}
444
445
446 \begin{description}
447 \item[Tested with Version:] \todo{version?}
448
449 \item[Settings:] \mbox{}
450
451 \begin{lstlisting}[breaklines]
452     %Here goes your setting string
453 \end{lstlisting}
454
455 \item[Additional settings:] \mbox{}
456
457 %Here you can add additional settings
458
459 \begin{lstlisting}[breaklines]
460     %copy \& paste additional settings
461 \end{lstlisting}
462
463 \item[Justification for special settings (if needed):] \mbox{}
464
465 % 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
466
467 \item[References:] \todo{add references}
468
469 % add any further references or best practice documents here
470
471 \item[How to test:]
472 % 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.
473
474 \end{description}
475
476
477
478
479
480 \subsubsection{L2TP over IPSec}
481 \todo{write this subsubsection}
482
483
484 \begin{description}
485 \item[Tested with Version:] \todo{version?}
486
487 \item[Settings:] \mbox{}
488
489 \begin{lstlisting}[breaklines]
490     %Here goes your setting string
491 \end{lstlisting}
492
493 \item[Additional settings:] \mbox{}
494
495 %Here you can add additional settings
496
497 \begin{lstlisting}[breaklines]
498     %copy \& paste additional settings
499 \end{lstlisting}
500
501 \item[Justification for special settings (if needed):] \mbox{}
502
503 % 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
504
505 \item[References:] \todo{add references}
506
507 % add any further references or best practice documents here
508
509 \item[How to test:]
510 % 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.
511
512 \end{description}
513
514
515
516
517
518
519 \subsubsection{Racoon}
520 \todo{write this subsubsection}
521
522
523 \begin{description}
524 \item[Tested with Version:] \todo{version?}
525
526 \item[Settings:] \mbox{}
527
528 \begin{lstlisting}[breaklines]
529     %Here goes your setting string
530 \end{lstlisting}
531
532 \item[Additional settings:] \mbox{}
533
534 %Here you can add additional settings
535
536 \begin{lstlisting}[breaklines]
537     %copy \& paste additional settings
538 \end{lstlisting}
539
540 \item[Justification for special settings (if needed):] \mbox{}
541
542 % 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
543
544 \item[References:] \todo{add references}
545
546 % add any further references or best practice documents here
547
548 \item[How to test:]
549 % 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.
550
551 \end{description}