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