Merge branch 'master' of https://git.bettercrypto.org/ach-master
authorArsen Stasic <arsen.stasic@univie.ac.at>
Thu, 21 Nov 2013 07:23:54 +0000 (08:23 +0100)
committerArsen Stasic <arsen.stasic@univie.ac.at>
Thu, 21 Nov 2013 07:23:54 +0000 (08:23 +0100)
src/PKIs.tex
src/applied-crypto-hardening.tex
src/cipher_suites.tex
src/gitHeadInfo.gin [new file with mode: 0644]
src/practical_settings.tex
src/proxy_solutions.tex
src/tools.tex

index c5fd3e0..2a4d769 100644 (file)
@@ -13,8 +13,10 @@ communication systems where compatibility with externalities is not an issue.
 
 A good background on PKIs can be found in \todo{insert reference}.
 
-\todo{write the actual recommendations: certificate pinning, TLSA, ...}
-
+\todo{ts: Background and Configuration (EMET) of Certificate Pinning, TLSA integration, 
+  When to use self-signed certificates, how to get certificates from public CA authorities 
+  (CACert, StartSSL), Best-practices how to create CA and how to generate private keys/CSRs, 
+  Discussion about OCSP and CRLs }
 
 
 %``Certification
index 7d7ac66..1983dac 100644 (file)
@@ -34,6 +34,7 @@
 \usepackage{fancyvrb}
 \usepackage{listings}
 
+\usepackage{gitinfo}
 
 % custom changes:
 \usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
@@ -130,7 +131,7 @@ morekeywords={__global__, __device__},  %
 \chead{}
 \rhead{}
 % Footer (you may change this to your own needs)
-\lfoot{\footnotesize Applied Crypto Hardening \textbullet ~Draft}
+\lfoot{\footnotesize Applied Crypto Hardening \textbullet ~Draft revision\gitVtags: \gitAbbrevHash{} (\gitCommitterIsoDate) \gitCommitterName}
 \cfoot{}
 \rfoot{\footnotesize page \thepage\ of \pageref{LastPage}}     % "Page 1 of 2"
 \renewcommand{\headrulewidth}{0.0pt}
@@ -186,10 +187,10 @@ morekeywords={__global__, __device__},  %
 \date{\today}
 
 
-
 %%% Begin document
 \begin{document}
 \maketitle
+
 \thispagestyle{fancy}                  % Enabling the custom headers/footers for the first page 
 % The first character should be within \initial{}
 %\initial{H}\textbf{ere is some sample text to show the initial in the introductory paragraph of this template article. The color and lineheight of the initial can be modified in the preamble of this document.}
index 48a2500..62c3b93 100644 (file)
@@ -1,4 +1,5 @@
 \section{Cipher suites}
+\todo{team: section 8 is currently a bit messy. Re-do it}
 
 Cipher suites are a combination of algorithms to provide for 
 Confidentiality, Integrity and Authenticity
diff --git a/src/gitHeadInfo.gin b/src/gitHeadInfo.gin
new file mode 100644 (file)
index 0000000..82101b3
--- /dev/null
@@ -0,0 +1,15 @@
+\usepackage[%
+                shash={a02193b},
+                lhash={a02193bff5ec401117931e6ee3a9e6c36adbeb76},
+                authname={Ulrich},
+                authemail={ulrich.poeschl@bmlv.gv.at},
+                authsdate={2013-11-20},
+                authidate={2013-11-20 21:15:40 +0100},
+                authudate={1384978540},
+                commname={Ulrich},
+                commemail={ulrich.poeschl@bmlv.gv.at},
+                commsdate={2013-11-20},
+                commidate={2013-11-20 21:15:40 +0100},
+                commudate={1384978540},
+                refnames={ (HEAD, master)}
+        ]{gitsetinfo}
\ No newline at end of file
index 47a10fb..a39f57d 100644 (file)
@@ -247,7 +247,7 @@ To support POP3S/IMAPS on ports 995/993 add
 
 \paragraph*{Limitations}\mbox{}\\
 
-cyrus-imapd currently (2.4.17, trunk) does not support elliptic curves. ECDHE will not work even if defined in your cipher list.
+cyrus-imapd currently (2.4.17, trunk) does not support elliptic curves. ECDHE will not work even if defined in your cipher list.\\
 
 Currently there is no way to prefer server ciphers or to disable compression.\\
 
@@ -403,11 +403,9 @@ It is highly recommended to read
 
 first.
 
-\paragraph*{OpenSSL}
+\paragraph*{MSA mode (submission)}\mbox{}\\
 
-\subparagraph*{server mode (incoming)}\mbox{}\\
-
-In the main config section of exim add:
+In the main config section of Exim add:
 
 \begin{lstlisting}[breaklines]
   tls_certificate = ..../cert.pem
@@ -415,7 +413,7 @@ In the main config section of exim add:
 \end{lstlisting}
 don't forget to add intermediate certificates to the .pem file if needed.\\
 \\
-Tell exim to advertise STARTTLS in the EHLO answer:
+Tell Exim to advertise STARTTLS in the EHLO answer to everyone:
 \begin{lstlisting}[breaklines]
   tls_advertise_hosts = *
 \end{lstlisting}
@@ -425,10 +423,54 @@ If you want to support legacy SMTPS on port 465, and STARTTLS on smtp(25)/submis
   daemon_smtp_ports = smtp : smtps : submission
   tls_on_connect_ports = 465
 \end{lstlisting}
+\mbox{}\\
+It is highly recommended to limit SMTP AUTH to SSL connections only. To do so add
+\begin{lstlisting}[breaklines]
+  server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
+\end{lstlisting}
+to every authenticator defined.\\
 
-Exim already disables SSLv2 by default. We recommend to add
+Add the following rules on top of your acl\_smtp\_mail:
 \begin{lstlisting}[breaklines]
-  openssl_options = +no_sslv2 +no_compression +cipher_server_preference
+  warn    hosts           = *
+          control         = submission/sender_retain
+\end{lstlisting}
+This switches Exim to submission mode and allows addition of missing Message-ID: and Date: headers.\\
+
+It is not advisable to restrict the default cipher list for MSA mode if you don't know all connecting MUAs. If you still want to define one please consult the Exim documentation or ask on the exim-users mailinglist.\\
+% Exim maintainers do not recommend to change default ciphers
+% I think we shouldn't, too
+%use:
+%\begin{lstlisting}[breaklines]
+%  tls_require_ciphers = <...recommended ciphersuite...>
+%\end{lstlisting}
+
+The cipher used is written to the logfiles by default. You may want to add
+\begin{lstlisting}[breaklines]
+  log_selector = <....whatever your log_selector already contains...> \
+   +tls_certificate_verified +tls_peerdn +tls_sni
+\end{lstlisting}
+to get even more TLS information logged.
+
+
+\paragraph*{server mode (incoming)}\mbox{}\\
+
+In the main config section of Exim add:
+
+\begin{lstlisting}[breaklines]
+  tls_certificate = ..../cert.pem
+  tls_privatekey = ..../cert.key
+\end{lstlisting}
+don't forget to add intermediate certificates to the .pem file if needed.\\
+\\
+Tell Exim to advertise STARTTLS in the EHLO answer to everyone:
+\begin{lstlisting}[breaklines]
+  tls_advertise_hosts = *
+\end{lstlisting}
+
+Listen on smtp(25) port only
+\begin{lstlisting}[breaklines]
+  daemon_smtp_ports = smtp
 \end{lstlisting}
 
 It is not advisable to restrict the default cipher list for opportunistic encryption as used by SMTP. Do not use cipher lists recommended for HTTPS! If you still want to define one please consult the Exim documentation or ask on the exim-users mailinglist.\\
@@ -450,17 +492,14 @@ tls\_try\_verify\_hosts only reports the result to your logfile. If you want to
   tls_verify_hosts = *
 \end{lstlisting}
 
-You do not need to set dh\_parameters. exim with OpenSSL uses a 2048bit default prime defined in section 2.2 of RFC 5114.
-If you want to set your own DH parameters please read the TLS documentation of exim.\\
-
 The cipher used is written to the logfiles by default. You may want to add
 \begin{lstlisting}[breaklines]
   log_selector = <....whatever your log_selector already contains...> \
    +tls_certificate_verified +tls_peerdn +tls_sni
 \end{lstlisting}
-to get even more information logged.
+to get even more TLS information logged.
 
-\subparagraph*{client mode (outgoing)}\mbox{}\\
+\paragraph*{client mode (outgoing)}\mbox{}\\
 
 Exim uses opportunistic encryption in the SMTP transport by default.
 
@@ -480,21 +519,26 @@ This is recommended for MTA-MTA traffic.\\
 % Exim Maintainers do not recommend ciphers. We shouldn't do so, too.
 Do not limit ciphers without a very good reason. In the worst case you end up without encryption at all instead of some weak encryption. Please consult the Exim documentation if you really need to define ciphers.
 
+\paragraph*{OpenSSL}\mbox{}\\
+Exim already disables SSLv2 by default. We recommend to add
+\begin{lstlisting}[breaklines]
+  openssl_options = +all +no_sslv2 +no_compression +cipher_server_preference
+\end{lstlisting}
+to the main configuration.\\
+Note: +all is misleading here since OpenSSL only activates the most common workarounds. But that's how SSL\_OP\_ALL is defined.\\
+
+You do not need to set dh\_parameters. Exim with OpenSSL by default uses parameter initialization with the "2048-bit MODP Group with 224-bit Prime Order Subgroup" defined in section 2.2 of RFC 5114 (ike23).
+If you want to set your own DH parameters please read the TLS documentation of exim.\\
+
+
+
 \paragraph*{GnuTLS}\mbox{}\\
 
 GnuTLS is different in only some respects to OpenSSL:
-\begin{list}{•}{•}
+\begin{itemize}
 \item tls\_require\_ciphers needs a GnuTLS priority string instead of a cipher list. It is recommended to use the defaults by not defining this option. It highly depends on the version of GnuTLS used. Therefore it is not advisable to change the defaults.
 \item There is no option like openssl\_options
-\end{list}
-
-\paragraph*{Limit SMTP AUTH to SSL connections only}\mbox{}\\
-
-It is highly recommended to limit SMTP AUTH to SSL connections only. To do so add
-\begin{lstlisting}[breaklines]
-  server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
-\end{lstlisting}
-to every authenticator defined.
+\end{itemize}
 
 \paragraph*{Exim string expansion}\mbox{}\\
 
@@ -687,6 +731,7 @@ Adi?? }
 
 \subsection{Instant Messaging Systems}
 \subsubsection{XMPP / Jabber}
+\todo{ts: Describe ejabberd configuration. Reference to Peter`s manifesto https://github.com/stpeter/manifesto}
 \subsubsection{IRC}
 
 \input{DBs}
index 3d2a050..17b2f20 100644 (file)
@@ -1,11 +1,8 @@
 \subsection{Intercepting proxy solutions and reverse proxies}
 
-\subsubsection{General thoughts}
-\todo{Write}
-
 Within enterprise networks and corporations with increased levels of paranoia or at least some defined security requirements it is common, NOT to allow direct connections to the public internet.
 
-For this reason proxy-solutions are installed, to intercept ans (hopefully also) scan the traffic for potential threats within the sessions.
+For this reason proxy-solutions are installed, to intercept and (hopefully also) scan the traffic for potential threats within the sessions.
 
 As soon as one wants to establish an encrypted connection to a server, there are three choices:
 
@@ -15,7 +12,7 @@ As soon as one wants to establish an encrypted connection to a server, there are
 \item Intercept (i.e. terminate) the session at the proxy, scan there and re-encrypt the session towards the client.
 \end{itemize}
 
-While the latest solution might be the most "up to date", it arises a new front in the context of this paper, because the most secure part of a client's connection could only be within the corporate network, if the proxy-server handles the connection to the destination server in an insecure manner.
+While the last solution might be the most "up to date", it arises a new front in the context of this paper, because the most secure part of a client's connection could only be within the corporate network, if the proxy-server handles the connection to the destination server in an insecure manner.
 
 Conclusio: Don't forget to check your proxy solutions ssl-capabilities. Also do so for your reverse-proxies!
 
index 3733d39..5fd4cfa 100644 (file)
@@ -2,7 +2,7 @@
 
 This section lists tools for checking the security settings.
 
-\subsection{SSL}
+\subsection{SSL \& TLS}
 
 Check your browser's ssl capabilities: \url{https://cc.dcsec.uni-hannover.de/}
 
@@ -19,6 +19,8 @@ service and shows the cipher suites that are offered.
 
 \url{http://checktls.com} is a tool for testing arbitrary TLS services. 
 
+\url{https://github.com/iSECPartners/sslyze} Fast and full-featured SSL scanner
+
 \subsection{Keylength}
 
 \url{http://www.keylength.com} comprehensive online resource for comparison of keylenghts according to common recommendatons and standards in cryptography.