Merge branch 'master' of https://git.bettercrypto.org/ach-master
authorsebix <szebi@gmx.at>
Wed, 25 Dec 2013 20:45:18 +0000 (21:45 +0100)
committersebix <szebi@gmx.at>
Wed, 25 Dec 2013 20:45:18 +0000 (21:45 +0100)
Conflicts:
src/practical_settings/DBs.tex
src/practical_settings/vpn.tex

1  2 
src/practical_settings/DBs.tex
src/practical_settings/vpn.tex

@@@ -2,31 -2,36 +2,33 @@@
  % This list is based on : http://en.wikipedia.org/wiki/Relational_database_management_system#Market_share
  
  %% ---------------------------------------------------------------------- 
 -\subsubsection{Oracle}
 -\begin{description}
 -\item[Tested with Version:] not tested
 +\subsection{Oracle}
 +%\subsubsection{Tested with Version}
 +\todo{not tested yet}
  
 -\item[References:] (German)
 -{\small \url{http://www.telekom.com/static/-/155996/7/technische-sicherheitsanforderungen-si}}
 +\subsubsection{References}
 +\begin{itemize}
 +  \item Technical safety requirements by \emph{Deutsche Telekom AG} (German). Please read section 17.12 or pages 129 and following (Req 396 and Req 397) about SSL and ciphersuites \url{http://www.telekom.com/static/-/155996/7/technische-sicherheitsanforderungen-si}
 +\end{itemize}
  
 -Please read the following pages about SSL and ciphersuites:\\
 -p. 129 -Req 396 and Req 397 \\
 -
 -\end{description}
  
  %% ---------------------------------------------------------------------- 
+ \subsubsection{SQL Server}
  \todo{write this}
  
  
 -
  %% ---------------------------------------------------------------------- 
 -\subsubsection{MySQL}
 -
 -\begin{description}
 -\item[Tested with Version:] Debian 7.0 and MySQL 5.5
 +\subsection{MySQL}
 +\subsubsection{Tested with Version}
 +\begin{itemize}
 +  \item Debian 7.0 and MySQL 5.5
 +\end{itemize}
  
 -\item[Settings:] \mbox{}
  
 -\paragraph*{my.cnf}\mbox{}\\
 -
 -\begin{lstlisting}[breaklines]
 +\subsubsection{Settings}
 +\paragraph*{my.cnf}
 +\begin{lstlisting}
  [mysqld]
  ssl
  ssl-ca=/etc/mysql/ssl/ca-cert.pem
@@@ -35,42 -40,40 +37,42 @@@ ssl-key=/etc/mysql/ssl/client-key.pe
  ssl-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
  \end{lstlisting}
  
 -\item[Additional settings:]
 -
 +%\subsubsection{Additional settings}
  
 -\item[Justification for special settings (if needed):]
  
 +%\subsubsection{Justification for special settings (if needed)}
  % 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
  
 -\item[References:]
 -{\small \url{https://dev.mysql.com/doc/refman/5.5/en/ssl-connections.html}}
  
 +\subsubsection{References}
 +\begin{itemize}
 +  \item MySQL Documentation on SSl Connections: \url{https://dev.mysql.com/doc/refman/5.5/en/ssl-connections.html}
 +\end{itemize}
  
 -\item[How to test:]
  
 +\subsubsection{How to test}
  After restarting the server run the following query to see if the ssl settings are correct:
 -\begin{lstlisting}[breaklines]
 +\begin{lstlisting}
  show variables like '%ssl%';
  \end{lstlisting}
  
  
 -\end{description}
 -
 -
  %% ---------------------------------------------------------------------- 
 -\subsubsection{DB2}
 -\begin{description}
 -\item[Tested with Version:] not tested
 +\subsection{DB2}
 +\subsubsection{Tested with Version}
 +\todo{not tested}
  
 -\item[References:]
 -{\small \url{http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.sec.doc%2Fdoc%2Fc0053544.html}}
  
 +\subsubsection{References}
 +\begin{itemize}
 +  \item IMB Db2 Documentation on \emph{Supported cipher suites} \url{http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=\%2Fcom.ibm.db2.luw.admin.sec.doc\%2Fdoc\%2Fc0053544.html}
 +\end{itemize}
  
 -\paragraph*{ssl\_cipherspecs}\mbox{}\\
 -In the link above the whole SSL-configuration is described in-depth. The following command shows only how to set the recommended ciphersuites.
 -\begin{lstlisting}[breaklines]
 +
 +\subsubsection{Settings}
 +\paragraph*{ssl\_cipherspecs}
 +In the link above the whole SSL-configuration is described in-depth. The following command shows only how to set the recommended ciphersuites:
 +\begin{lstlisting}
  # recommended and supported ciphersuites 
  
  db2 update dbm cfg using SSL_CIPHERSPECS 
@@@ -92,48 -95,53 +94,48 @@@ TLS_RSA_WITH_AES_256_CBC_SHA
  TLS_RSA_WITH_AES_128_CBC_SHA,
  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
 -
  \end{lstlisting}
  
 -\end{description}
  
  %% ---------------------------------------------------------------------- 
 +\subsection{PostgreSQL}
 +\subsubsection{Tested with Versions}
 +\begin{itemize}
 +  \item Debian 7.0 and PostgreSQL 9.1
 +  \item Linux Mint 14 nadia / Ubuntu 12.10 quantal with PostgreSQL 9.1+136 and OpenSSL 1.0.1c
 +\end{itemize}
  
 -\subsubsection{PostgreSQL}
  
 -\begin{description}
 -\item[Tested with Version:] Debian 7.0 and PostgreSQL 9.1
 +\subsubsection{References}
 +\begin{itemize}
 +  \item It's recommended to read {\small \url{http://www.postgresql.org/docs/9.1/interactive/runtime-config-connection.html\#RUNTIME-CONFIG-CONNECTION-SECURITY}} (please edit the version with your preferred one).
 +  \item PostgreSQL Documentation on \emph{Secure TCP/IP Connections with SSL}: \url{http://www.postgresql.org/docs/9.1/static/ssl-tcp.html}
 +\end{itemize}
  
 -\item[References:]
  
 -It's recommended to read 
 +\subsubsection{Settings}
 +To start in SSL mode the server.crt and server.key must exist in the server's data directory \$PGDATA.
  
 -{\small \url{http://www.postgresql.org/docs/X.X/interactive/runtime-config-connection.html\#RUNTIME-CONFIG-CONNECTION-SECURITY}}
 -(please change X.X with your preferred version e.g. 9.1).
 +Starting with version 9.2, you have the possibility to set the path manually.
  
 -\item[Settings:] \mbox{}
 -
 -
 -To start in SSL mode the server.crt and server.key must exist in the server's data directory \$PGDATA. 
 -
 -Starting with version 9.2, you have the possibility to set the path.
 -
 -\begin{lstlisting}[breaklines]
 +\begin{lstlisting}
  ssl_key_file = '/your/path/server.key'
  ssl_cert_file = '/your/path/server.crt'
  ssl_ca_file = '/your/path/root.crt'
  \end{lstlisting}
  
 -\paragraph*{postgresql.conf}\mbox{}\\
  
 -\begin{lstlisting}[breaklines]
 +\paragraph*{postgresql.conf}\mbox{}\\
 +\begin{lstlisting}
  #>=8.3
  ssl = on 
  ssl_ciphers = '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'
  \end{lstlisting}
  
  
 -
 -\item[How to test:]
 +\subsubsection{How to test}
  To test your ssl settings, run psql with the sslmode parameter:
 -\begin{lstlisting}[breaklines]
 +\begin{lstlisting}
  psql "sslmode=require host=postgres-server dbname=database" your-username
  \end{lstlisting}
  
 -\end{description}
 -
  \subsubsection{Settings}
  
  \paragraph*{Assumptions}\mbox{}\\
 -
  We assume the use of IKE (v1 or v2) and ESP for this document.
  
  \paragraph*{Authentication}\mbox{}\\
 -
  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
@@@ -52,6 -54,7 +52,6 @@@ table~\ref{tab:IPSEC_psk_len} gives th
  \end{table}
  
  \paragraph*{Cryptographic Suites}\mbox{}\\
 -
  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.
@@@ -147,15 -150,16 +147,15 @@@ parameters are shown in table \ref{tab:
  
  %---------------------------------------------------------------------- 
  \subsection{Check Point FireWall-1}
 -   
 -\begin{description}
 -\item[Tested with Version:] \mbox{}
  
 +
 +\subsubsection{Tested with Version}
  \begin{itemize}
 -\item R77 (should work with any currently supported version)
 +  \item R77 (should work with any currently supported version)
  \end{itemize}
  
 -\item[Settings:] \mbox{}
  
 +\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''.
@@@ -194,8 -198,8 +194,8 @@@ found under ``Advanced Settings'' / ``A
    \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...''
@@@ -212,34 -216,45 +212,34 @@@ button, you can configure sets of algor
  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):]
 +%\subsubsection{Justification for special settings (if needed)}
  
 -%\item[Limitations:]
 -
 -\item[References:]\mbox{}
 +%\subsubsectionLimitations}
  
 +\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)
 -
 +  \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{How to test}
  
  
  %% cipherstrings current 2013-12-09
  % ---------------------------------------------------------------------- 
  \subsection{OpenVPN}
  
 -\begin{description}
 -
 -\item[Tested with Version:] \mbox{}\\
  
 +\subsubsection{Tested with Version}
  \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
 +  \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}
  
 -\item[Settings:] \mbox{}
 -
 -\paragraph{General}\mbox{}
  
 +\subsubsection{Settings}
 +\paragraph{General}\mbox{}\\
  We describe a configuration with certificate-based authentication; see
  below for details on the \verb|easyrsa| tool to help you with that.
  
@@@ -252,28 -267,27 +252,25 @@@ that is then negotiated as usual with T
  and \verb|auth| options both take a single argument that must match on
  client and server.
  
 -\paragraph{Server Configuration}\mbox{}
 +\paragraph{Server Configuration}\mbox{}\\
- % 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
  % the cipherlist here is config B without the ECDHE strings, because
  % it must fit in 256 bytes...
- \begin{lstlisting}
+ % DO NOT CHANGE TO THE CIPHERSTRING MACRO!
 -\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{}
 -
 +\paragraph{Client Configuration}\mbox{}\\
  Client and server have to use compatible configurations, otherwise they can't communicate.
  The \verb|cipher| and \verb|auth| directives have to be identical.
  
 -\begin{lstlisting}[breaklines]
+ % the cipherlist here is config B without the ECDHE strings, because
+ % it must fit in 256 bytes...
+ % DO NOT CHANGE TO THE CIPHERSTRING MACRO!
- tls-cipher %*CIPHERSTRINGB*)
 +\begin{lstlisting}
+ 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
  
@@@ -283,7 -297,8 +280,7 @@@ remote-cert-tls serve
  tls-remote server.example.com
  \end{lstlisting}
  
 -\item[Justification for special settings (if needed):] \mbox{}\\
 -
 +\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
@@@ -297,31 -312,31 +294,31 @@@ 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{http://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}\mbox{}\\
  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{Fixing ``easy-rsa''}\mbox{}\\
  When installing an OpenVPN server instance, you are probably using
  {\it 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]
 +\begin{lstlisting}
  export KEY_SIZE=4096
  export KEY_EXPIRE=365
  export CA_EXPIRE=1826
@@@ -335,8 -350,8 +332,8 @@@ In addition, edit the \verb|pkitool| sc
  of \verb|sha1| with \verb|sha256|, to sign the certificates with
  SHA256.
  
 -\item[Limitations:] \mbox{}
  
 +\subsubsection{Limitations}
  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}}.
@@@ -345,6 -360,8 +342,6 @@@ Which cipher suite is actually used ca
  
  \verb|Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-CAMELLIA256-SHA, 2048 bit RSA|
  
 -\end{description}
 -
  
  % ---------------------------------------------------------------------- 
  \subsection{PPTP}
@@@ -364,7 -381,7 +361,7 @@@ The following settings reflect our reco
  \item[Tested with Version:] 
  9.1(3) - X-series model
  \item[Settings:] \mbox{}
 -\begin{lstlisting}[breaklines]
 +\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