Add missing files
[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 IPSec}
327 \todo{write this subsubsection}
328
329 \begin{description}
330 \item[Tested with Version:] \todo{version?}
331
332 \item[Settings:] \mbox{}
333
334 \begin{lstlisting}[breaklines]
335     %Here goes your setting string
336 \end{lstlisting}
337
338 \item[Additional settings:] \mbox{}
339
340 %Here you can add additional settings
341
342 \begin{lstlisting}[breaklines]
343     %copy \& paste additional settings
344 \end{lstlisting}
345
346 \item[Justification for special settings (if needed):] \mbox{}
347
348 % 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
349
350 \item[References:] \todo{add references}
351
352 % add any further references or best practice documents here
353
354 \item[How to test:] 
355 % 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.
356
357 \end{description}
358
359
360
361
362
363
364
365 \subsubsection{Juniper VPN}
366 \todo{write this subsubsection. AK: ask Hannes}
367
368
369 \begin{description}
370 \item[Tested with Version:] \todo{version?}
371
372 \item[Settings:] \mbox{}
373
374 \begin{lstlisting}[breaklines]
375     %Here goes your setting string
376 \end{lstlisting}
377
378 \item[Additional settings:] \mbox{}
379
380 %Here you can add additional settings
381
382 \begin{lstlisting}[breaklines]
383     %copy \& paste additional settings
384 \end{lstlisting}
385
386 \item[Justification for special settings (if needed):] \mbox{}
387
388 % 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
389
390 \item[References:] \todo{add references}
391
392 % add any further references or best practice documents here
393
394 \item[How to test:]
395 % 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.
396
397 \end{description}
398
399
400
401
402
403 \subsubsection{L2TP over IPSec}
404 \todo{write this subsubsection}
405
406
407 \begin{description}
408 \item[Tested with Version:] \todo{version?}
409
410 \item[Settings:] \mbox{}
411
412 \begin{lstlisting}[breaklines]
413     %Here goes your setting string
414 \end{lstlisting}
415
416 \item[Additional settings:] \mbox{}
417
418 %Here you can add additional settings
419
420 \begin{lstlisting}[breaklines]
421     %copy \& paste additional settings
422 \end{lstlisting}
423
424 \item[Justification for special settings (if needed):] \mbox{}
425
426 % 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
427
428 \item[References:] \todo{add references}
429
430 % add any further references or best practice documents here
431
432 \item[How to test:]
433 % 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.
434
435 \end{description}
436
437
438
439
440
441
442 \subsubsection{Racoon}
443 \todo{write this subsubsection}
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}