Add paragraph "Insecure ciphers" on Sweet32 attack on Blowfish and (3)DES ciphers.
[ach-master.git] / src / practical_settings / vpn.tex
index 33e679b..ef739ac 100644 (file)
@@ -1,20 +1,15 @@
-%%\subsection{VPNs}
-
 % ---------------------------------------------------------------------- 
-\subsection{IPSec}
+\subsection{IPsec}
 \label{section:IPSECgeneral}
 
 % ciphersuites current 2013-12-09
-%\begin{description}
 
 \subsubsection{Settings}
 
-\paragraph*{Assumptions}\mbox{}\\
-
+\paragraph{Assumptions:}
 We assume the use of IKE (v1 or v2) and ESP for this document.
 
-\paragraph*{Authentication}\mbox{}\\
-
+\paragraph{Authentication:}
 IPSEC authentication should optimally be performed via RSA signatures,
 with a key size of 2048 bits or more. Configuring only the trusted CA
 that issued the peer certificate provides for additional protection
@@ -23,42 +18,37 @@ against fake certificates.
 If you need to use Pre-Shared Key authentication:
 
 \begin{enumerate}
-\item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
-\item Use a \textbf{separate} PSK for any IPSEC connection
-\item Change the PSKs regularily
+  \item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
+  \item Use a \textbf{separate} PSK for any IPSEC connection
+  \item Change the PSKs regularly
 \end{enumerate}
 
 The size of the PSK should not be shorter than the output size of
-the hash algorithm used in IKE \footnote{It is used in a HMAC, see
-RFC2104\cite{rfc2104} and the discussion starting
+the hash algorithm used in IKE\footnote{It is used in a HMAC, see
+RFC2104~\cite{rfc2104} and the discussion starting
 in \url{http://www.vpnc.org/ietf-ipsec/02.ipsec/msg00268.html}.}.
 
 For a key composed of upper- and lowercase letters, numbers, and two
 additional symbols\footnote{64 possible values = 6 bits},
 table~\ref{tab:IPSEC_psk_len} gives the minimum lengths in characters.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lc}
-    \toprule
-    IKE Hash & PSK length \\
-    \midrule
-    SHA256 & 43 \\
-    SHA384 & 64 \\
-    SHA512 & 86 \\
-    \bottomrule
-  \end{tabular}
-  \caption{PSK lengths}
-  \label{tab:IPSEC_psk_len}
-\end{table}
-
-\paragraph*{Cryptographic Suites}\mbox{}\\
 
+\ctable[%
+pos=ht,
+caption={PSK lengths},
+label=tab:IPSEC_psk_len,
+]{lc}{}{
+\FL    IKE Hash & PSK length (chars)
+\ML    SHA256 & 43
+\NN    SHA384 & 64
+\NN    SHA512 & 86
+\LL}
+
+\paragraph{Cryptographic Suites:}
 IPSEC Cryptographic Suites are pre-defined settings for all the items
 of a configuration; they try to provide a balanced security level and
 make setting up VPNs easier.
-\footnote{RFC6379\cite{rfc6379}, RFC4308\cite{rfc4308}}
+\footnote{RFC6379~\cite{rfc6379}, RFC4308~\cite{rfc4308}}
 
 When using any of those suites, make sure to enable ``Perfect Forward
 Secrecy`` for Phase 2, as this is not specified in the suites. The
@@ -66,100 +56,76 @@ equivalents to the recommended ciphers suites in section
 \ref{section:recommendedciphers} are shown in
 table~\ref{tab:IPSEC_suites}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{p{2.5cm}p{2.5cm}l}
-    \toprule
-    Configuration A & Configuration B & Notes\\
-    \midrule
-    \verb|Suite-B-GCM-256| &
-    \verb|Suite-B-GCM-128| \newline
-    \verb|VPN-B| 
-    & All Suite-B variants use NIST elliptic curves\\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Cryptographic Suites}
-  \label{tab:IPSEC_suites}
-\end{table}
-
-\paragraph*{IKE or Phase 1}\mbox{}\\
+\ctable[%
+caption={IPSEC Cryptographic Suites},
+label=tab:IPSEC_suites,
+]{>{\raggedright}p{3cm}>{\raggedright}p{3cm}l}{}{
+\FL    Configuration A & Configuration B & Notes
+\ML
+    \texttt{Suite-B-GCM-256} &
+    \texttt{Suite-B-GCM-128} \newline \texttt{VPN-B} &
+    All Suite-B variants use NIST elliptic curves
+\LL}
+\paragraph{Phase 1:}
 
 Alternatively to the pre-defined cipher suites, you can define your
 own, as described in this and the next section.
 
-IKE or Phase 1 is the mutual authentication and key exchange phase;
+Phase 1 is the mutual authentication and key exchange phase;
 table~\ref{tab:IPSEC_ph1_params} shows the parameters.
 
 Use only ``main mode``, as ``aggressive mode`` has known security
 vulnerabilities \footnote{\url{http://ikecrack.sourceforge.net/}}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lll}
-    \toprule
-    & Configuration A & Configuration B \\
-    \midrule
-    Mode & Main Mode & Main Mode \\
-    Encryption & AES-256 & AES, CAMELLIA (-256 or -128) \\
-    Hash & SHA2-* & SHA2-*, SHA1 \\
-    DH Group & Group 14, 18 & Group 14, 18 \\
-%    Lifetime & \todo{need recommendations; 1 day seems to be common
-%      practice} & \\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Phase 1 parameters}
-  \label{tab:IPSEC_ph1_params}
-\end{table}
-
-\paragraph*{ESP or Phase 2}\mbox{}\\
-
-ESP or Phase 2 is where the actual data are protected; recommended
+\ctable[%
+caption={IPSEC Phase 1 parameters},
+label=tab:IPSEC_ph1_params,
+]{lll}{}{%
+\FL    & Configuration A & Configuration B
+\ML    Mode & Main Mode & Main Mode
+\NN    Encryption & AES-256 & AES, CAMELLIA (-256 or -128)
+\NN    Hash & SHA2-* & SHA2-*, SHA1
+\NN    DH Group & Group 14-18 & Group 14-18
+%\NN    Lifetime & \todo{need recommendations; 1 day seems to be common practice} &
+\LL}
+
+\paragraph{Phase 2:}
+Phase 2 is where the parameters that protect the actual data are negotiated; recommended
 parameters are shown in table \ref{tab:IPSEC_ph2_params}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lll}
-    \toprule
-    & Configuration A & Configuration B \\
-    \midrule
-    Perfect Forward Secrecy & yes & yes \\
-    Encryption & 
-    \parbox[t]{5cm}{\raggedright
-    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}}
-    &
-    \parbox[t]{5cm}{\raggedright
-    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}, \mbox{CAMELLIA-256}, \mbox{AES-128}, \mbox{CAMELLIA-128}} \\
-    Hash & SHA2-* (or none for AEAD) & SHA2-*, SHA1 (or none for AEAD) \\
-    DH Group & Same as Phase 1 & Same as Phase 1 \\
-%    Lifetime & \todo{need recommendations; 1-8 hours is common} & \\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Phase 2 parameters}
-  \label{tab:IPSEC_ph2_params}
-\end{table}
+\ctable[%
+caption={IPSEC Phase 2 parameters},
+label=tab:IPSEC_ph2_params,
+]{l>{\raggedright}p{4.5cm}>{\raggedright}p{6cm}}{}{%
+\FL    & Configuration A & Configuration B
+\ML    Perfect Forward Secrecy & \yes & \yes
+\NN    Encryption & %
+    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256} &%
+    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}, \mbox{CAMELLIA-256}, \mbox{AES-128}, \mbox{CAMELLIA-128}
+\NN    Hash & SHA2-* (or none for AEAD) & SHA2-*, SHA1 (or none for AEAD)
+\NN    DH Group & Same as Phase 1 & Same as Phase 1
+%\NN    Lifetime & \todo{need recommendations; 1-8 hours is common} &
+\LL}
 
 \subsubsection{References}
+\begin{itemize*}
+  \item ``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
+    Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
+\end{itemize*}
 
 
-``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
-  Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
-
-
-%---------------------------------------------------------------------- 
+%----------------------------------------------------------------------
 \subsection{Check Point FireWall-1}
-   
-\begin{description}
-\item[Tested with Version:] \mbox{}
 
-\begin{itemize}
-\item R77 (should work with any currently supported version)
-\end{itemize}
+% Attention, only example...
+%Checkpoint firewall is a \gls{firewall} that ....
 
-\item[Settings:] \mbox{}
+\subsubsection{Tested with Versions}
+\begin{itemize*}
+  \item R77 (should work with any currently supported version)
+\end{itemize*}
 
+\subsubsection{Settings}
 Please see section \ref{section:IPSECgeneral} for guidance on
 parameter choice. In this section, we will configure a strong setup
 according to ``Configuration A''.
@@ -175,7 +141,7 @@ Communities can be found in the ``IPSEC VPN'' tab of SmartDashboard.
   \label{fig:checkpoint_1}
 \end{figure}
 
-Either chose one of the encryption suites in the properties dialog
+Either choose one of the encryption suites in the properties dialog
 (figure \ref{fig:checkpoint_1}), or proceed to
 ``Custom Encryption...'', where you can set encryption and hash for
 Phase 1 and 2 (figure \ref{fig:checkpoint_2}).
@@ -198,8 +164,8 @@ found under ``Advanced Settings'' / ``Advanced VPN Properties''
   \label{fig:checkpoint_3}
 \end{figure}
 
-\item[Additional settings:] \mbox{}
 
+\subsubsection{Additional settings}
 For remote Dynamic IP Gateways, the settings are not taken from the
 community, but set in the ``Global Properties'' dialog under ``Remote
 Access'' / ``VPN Authentication and Encryption''. Via the ``Edit...''
@@ -216,45 +182,34 @@ button, you can configure sets of algorithms that all gateways support
 Please note that these settings restrict the available algorithms for
 \textbf{all} gateways, and also influence the VPN client connections.
 
-%\item[Justification for special settings (if needed):]
-
-%\item[Limitations:]
+%\subsubsection{Justification for special settings (if needed)}
 
-\item[References:]\mbox{}
+%\subsubsection{Limitations}
 
-\begin{itemize}
-
-\item Check Point
-  \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)
-
-\end{itemize}
-
-% \item[How to test:]
-
-\end{description}
+\subsubsection{References}
+\begin{itemize*}
+  \item Check Point \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)
+\end{itemize*}
 
+%\subsubsection{How to test}
 
 %% cipherstrings current 2013-12-09
 % ---------------------------------------------------------------------- 
-\subsection{OpenVPN}
-
-\begin{description}
+\FloatBarrier % the preceding section has several figures. Floating them too far away might get confusing for readers.
 
-\item[Tested with Version:] \mbox{}\\
-
-\begin{itemize}
-\item OpenVPN 2.3.2 from Debian ``wheezy-backports'' linked against openssl (libssl.so.1.0.0) 
-\item OpenVPN 2.2.1 from Debian 7.0 linked against openssl
-    (libssl.so.1.0.0) 
-\item OpenVPN 2.3.2 for Windows
-\end{itemize}
+\subsection{OpenVPN}
 
-\item[Settings:] \mbox{}
+\subsubsection{Tested with Versions}
+\begin{itemize*}
+  \item OpenVPN 2.3.10 from Ubuntu Xenial 16.04.1 LTS linked against openssl (libssl.so.1.0.0)
+  \item OpenVPN 2.3.2 from Debian ``wheezy-backports'' linked against openssl (libssl.so.1.0.0)
+  \item OpenVPN 2.2.1 from Debian Wheezy linked against openssl (libssl.so.1.0.0)
+  \item OpenVPN 2.3.2 for Windows
+\end{itemize*}
 
-\paragraph{General}\mbox{}
+\subsubsection{Settings}
 
+\paragraph{General}
 We describe a configuration with certificate-based authentication; see
 below for details on the \verb|easyrsa| tool to help you with that.
 
@@ -267,42 +222,28 @@ that is then negotiated as usual with TLS, the \verb|cipher|
 and \verb|auth| options both take a single argument that must match on
 client and server.
 
-\paragraph{Server Configuration}\mbox{}
+OpenVPN duplexes the tunnel into a data and a control channel. The control
+channel is a usual TLS connection, the data channel currently uses 
+encrypt-then-mac CBC, see \url{https://github.com/BetterCrypto/Applied-Crypto-Hardening/pull/91#issuecomment-75365286}
+
 
-% this is only a DoS-protection, out of scope:
-% # TLS Authentication
-% tls-auth ta.key
-\todo{FIXME: we should use the CIPHERSTRINGB  macro here}
-% previous:
-% tls-cipher
-% 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
+\paragraph{Server Configuration}
+~\\
 % the cipherlist here is config B without the ECDHE strings, because
 % it must fit in 256 bytes...
-\begin{lstlisting}[breaklines]
-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
-cipher AES-256-CBC
-auth SHA384
-\end{lstlisting}
-
-\paragraph{Client Configuration}\mbox{}
+% DO NOT CHANGE TO THE CIPHERSTRING MACRO!
+\configfile{server.conf}{248-250}{Cipher configuration for OpenVPN (Server)}
 
+\paragraph{Client Configuration}
 Client and server have to use compatible configurations, otherwise they can't communicate.
 The \verb|cipher| and \verb|auth| directives have to be identical.
 
-\todo{FIXME: we should use the CIPHERSTRINGB  macro here}
-\begin{lstlisting}[breaklines]
-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
-cipher AES-256-CBC
-auth SHA384
-
-# http://openvpn.net/index.php/open-source/documentation/howto.html#mitm
-remote-cert-tls server
-
-tls-remote server.example.com
-\end{lstlisting}
-
-\item[Justification for special settings (if needed):] \mbox{}\\
+% the cipherlist here is config B without the ECDHE strings, because
+% it must fit in 256 bytes...
+% DO NOT CHANGE TO THE CIPHERSTRING MACRO!
+\configfile{client.conf}{44-45,115-121}{Cipher and TLS configuration for OpenVPN (Server)}
 
+\subsubsection{Justification for special settings}
 OpenVPN 2.3.1 changed the values that the \verb|tls-cipher| option
 expects from OpenSSL to IANA cipher names. That means from that
 version on you will get ``Deprecated TLS cipher name'' warnings for
@@ -316,56 +257,69 @@ ECDHE suites.
 
 The configuration shown above is compatible with all tested versions.
 
-\item[References:] \mbox{}\\
-
-\url{http://openvpn.net/index.php/open-source/documentation/security-overview.html}
 
-%\item[How to test:]
+\subsubsection{References}
+\begin{itemize*}
+  \item OpenVPN Documentation: \emph{Security Overview} \url{https://openvpn.net/index.php/open-source/documentation/security-overview.html}
+\end{itemize*}
 
+%\subsubsection{How to test}
 
-\item[Additional settings:] \mbox{}
 
-\paragraph{Key renegotiation interval}\mbox{}
+\subsubsection{Additional settings}
 
+\paragraph{Key renegotiation interval}
 The default for renegotiation of encryption keys is one hour
 (\verb|reneg-sec 3600|). If you
 transfer huge amounts of data over your tunnel, you might consider
 configuring a shorter interval, or switch to a byte- or packet-based
 interval (\verb|reneg-bytes| or \verb|reneg-pkts|).
 
-\paragraph{Fixing ``easy-rsa''}\mbox{}
-
+\paragraph{Insecure ciphers}
+
+Sweet32\footnote{\url{https://sweet32.info/}} is an attack on 64-bit block
+ciphers, such as \verb|3DES| and \verb|Blowfish| in OpenVPN. The following
+ciphers are affected, and should no longer be used:
+\begin{itemize*}
+  \item BF-*
+  \item DES* (including 3DES variants)
+  \item RC2-*
+\end{itemize*}
+The following ciphers are not affected:
+\begin{itemize*}
+  \item AES-*
+  \item CAMELLIA-*
+  \item SEED-*
+\end{itemize*}
+According to mitigation section on Sweet32 website\footnote{\url{https://sweet32.info/\#impact}}
+users users should change the cipher from the DES or Blowfish to AES
+(\verb|cipher AES-128-CBC|). If cipher change is not possible users can
+mitigate the attack by forcing frequent rekeying (\verb|reneg-bytes 64000000|).
+
+\paragraph{Fixing ``easy-rsa''}
 When installing an OpenVPN server instance, you are probably using
-{\it easy-rsa} to generate keys and certificates.
+\emph{easy-rsa} to generate keys and certificates.
 The file \verb|vars| in the easyrsa installation directory has a
 number of settings that should be changed to secure values:
 
-\begin{lstlisting}[breaklines]
-export KEY_SIZE=4096
-export KEY_EXPIRE=365
-export CA_EXPIRE=1826
-\end{lstlisting}
+\configfile{vars}{53-53,56-56,59-59}{Sane default values for OpenVPN (easy-rsa)}
+
 
 This will enhance the security of the key generation by using RSA keys
-with a length of 2048 bits, and set a lifetime of one year for the
-server/client certificates and five years for the CA certificate.
+with a length of 4096 bits, and set a lifetime of one year for the
+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.
 
-In addition, edit the \verb|pkitool| script and replace all occurences
+In addition, edit the \verb|pkitool| script and replace all occurrences
 of \verb|sha1| with \verb|sha256|, to sign the certificates with
 SHA256.
 
-\item[Limitations:] \mbox{}
-
-Note that the ciphersuites shown by \verb|openvpn --show-tls| are {\it
-known}, but not necessarily {\it
-supported} \footnote{\url{https://community.openvpn.net/openvpn/ticket/304}}.
+\subsubsection{Limitations}
+Note that the ciphersuites shown by \verb|openvpn --show-tls| are \emph{known}, but not necessarily \emph{supported} \footnote{\url{https://community.openvpn.net/openvpn/ticket/304}}.
 
 Which cipher suite is actually used can be seen in the logs:
 
 \verb|Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-CAMELLIA256-SHA, 2048 bit RSA|
 
-\end{description}
-
 
 % ---------------------------------------------------------------------- 
 \subsection{PPTP}
@@ -380,12 +334,16 @@ be decrypted.
 
 % ---------------------------------------------------------------------- 
 \subsection{Cisco ASA}
-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.
-\begin{description}
-\item[Tested with Version:] 
-9.1(3) - X-series model
-\item[Settings:] \mbox{}
-\begin{lstlisting}[breaklines]
+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.
+
+
+\subsubsection{Tested with Versions}
+\begin{itemize*}
+  \item 9.1(3) - X-series model
+\end{itemize*}
+
+\subsubsection{Settings}
+\begin{lstlisting}
 crypto ipsec ikev2 ipsec-proposal AES-Fallback
  protocol esp encryption aes-256 aes-192 aes
  protocol esp integrity sha-512 sha-384 sha-256
@@ -450,7 +408,7 @@ ssl encryption dhe-aes256-sha1 dhe-aes128-sha1 aes256-sha1 aes128-sha1
 ssl trust-point ASDM_TrustPoint0 Outside-DMZ
 \end{lstlisting}
 
-\item[Justification for special settings (if needed):] \mbox{}
+\subsubsection{Justification for special settings}
 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.
 
 3DES has been completely disabled as such Windows XP AnyConnect Clients will no longer be able to connect.
@@ -459,22 +417,117 @@ The Cisco ASA platform does not currently support RSA Keys above 2048bits.
 
 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.
 
-\item[References:] 
-\url{http://www.cisco.com/en/US/docs/security/asa/roadmap/asaroadmap.html}\\
-\url{http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html}
+\subsubsection{References}
+\begin{itemize*}
+  \item \url{http://www.cisco.com/en/US/docs/security/asa/roadmap/asaroadmap.html}
+  \item \url{http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html}
+\end{itemize*}
 
 % add any further references or best practice documents here
 
-%%\item[How to test:] 
+%%\subsubsection{How to test}
 % 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.
 
-\end{description}
+
+% ---------------------------------------------------------------------- 
+\subsection{Openswan}
 
 
+\subsubsection{Tested with Version}
+\begin{itemize*}
+  \item Openswan 2.6.39 (Gentoo)
+\end{itemize*}
 
+\subsubsection{Settings}
+Note: the available algorithms depend on your kernel configuration (when using protostack=netkey) and/or build-time options.
 
+To list the supported algorithms
+\begin{lstlisting}
+$ ipsec auto --status | less
+\end{lstlisting}
+and look for 'algorithm ESP/IKE' at the beginning.
+
+\begin{lstlisting}
+aggrmode=no
+# ike format: cipher-hash;dhgroup
+# recommended ciphers:
+# - aes
+# recommended hashes:
+# - sha2_256 with at least 43 byte PSK
+# - sha2_512 with at least 86 byte PSK
+# recommended dhgroups:
+# - modp2048 = DH14
+# - modp3072 = DH15
+# - modp4096 = DH16
+# - modp6144 = DH17
+# - modp8192 = DH18
+ike=aes-sha2_256;modp2048
+type=tunnel
+phase2=esp
+# esp format: cipher-hash;dhgroup
+# recommended ciphers configuration A:
+# - aes_gcm_c-256 = AES_GCM_16
+# - aes_ctr-256
+# - aes_ccm_c-256 = AES_CCM_16
+# - aes-256 
+# additional ciphers configuration B:
+# - camellia-256
+# - aes-128
+# - camellia-128
+# recommended hashes configuration A:
+# - sha2-256
+# - sha2-384
+# - sha2-512
+# - null (only with GCM/CCM ciphers)
+# additional hashes configuration B:
+# - sha1
+# recommended dhgroups: same as above
+phase2alg=aes_gcm_c-256-sha2_256;modp2048
+salifetime=8h
+pfs=yes
+auto=ignore
+\end{lstlisting}
+
+\subsubsection{How to test}
+Start the vpn and using
+\begin{lstlisting}
+$ ipsec auto --status | less
+\end{lstlisting}
+and look for 'IKE algorithms wanted/found' and 'ESP algorithms wanted/loaded'.
+
+\subsubsection{References}
+%\todo{more specific References??}
+\begin{itemize*}
+  \item \url{https://www.openswan.org/}
+\end{itemize*}
 
 
+\subsection{tinc}
+\subsubsection{Tested with Version}
+\begin{itemize*}
+  \item tinc 1.0.23 from Gentoo linked against OpenSSL 1.0.1e
+  \item tinc 1.0.23 from Sabayon linked against OpenSSL 1.0.1e
+\end{itemize*}
+
+\paragraph*{Defaults}\mbox{}\\
+tinc uses 2048 bit RSA keys, Blowfish-CBC, and SHA1 as default settings and suggests the usage of CBC mode ciphers.
+Any key length up to 8196 is supported and it does not need to be a power of two. OpenSSL Ciphers and Digests are supported by tinc.
+
+\paragraph*{Settings}\mbox{}\\
+Generate keys with
+\begin{lstlisting}[breaklines]
+tincd -n NETNAME -K8196
+\end{lstlisting}
+Old keys will not be deleted (but disabled), you have to delete them manually. Add the following lines to your tinc.conf on all machines
+\configfile{tinc.conf}{3-4}{Cipher and digest selection in tinc}
+
+\paragraph*{References}\mbox{}\\
+\begin{itemize}
+\item tincd(8) man page
+\item tinc.conf(5) man page
+\item \href{http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}{tinc mailinglist: http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}
+\end{itemize}
+
 
 % ---------------------------------------------------------------------- 
 %%\subsection{Juniper VPN}
@@ -484,14 +537,14 @@ Legacy ASA models (e.g. 5505, 5510, 5520, 5540, 5550) do not offer the possibili
 
 
 % ---------------------------------------------------------------------- 
-\subsection{L2TP over IPSec}
-\todo{write this subsubsection}
+%\subsection{L2TP over IPSec}
+%\todo{write this subsubsection}
 
 
 
 
 % ---------------------------------------------------------------------- 
-\subsection{Racoon}
-\todo{write this subsubsection}
+%\subsection{Racoon}
+%\todo{write this subsubsection}