Merge branch 'master' of https://git.bettercrypto.org/ach-master
authorDavid Durvaux <info@autopsit.org>
Fri, 22 Nov 2013 08:03:35 +0000 (09:03 +0100)
committerDavid Durvaux <info@autopsit.org>
Fri, 22 Nov 2013 08:03:35 +0000 (09:03 +0100)
19 files changed:
presentations/20131122-Deepsec-ACH project.pptx [new file with mode: 0644]
src/LATER.tex
src/Makefile
src/PKIs.tex
src/abstract.tex
src/applied-crypto-hardening.tex
src/cipher_suites.tex
src/disclaimer.tex
src/gitHeadInfo.gin [new file with mode: 0644]
src/links.tex
src/methods.tex
src/motivation.tex
src/practical_settings.tex
src/proxy_solutions.tex
src/reviewers.tex
src/scope.tex
src/suggested_reading.tex
src/template.tex
src/tools.tex

diff --git a/presentations/20131122-Deepsec-ACH project.pptx b/presentations/20131122-Deepsec-ACH project.pptx
new file mode 100644 (file)
index 0000000..222f5d5
Binary files /dev/null and b/presentations/20131122-Deepsec-ACH project.pptx differ
index 71ed23c..66f75b0 100644 (file)
@@ -1,4 +1,5 @@
 \section{Further research}
+\label{section:FurtherResearch}
 
 \subsection{UW}
 
index 5ed602e..d57b3cd 100644 (file)
@@ -1,6 +1,8 @@
 NOW := $(shell date)
 
-all:
+all:   pdf html md
+
+pdf:
        pdflatex applied-crypto-hardening
        # no bibtex citations atm
        #bibtex applied-crypto-hardening
@@ -12,7 +14,9 @@ all:
 html:
        latex2html applied-crypto-hardening
 
+md:
+       pandoc -f latex -t markdown -o  applied-crypto-hardening.markdown applied-crypto-hardening.tex
 
 clean:
-       rm -f applied-crypto-hardening.aux applied-crypto-hardening.bbl applied-crypto-hardening.blg applied-crypto-hardening.dvi applied-crypto-hardening.log applied-crypto-hardening.pdf applied-crypto-hardening.toc 
+       rm -f applied-crypto-hardening.aux applied-crypto-hardening.bbl applied-crypto-hardening.blg applied-crypto-hardening.dvi applied-crypto-hardening.log applied-crypto-hardening.pdf applied-crypto-hardening.toc applied-crypto-hardening.markdown
        rm -rf applied-crypto-hardening/
index c5fd3e0..6cbe1da 100644 (file)
@@ -1,4 +1,5 @@
 \section{Public Key Infrastructures}
+\label{section:PKIs}
 
 Public-Key Infrastructures aim to provide a way to simplify the verification of
 a certificate's trustworthiness.  For this, certificate authorities (CAs) are
@@ -13,8 +14,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. TD: Useful Firefox plugins: CipherFox, Conspiracy, Perspectives.}
 
 
 %``Certification
index 8e63fff..2598a42 100644 (file)
@@ -25,8 +25,7 @@ systems: getting the crypto settings right. Other attacks, as the above
 mentioned, require different protection schemes which are not covered in this
 whitepaper.  This whitepaper is \textbf{not} an introduction to cryptography
 on how to use PGP nor SSL.  For background information on cryptography,
-cryptoanalysis, PGP and SSL we would like to refer the reader to the list of
-books at the end of this document.
+cryptoanalysis, PGP and SSL we would like to refer the reader to the the chapters \ref{section:Tools}, \ref{section:Links} and \ref{section:Suggested_Reading} at the end of this document.
 
 \vskip 0.5em
 
@@ -36,7 +35,6 @@ paste-able manner}.  The guide tries to stay as concise as is possible for such
 a complex topic as cryptography.  There are many guides and best practice
 documents available when it comes to cryptography, however none of them focuses
 on what a system administrator needs to do precisely for his system to harden
-its security with respect to cipher suites. Therefore we focus on copy \&
-paste-able settings.
+its security with respect to cipher suites.
 
 
index 7d7ac66..7b96bbc 100644 (file)
@@ -17,7 +17,7 @@
 \usepackage[english]{babel}                                                                            % English language/hyphenation
 \usepackage[protrusion=true,expansion=true]{microtype}                         % Better typography
 \usepackage{amsmath,amsfonts,amsthm}                                   % Math packages
-\usepackage[pdftex]{graphicx}                                                                  % Enable pdflatex
+\usepackage[pdftex]{graphicx}                                          % Enable pdflatex 
 %\usepackage[svgnames]{xcolor}                                                                 % Enabling colors by their 'svgnames'
 \usepackage[hang, small,labelfont=bf,up,textfont=it,up]{caption}       % Custom captions under/above floats
 \usepackage{epstopdf}                                                                                          % Converts .eps to .pdf
 \usepackage{fancyvrb}
 \usepackage{listings}
 
+\usepackage{gitinfo}
 
 % custom changes:
 \usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
 \usepackage{placeins}
-\usepackage{hyperref}
 \usepackage{draftwatermark}
 
 % human tables
@@ -59,6 +59,7 @@
 
 % human tables
 \usepackage{booktabs}
+
 \renewcommand{\arraystretch}{1.25}
 
 \definecolor{green}{RGB}{32,113,10}
@@ -104,7 +105,7 @@ morekeywords={__global__, __device__},  %
 %
 % Comment out second line to disable.
 \newcommand{\todo}[1]{}
-\renewcommand{\todo}[1]{{\color{red} TODO: {#1}}}
+\renewcommand{\todo}[1]{{\color{Red} TODO: {#1}}}
 
 
 %%% Custom sectioning (sectsty package)
@@ -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}
@@ -185,11 +186,13 @@ morekeywords={__global__, __device__},  %
 
 \date{\today}
 
-
+% hyperref needs to be the last package you load.
+\usepackage[pdftex,breaklinks,colorlinks,citecolor=blue,urlcolor=blue]{hyperref}
 
 %%% 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..aee2666 100644 (file)
@@ -1,4 +1,6 @@
 \section{Cipher suites}
+\label{section:CipherSuites}
+\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
@@ -30,7 +32,7 @@ a set of cipher suites which we will recommend throught this document.
 \textbf{Caution: these settings can only represent a subjective choice of the
 authors at the time of this writing. It might be a wise choice to select your
 own cipher suites based on the instructions in section
-\ref{section:ChosingYourOwnCipherSuites}}.
+\ref{section:ChoosingYourOwnCipherSuites}}.
 
 
 \subsubsection{Configuration A: strong ciphers, fewer clients}
@@ -177,6 +179,10 @@ by copy and paste and needs to just work.
 \subsection{Known insecure and weak cipher suites}
 \todo{PG: please write this section. List all known broken, obsolete, weak and insecure cipher suites . Or even better: find the best site which keeps track of outdated cipher suites and simply reference it. We do not want to maintain such a list ourselves!}
 
+Ciphers with 112bit or less are considered weak and aren't recommended. Note that
+\texttt{3DES} provides only 112bit of security
+\footnote{url{http://csrc.nist.gov/publications/PubsSPs.html\#800-57-part1}}.
+
 \subsection{Compatibility}
 \todo{write this section. The idea here is to first document which server (and openssl) version we assumed. Once these parameters are fixed, we then list all clients which are supported for Variant A) and B). Therefore we can document compatibilities to some extent. The sysadmin can then choose roughly what he looses or gains by omitting certain cipher suites.}
 
index ba4e427..578be76 100644 (file)
@@ -1,4 +1,5 @@
 \section{Disclaimer}
+\label{section:disclaimer}
 This guide specifically does not address physical security issues, protecting software and hardware against exploits, basic IT security housekeeping tasks, anti-tempest\footnote{\url{https://en.wikipedia.org/wiki/Tempest\_(codename)}} attack techniques, protecting against side-channel attacks or other similar attacks which are usually employed to circumvent strong encryption. The authors can not overstate the importance of these other techniques. 
 
 This guide can only describe what the authors currently \emph{believe} to be the best settings based on their personal experience. This guide was cross checked by multiple people. For a complete list, see the section ``reviewers''. Even though, multiple specialists reviewed the guide, the authors can give \emph{no guarantee} whatsover that they made the right recommendations. Keep in mind that tomorrow there might be new attacks on some ciphers and many of the recommendations in this guide might turn out to be wrong.
diff --git a/src/gitHeadInfo.gin b/src/gitHeadInfo.gin
new file mode 100644 (file)
index 0000000..24c8bae
--- /dev/null
@@ -0,0 +1,15 @@
+\usepackage[%
+                shash={daebc60},
+                lhash={daebc6054be597efab924172e6c7afcff217efcd},
+                authname={Aaron Kaplan},
+                authemail={aaron@lo-res.org},
+                authsdate={2013-11-21},
+                authidate={2013-11-21 16:33:43 +0100},
+                authudate={1385048023},
+                commname={Aaron Kaplan},
+                commemail={aaron@lo-res.org},
+                commsdate={2013-11-21},
+                commidate={2013-11-21 16:33:43 +0100},
+                commudate={1385048023},
+                refnames={ (HEAD, origin/master, origin/HEAD, master)}
+        ]{gitsetinfo}
\ No newline at end of file
index 62feb87..688f920 100644 (file)
@@ -1,5 +1,5 @@
 \section{Links}
-
+\label{section:Links}
 
 %% NOTE: this should re restructured...
 
@@ -20,4 +20,6 @@
 \item Factoring as a Service: \url{http://crypto.2013.rump.cr.yp.to/981774ce07e51813fd4466612a78601b.pdf}
 \item Black Ops of TCP/IP 2012: \url{http://dankaminsky.com/2012/08/06/bo2012/}
 \item SSL and the Future of Authenticity, Moxie Marlinspike - Black Hat USA 2011: \url{http://www.youtube.com/watch?v=Z7Wl2FW2TcA}
+\item enisa - Algorithms, Key Sizes and Parameters Report (Oct.'13) \url{http://www.enisa.europa.eu/activities/identity-and-trust/library/deliverables/algorithms-key-sizes-and-parameters-report}
+
 \end{itemize}
index 3acba6f..a9ae76b 100644 (file)
@@ -1,4 +1,5 @@
 \section{Methods}
+\label{section:Methods}
 
 Since many years, NIST\footnote{\url{http://www.nist.gov/}} is the most
 prominent standardisation institute which industry would consult for
index f8ebfb9..a63bfc3 100644 (file)
@@ -1 +1,2 @@
 %\section{Motivation}
+%\label{section:Motivation}
index c71be68..c8ca65d 100644 (file)
@@ -1,4 +1,5 @@
 \section{Recommendations on practical settings}
+\label{section:PracticalSettings}
 
 
 \subsection{Webservers}
@@ -44,6 +45,10 @@ You should redirect everything to httpS:// if possible. In Apache you can do thi
 
 \item[References:]
 
+\item[How to test:]
+
+See ssllabs in section \ref{section:Tools}
+
 \end{description}
 %XXXX   ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS
 
@@ -52,10 +57,16 @@ You should redirect everything to httpS:// if possible. In Apache you can do thi
 
 
 
-%% Note: need to be checked / reviewed
+\begin{description}
+\item[Tested with Version:]
+
+\todo{version?}
+
+\item[Settings:] \mbox{}
+
 
 %% Complete ssl.cipher-list with same algo than Apache
-\todo{FIXME: this string seems to be wrongly formatted}
+\todo{FIXME: this string seems to be wrongly formatted??}
 
 \begin{lstlisting}[breaklines]
   $SERVER["socket"] == "0.0.0.0:443" {
@@ -70,7 +81,10 @@ You should redirect everything to httpS:// if possible. In Apache you can do thi
   }
 \end{lstlisting}
 
-As for any other webserver, you should redirect automatically http traffic toward httpS:\footnote{That proposed configuration is directly coming from lighttpd documentation: \url{http://redmine.lighttpd.net/projects/1/wiki/HowToRedirectHttpToHttps}}
+
+\item[Additional settings:]
+
+As for any other webserver, you should redirect automatically http traffic toward httpS://
 
 \begin{lstlisting}[breaklines]
   $HTTP["scheme"] == "http" {
@@ -82,9 +96,27 @@ As for any other webserver, you should redirect automatically http traffic towar
   }
 \end{lstlisting}
 
+
+\item[References:] 
+\todo{add references}.
+lighttpd httpS:// redirection: \url{http://redmine.lighttpd.net/projects/1/wiki/HowToRedirectHttpToHttps}
+
+% add any further references or best practice documents here
+
+\item[How to test:] See ssllabs in section \ref{section:Tools}
+
+% 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}
+
+
 \subsubsection{nginx}
 
+\begin{description}
+\item[Tested with Version:]
 
+\todo{version?}
+
+\item[Settings:] \mbox{}
 
 \begin{lstlisting}[breaklines]
   ssl_prefer_server_ciphers on;
@@ -96,6 +128,7 @@ As for any other webserver, you should redirect automatically http traffic towar
 
 %% XXX FIXME: do we need to specify dhparams? Parameter: ssl_dhparam = file. See: http://wiki.nginx.org/HttpSslModule#ssl_protocols
 
+\item[Additional settings:]
 
 If you decide to trust NIST's ECC curve recommendation, you can add the following line to nginx's configuration file to select special curves:
 
@@ -109,14 +142,29 @@ You should redirect everything to httpS:// if possible. In Nginx you can do this
   rewrite     ^(.*)   https://$host$1 permanent;
 \end{lstlisting}
 
-%\subsubsection{openssl.conf settings}
 
-%\subsubsection{Differences in SSL libraries: gnutls vs. openssl vs. others}
+\item[References:] \todo{add references}
+
+\item[How to test:] See ssllabs in section \ref{section:Tools}
+
+\end{description}
+
+
+
+
 
 \subsubsection{MS IIS}
 \label{sec:ms-iis}
 
 
+\todo{screenshots? registry key settings? }
+
+\begin{description}
+
+\item[Tested with Version:] \todo{version?}
+
+\item[Settings:] \mbox{}
+
 
 When trying to avoid RC4 and CBC (BEAST-Attack) and requiring perfect
 forward secrecy, Microsoft Internet Information Server (IIS) supports
@@ -183,6 +231,26 @@ Not supported Clients:
 \item Bing
 \end{enumerate}
 
+\item[Additional settings:]
+
+%Here you can add additional settings
+
+\item[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:]
+
+\todo{add references}
+
+% add any further references or best practice documents here
+
+\item[How to test:] See ssllabs in section \ref{section:Tools}
+
+
+\end{description}
+
+
 
 \subsection{Mail Servers}
 
@@ -247,7 +315,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 +471,9 @@ It is highly recommended to read
 
 first.
 
-\paragraph*{OpenSSL}
-
-\subparagraph*{server mode (incoming)}\mbox{}\\
+\paragraph*{MSA mode (submission)}\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 +481,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 +491,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]
+  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]
-  openssl_options = +no_sslv2 +no_compression +cipher_server_preference
+  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 +560,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 +587,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{}\\
 
@@ -695,11 +807,12 @@ 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}
 
-\input{proxy_solutions}
+\input{proxy_solutions} 
 
 
 
index 3d2a050..7bcb2e0 100644 (file)
@@ -1,8 +1,5 @@
 \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.
@@ -20,9 +17,35 @@ While the latest solution might be the most "up to date", it arises a new front
 Conclusio: Don't forget to check your proxy solutions ssl-capabilities. Also do so for your reverse-proxies!
 
 \subsubsection{squid}
-\todo{Write}
+
+
+As of squid-3.2.7 (01 Feb 2013) there is support for the OpenSSL NO\_Compression option within squid config (CRIME attack) and if you combine that in the config file, with an enforcement of the server cipher preferences (BEAST Attack) you are safe.
+
+\paragraph*{squid.conf}\mbox{}\\
+squid.conf
+
+\todo{UNTESTED!}
+\begin{lstlisting}[breaklines]
+options=NO_SSLv2,NO_TLSv1,NO_Compression,CIPHER_SERVER_PREFERENCE 
+cipher=ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH [...]
+\end{lstlisting}
+
+
+
+\todo{UNTESTED!}
+\begin{lstlisting}[breaklines]
+options=NO_SSLv2,NO_TLSv1,NO_Compression,CIPHER_SERVER_PREFERENCE 
+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}
+
+
+
+\paragraph*{squid.conf}\mbox{}\\
+squid.conf
+
 %% http://forum.pfsense.org/index.php?topic=63262.0
 
+\todo{UNTESTED!}
 \begin{lstlisting}[breaklines]
                NO_SSLv2    Disallow the use of SSLv2
                NO_SSLv3    Disallow the use of SSLv3
@@ -34,6 +57,110 @@ Conclusio: Don't forget to check your proxy solutions ssl-capabilities. Also do
                                DH key exchanges
 \end{lstlisting}
 
+\todo{Patch here? Definitely working for 3.2.6!}
+For squid Versions before 3.2.7 use this patch against a vanilla source-tree:
+
+\begin{lstlisting}[breaklines]
+--- support.cc.ini      2013-01-09 02:41:51.000000000 +0100
++++ support.cc  2013-01-21 16:13:32.549383848 +0100
+@@ -400,6 +400,11 @@
+         "NO_TLSv1_2", SSL_OP_NO_TLSv1_2
+     },
+ #endif
++#ifdef SSL_OP_NO_COMPRESSION
++    {
++        "NO_Compression", SSL_OP_NO_COMPRESSION
++    },
++#endif
+     {
+         "", 0
+     },
+\end{lstlisting}
+
+
+
 \subsubsection{Bluecoat}
-\todo{sure?}
+%% https://kb.bluecoat.com/index?page=content&id=KB5549
+\begin{description}
+\item[Tested with Version:] SGOS 6.5.x
 
+BlueCoat Proxy SG Appliances can be used as forward and reverse proxies. The reverse proxy feature is rather under-developed, and while it is possible and supported, there only seems to be limited use of this feature "in the wild" - nonetheless there are a few cipher suites to choose from, when enabling SSL features.
+
+\item[Only allow TLS 1.0,1.1 and 1.2 protocols:] \mbox{}
+
+\begin{lstlisting}[breaklines]
+$conf t
+$(config)ssl
+$(config ssl)edit ssl-device-profile default
+$(config device-profile default)protocol tlsv1 tlsv1.1 tlsv1.2
+  ok
+\end{lstlisting}
+
+\item[Select your accepted cipher-suites:] \mbox{}
+
+\begin{lstlisting}[breaklines]
+$conf t
+Enter configuration commands, one per line.  End with CTRL-Z.
+$(config)proxy-services
+$(config proxy-services)edit ReverseProxyHighCipher
+$(config ReverseProxyHighCipher)attribute cipher-suite
+Cipher#  Use        Description        Strength
+-------  ---  -----------------------  --------
+      1  yes            AES128-SHA256      High
+      2  yes            AES256-SHA256      High
+      3  yes               AES128-SHA    Medium
+      4  yes               AES256-SHA      High
+      5  yes       DHE-RSA-AES128-SHA      High
+      6  yes       DHE-RSA-AES256-SHA      High
+               [...]
+     13  yes          EXP-RC2-CBC-MD5    Export
+
+Select cipher numbers to use, separated by commas: 2,5,6
+  ok
+\end{lstlisting}
+
+The same protocols are available for forward proxy settings and should be adjusted accordingly:
+In your local policy file add the following section:
+\begin{lstlisting}[breaklines]
+<ssl>
+    DENY server.connection.negotiated_ssl_version=(SSLV2, SSLV3)
+\end{lstlisting}
+
+Disabling protocols and ciphers in a forward proxy environment could lead to unexpected results on certain (misconfigured?) webservers (i.e. ones accepting only SSLv2/3 protocol connections)
+
+\end{description} 
+
+
+
+
+\subsubsection{Pound}
+% See http://www.apsis.ch/pound
+% See https://help.ubuntu.com/community/Pound
+
+Pound 2.6
+       
+\begin{lstlisting}[breaklines]
+# HTTP Listener, redirects to HTTPS
+ListenHTTP
+    Address 10.10.0.10
+    Port    80
+    Service
+        Redirect "https://some.site.tld
+    End
+End
+## HTTPS Listener
+ListenHTTPS
+    Address      10.10.0.10
+    Port         443
+    AddHeader    "Front-End-Https: on"
+    Cert         "/path/to/your/cert.pem"
+    ## See 'man ciphers'.
+    Ciphers     "      TLSv1.2:!SSLv3:!SSLv2:AES256:!aNULL:!eNULL:!NULL"
+    Service
+        BackEnd
+            Address 10.20.0.10
+            Port 80
+        End
+    End
+End
+\end{lstlisting}
index dbf840a..2870940 100644 (file)
@@ -1,4 +1,5 @@
 \section{Reviewers}
+\label{section:Reviewers}
 
 We would like to express our thanks to the following reviewers (in alphabetical order):
 
index c8ceba5..650a357 100644 (file)
@@ -1,4 +1,5 @@
 \section{Scope}
+\label{section:Scope}
 
 We restricted ourselves to:
 \begin{itemize}
index d2104b6..75862ed 100644 (file)
@@ -1,5 +1,5 @@
 \section{Suggested Reading}
-
+\label{section:Suggested_Reading}
 This section contains suggested reading material for the reader.
 
 \begin{itemize}
index ebbc006..2e6a694 100644 (file)
@@ -4,6 +4,8 @@
 \begin{description}
 \item[Tested with Version:]
 
+\todo{version?}
+
 \item[Settings:] \mbox{}
 
 \begin{lstlisting}[breaklines]
@@ -24,6 +26,8 @@
 
 \item[References:]
 
+\todo{add references}
+
 % add any further references or best practice documents here
 
 \item[How to test:]
index 3733d39..e1f625f 100644 (file)
@@ -1,23 +1,21 @@
 \section{Tools}
-
+\label{section:Tools}
 This section lists tools for checking the security settings.
 
-\subsection{SSL}
-
-Check your browser's ssl capabilities: \url{https://cc.dcsec.uni-hannover.de/}
+\subsection{SSL \& TLS}
 
-
-ssllabs.com offers a great way to check your webserver for misconfigurations. See \url{https://www.ssllabs.com/ssltest/}.
+\begin{itemize}
+\item Check your browser's ssl capabilities: \url{https://cc.dcsec.uni-hannover.de/}.
+\item \href{http://ssllabs.com}{ssllabs.com} offers a great way to check your webserver for misconfigurations. See \url{https://www.ssllabs.com/ssltest/}.
 Furthermore, ssllabs.com has a good best practices tutorial, which focuses on avoiding the most common mistakes in SSL.
-See: \url{https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf}
+See: \url{https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf}.
 %% this breaks my pdf converter hmm
-
-\url{http://tls.secg.org} is a tool for testing interoperability of HTTPS implementations for ECC cipher suites.
-
-\url{http://sourceforge.net/projects/sslscan} connects to a given SSL
-service and shows the cipher suites that are offered.
-
-\url{http://checktls.com} is a tool for testing arbitrary TLS services. 
+\item \url{http://tls.secg.org} is a tool for testing interoperability of HTTPS implementations for ECC cipher suites.
+\item \url{http://sourceforge.net/projects/sslscan} connects to a given SSL service and shows the cipher suites that are offered.
+\item \url{http://checktls.com} is a tool for testing arbitrary TLS services. 
+\item \url{https://github.com/iSECPartners/sslyze} Fast and full-featured SSL scanner.
+\item \url{http://www.xmpp.net} is a tool for testing XMPP (Jabber) servers.
+\end{itemize}
 
 \subsection{Keylength}