Got rid of perlify.py: now use %*\cipherstringB*) inside listings to
authorsebix <szebi@gmx.at>
Tue, 24 Dec 2013 15:22:30 +0000 (16:22 +0100)
committersebix <szebi@gmx.at>
Tue, 24 Dec 2013 15:22:30 +0000 (16:22 +0100)
include the current cipherstring

12 files changed:
src/Makefile
src/applied-crypto-hardening.tex
src/cipherStringB.txt [deleted file]
src/perlify.pl [deleted file]
src/practical_settings.tex
src/practical_settings/mailserver.tex
src/practical_settings/proxy_solutions.tex
src/practical_settings/ssh.tex
src/practical_settings/vpn.tex
src/practical_settings/webserver.tex
src/theory/cipher_suites.tex
src/theory/cipher_suites/recommended.tex

index ecbcd2e..6b7dba4 100644 (file)
@@ -2,12 +2,8 @@ NOW := $(shell date)
 
 all:   pdf html md
 
-%_generated.tex: %.tex
-       ./perlify.pl
-
 pdf: 
        ./update-metadata-for-gitinfo
-       ./perlify.pl
        pdflatex applied-crypto-hardening
        bibtex applied-crypto-hardening
        while grep -s "Rerun to get cross-references right" \
index 2bd9fa4..5bca821 100644 (file)
 % \usepackage[T1]{fontenc}
 % \usepackage{textcomp}
 
+% This block is for listings
+\usepackage[framemethod=TikZ]{mdframed} % mdframed is used to draw a grey box
+\mdfdefinestyle{listingstyle}{
+  backgroundcolor=black!10,outerlinewidth=0,outerlinecolor=black,
+  innerleftmargin=0,innerrightmargin=0,innertopmargin=0pt,innerbottommargin=0pt
+}
+\usepackage{amssymb}% for \curvearrowright
+% Insert a grey box behind the listing for uniform background color (The \cipherstring would the listing and the background would turn white)
+\BeforeBeginEnvironment{lstlisting}{\vspace{0.2cm}\begin{mdframed}[style=listingstyle]}
+\AfterEndEnvironment{lstlisting}{\end{mdframed}}
 \lstset{
 %language=Bash,                             % Code langugage
 basicstyle=\ttfamily,                   % Code font, Examples: \footnotesize, \ttfamily
@@ -127,9 +137,13 @@ captionpos=b,                           % Caption-position = bottom
 breaklines=true,                        % Automatic line breaking?
 breakatwhitespace=false,                % Automatic breaks only at whitespace?
 showspaces=false,                       % Dont make spaces visible
+showstringspaces=false,
 showtabs=false,                         % Dont make tabls visible
-columns=fixed,                          % Column format
+columns=fullflexible,                   % Column format: no spaces are inserted for monospaced appearance
 morekeywords={__global__, __device__},  % 
+escapeinside={\%*}{*)},                 % Escape TeX commands inside %* and *)
+prebreak=\mbox{$\curvearrowright$},     % Disply curved arrow before linebreak
+xrightmargin=1.8pt,
 }
 
 
@@ -227,6 +241,9 @@ morekeywords={__global__, __device__},  %
 % hyperref needs to be the last package you load.
 \usepackage[pdftex,breaklinks,colorlinks,linkcolor=darkblue,citecolor=blue,urlcolor=blue]{hyperref}
 
+% CIPHERSTRING
+\usepackage{seqsplit} % Use Sequence split. Basically it inserts between every character pair a box with zero width to allow linebreaks everywhere. Better solution wanted, but is there any better?
+\newcommand{\cipherstringB}{\seqsplit{EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA}}
 
 %%% Begin document
 \begin{document}
diff --git a/src/cipherStringB.txt b/src/cipherStringB.txt
deleted file mode 100644 (file)
index 5437676..0000000
+++ /dev/null
@@ -1 +0,0 @@
-EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
diff --git a/src/perlify.pl b/src/perlify.pl
deleted file mode 100755 (executable)
index ec512d0..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env perl
-
-use strict;
-use File::Basename;
-
-my $debug=1;
-my @exclude=('DH.tex', 'ECC.tex', 'LATER.tex', 'PKIs.tex', 'RNGs.tex', 'abstract.tex', 'acknowledgements.tex', 'applied-crypto-hardening.tex', 'bib.tex', 'cipher_suites.tex', 'disclaimer.tex', 'further_research.tex', 'howtoread.tex', 'keylengths.tex', 'links.tex', 'methods.tex', 'motivation.tex', 'practical_settings.tex', 'reviewers.tex', 'scope.tex', 'ssllibs.tex', 'suggested_reading.tex', 'template.tex', 'tools.tex');
-
-my $cipherStrB=`cat cipherStringB.txt`;
-chomp $cipherStrB;
-
-my @files=`find . -name "*.tex" -a \! -name "*_generated.tex" -print`;
-my $f;
-
-foreach  $f ( @files)  {
-       chomp $f;
-       $f =~ /(.*)\.tex/;
-       my $fbasename = basename($f);
-       my $ftex = "$1_generated.tex";
-
-       system("grep", "-q", "\@\@\@CIPHERSTRINGB\@\@\@" , $f);
-       if ($? eq 0 ) { #and not (/$fbasename/ ~~ @exclude)) {
-
-               print "file = $f\n" if $debug;
-               print "ftex = $ftex\n" if $debug;
-
-               open(FH,    "<", $f ) or die "could not open file $f: $!";
-               open(FHOUT, ">", $ftex ) or die "could not open file $ftex: $!";
-               
-               while (<FH>) {
-                       $_ =~ s/\@\@\@CIPHERSTRINGB\@\@\@/$cipherStrB/g;
-                       print FHOUT $_;
-               }
-       }
-       else {
-               print "skipping file $f\n" if $debug;
-       }
-}
index 5cd2485..8841b27 100644 (file)
@@ -4,7 +4,7 @@
 \label{section:PracticalSettings}
 
 \section{Webservers}
-\input{"./practical_settings/webserver_generated.tex"}
+\input{"./practical_settings/webserver.tex"}
 
 %\newpage
 \section{SSH}
@@ -12,7 +12,7 @@
 
 %\newpage
 \section{Mail Servers}
-\input{"./practical_settings/mailserver_generated.tex"}
+\input{"./practical_settings/mailserver.tex"}
 
 
 %\newpage
@@ -51,7 +51,7 @@
 
 %\newpage
 \section{Intercepting proxy solutions and reverse proxies}
-\input{"./practical_settings/proxy_solutions_generated.tex"} 
+\input{"./practical_settings/proxy_solutions.tex"} 
 
 
 
index ea8e5e0..d80c1e9 100644 (file)
@@ -61,8 +61,8 @@ mode, because the alternative is plain text transmission.
 \subsubsection{Settings}
 % Example: http://dovecot.org/list/dovecot/2013-October/092999.html
 
-\begin{lstlisting}[breaklines]
-  ssl_cipher_list = '@@@CIPHERSTRINGB@@@'
+\begin{lstlisting}
+  ssl_cipher_list = '%*\cipherstringB*)'
   ssl_prefer_server_ciphers = yes
 \end{lstlisting}
 
@@ -88,7 +88,7 @@ parameters greater than 1024bit are not supported. The most recent version
 
 \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.
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
  openssl s_client -crlf -connect SERVER.TLD:993
 \end{lstlisting}
 
@@ -103,7 +103,7 @@ parameters greater than 1024bit are not supported. The most recent version
 \paragraph*{imapd.conf}\mbox{}\\
 
 To activate SSL/TLS configure your certificate with
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   tls_cert_file: .../cert.pem
   tls_key_file: .../cert.key
 \end{lstlisting}
@@ -113,14 +113,14 @@ Do not forget to add necessary intermediate certificates to the .pem file.\\
 Limiting the ciphers provided may force (especially older) clients to connect without encryption at all! Sticking to the defaults is recommended.\\
 
 If you still want to force strong encryption use
-\begin{lstlisting}[breaklines]
-  tls_cipher_list: @@@CIPHERSTRINGB@@@
+\begin{lstlisting}
+  tls_cipher_list: %*\cipherstringB*)
 \end{lstlisting}
 
 cyrus-imapd loads hardcoded 1024 bit DH parameters using get\_rfc2409\_prime\_1024() by default. If you want to load your own DH parameters add them PEM encoded to the certificate file given in tls\_cert\_file. Do not forget to re-add them after updating your certificate.\\
 
 To prevent unencrypted connections on the STARTTLS ports you can set
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   allowplaintext: 0
 \end{lstlisting}
 This way MUAs can only authenticate after STARTTLS if you only provide plaintext and SASL PLAIN login methods. Therefore providing CRAM-MD5 or DIGEST-MD5 methods is not recommended.\\
@@ -128,14 +128,14 @@ This way MUAs can only authenticate after STARTTLS if you only provide plaintext
 \paragraph*{cyrus.conf}\mbox{}\\
 
 To support POP3/IMAP on ports 110/143 with STARTTLS add
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   imap         cmd="imapd" listen="imap" prefork=3
   pop3         cmd="pop3d" listen="pop3" prefork=1
 \end{lstlisting}
 to the SERVICES section.\\
 
 To support POP3S/IMAPS on ports 995/993 add
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   imaps        cmd="imapd -s" listen="imaps" prefork=3
   pop3s        cmd="pop3d -s" listen="pop3s" prefork=1
 \end{lstlisting}
@@ -151,7 +151,7 @@ There is a working patch for all three features:
 \url{https://bugzilla.cyrusimap.org/show_bug.cgi?id=3823}\\
 
 \subsubsection{How to test}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   openssl s_client -crlf -connect SERVER.TLD:993
 \end{lstlisting}
 
@@ -186,14 +186,14 @@ There is a working patch for all three features:
 %% First, you need to generate Diffie Hellman parameters (please first take a look at the section \ref{section:RNGs}):
 
 %% \todo{FIXME: this is a really weak setting! See also: http://postfix.1071664.n5.nabble.com/postfix-hardening-what-can-we-do-td61874.html}
-%% \begin{lstlisting}[breaklines]
+%% \begin{lstlisting}
 %%   % openssl gendh -out /etc/postfix/dh_param_512.pem -2 512
 %%   % openssl gendh -out /etc/postfix/dh_param_1024.pem -2 1024
 %% \end{lstlisting}
 
 %% Next, we specify these DH parameters in \verb|main.cf|:
 
-%% \begin{lstlisting}[breaklines]
+%% \begin{lstlisting}
 %%   smtpd_tls_dh512_param_file = /etc/postfix/dh_param_512.pem
 %%   smtpd_tls_dh1024_param_file = /etc/postfix/dh_param_1024.pem
 %% \end{lstlisting}
@@ -204,7 +204,7 @@ As discussed in section \ref{subsection:smtp_general}, because of opportunistic
 restrict the list of ciphers. There are still some steps needed to
 enable TLS, all in \verb|main.cf|:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   smtpd_tls_cert_file = /etc/postfix/server.pem
   smtpd_tls_key_file = /etc/postfix/server.key
   # use 0 for Postfix >= 2.9, and 1 for earlier versions
@@ -223,22 +223,22 @@ For the MSA \verb|smtpd| process, we first define the ciphers that are
 acceptable for the ``mandatory'' security level, again in
 \verb|main.cf|:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
   smtpd_tls_mandatory_ciphers=high
-  tls_high_cipherlist=@@@CIPHERSTRINGB@@@
+  tls_high_cipherlist=%*\cipherstringB*)
 \end{lstlisting}
 
 Then, we configure the MSA smtpd in \verb|master.cf| with two
 additional options that are only used for this instance of smtpd:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 587       inet  n       -       -       -       -       smtpd 
         -o smtpd_tls_security_level=encrypt -o tls_preempt_cipherlist = yes
 \end{lstlisting}
 
 For those users who want to use ECC key exchange, it is possible to specify this via:
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   smtpd_tls_eecdh_grade = ultra
 \end{lstlisting}
 
@@ -276,7 +276,7 @@ interoperability risk, but we have not tested this yet.
 \subsubsection{How to test}
 
 You can check the effect of the settings with the following command:
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $ zegrep "TLS connection established from.*with cipher" | /var/log/mail.log | awk '{printf("%s %s %s %s\n", $12, $13, $14, $15)}' | sort | uniq -c | sort -n
       1 SSLv3 with cipher DHE-RSA-AES256-SHA
      23 TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384
@@ -285,7 +285,7 @@ $ zegrep "TLS connection established from.*with cipher" | /var/log/mail.log | aw
     335 TLSv1 with cipher DHE-RSA-AES256-SHA
 \end{lstlisting}
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
  openssl s_client -starttls smtp -crlf -connect SERVER.TLD:25
 \end{lstlisting}
 
@@ -303,31 +303,31 @@ first.
 
 In the main config section of Exim add:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   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]
+\begin{lstlisting}
   tls_advertise_hosts = *
 \end{lstlisting}
 
 If you want to support legacy SMTPS on port 465, and STARTTLS on smtp(25)/submission(587) ports set
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   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]
+\begin{lstlisting}
   server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
 \end{lstlisting}
 to every authenticator defined.\\
 
 Add the following rules on top of your acl\_smtp\_mail:
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   warn    hosts           = *
           control         = submission/sender_retain
 \end{lstlisting}
@@ -337,12 +337,12 @@ It is not advisable to restrict the default cipher list for MSA mode if you don'
 % Exim maintainers do not recommend to change default ciphers
 % I think we shouldn't, too
 %use:
-%\begin{lstlisting}[breaklines]
+%\begin{lstlisting}
 %  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]
+\begin{lstlisting}
   log_selector = <....whatever your log_selector already contains...> \
    +tls_certificate_verified +tls_peerdn +tls_sni
 \end{lstlisting}
@@ -353,19 +353,19 @@ to get even more TLS information logged.
 
 In the main config section of Exim add:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   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]
+\begin{lstlisting}
   tls_advertise_hosts = *
 \end{lstlisting}
 
 Listen on smtp(25) port only
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   daemon_smtp_ports = smtp
 \end{lstlisting}
 
@@ -373,23 +373,23 @@ It is not advisable to restrict the default cipher list for opportunistic encryp
 % Exim maintainers do not recommend to change default ciphers
 % We shouldn't, too
 %use:
-%\begin{lstlisting}[breaklines]
+%\begin{lstlisting}
 %  tls_require_ciphers = <...recommended ciphersuite...>
 %\end{lstlisting}
 
 If you want to request and verify client certificates from sending hosts set
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   tls_verify_certificates = /etc/pki/tls/certs/ca-bundle.crt
   tls_try_verify_hosts = *
 \end{lstlisting}
 
 tls\_try\_verify\_hosts only reports the result to your logfile. If you want to disconnect such clients you have to use
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   tls_verify_hosts = *
 \end{lstlisting}
 
 The cipher used is written to the logfiles by default. You may want to add
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   log_selector = <....whatever your log_selector already contains...> \
    +tls_certificate_verified +tls_peerdn +tls_sni
 \end{lstlisting}
@@ -402,14 +402,14 @@ Exim uses opportunistic encryption in the SMTP transport by default.
 Client mode settings have to be done in the configuration section of the smtp transport (driver = smtp).
 
 If you want to use a client certificate (most server certificates can be used as client certificate, too) set
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   tls_certificate   = .../cert.pem
   tls_privatekey    = .../cert.key
 \end{lstlisting}
 This is recommended for MTA-MTA traffic.\\
 
 %If you want to limit used ciphers set
-%\begin{lstlisting}[breaklines]
+%\begin{lstlisting}
 %  tls_require_ciphers = <...recommended ciphersuite...>
 %\end{lstlisting}
 % Exim Maintainers do not recommend ciphers. We shouldn't do so, too.
@@ -417,7 +417,7 @@ Do not limit ciphers without a very good reason. In the worst case you end up wi
 
 \paragraph*{OpenSSL}\mbox{}\\
 Exim already disables SSLv2 by default. We recommend to add
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   openssl_options = +all +no_sslv2 +no_compression +cipher_server_preference
 \end{lstlisting}
 to the main configuration.\\
@@ -447,7 +447,7 @@ There already is a working patch to provide support:\\
 \url{http://bugs.exim.org/show_bug.cgi?id=1397}
 
 \paragraph*{How to test}\mbox{}\\
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
  openssl s_client -starttls smtp -crlf -connect SERVER.TLD:25
 \end{lstlisting}
 
index b686232..d6482a4 100644 (file)
@@ -26,9 +26,9 @@ As of squid-3.2.7 (01 Feb 2013) there is support for the OpenSSL NO\_Compression
 squid.conf
 
 \todo{UNTESTED!}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 options=NO_SSLv2,NO_TLSv1,NO_Compression,CIPHER_SERVER_PREFERENCE 
-cipher=@@@CIPHERSTRINGB@@@
+cipher=%*\cipherstringB*)
 \end{lstlisting}
 
 
@@ -39,7 +39,7 @@ squid.conf
 %% http://forum.pfsense.org/index.php?topic=63262.0
 
 \todo{UNTESTED!}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
                NO_SSLv2    Disallow the use of SSLv2
                NO_SSLv3    Disallow the use of SSLv3
                NO_TLSv1    Disallow the use of TLSv1.0
@@ -53,7 +53,7 @@ squid.conf
 \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]
+\begin{lstlisting}
 --- 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 @@
@@ -81,7 +81,7 @@ BlueCoat Proxy SG Appliances can be used as forward and reverse proxies. The rev
 
 \item[Only allow TLS 1.0,1.1 and 1.2 protocols:] \mbox{}
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $conf t
 $(config)ssl
 $(config ssl)edit ssl-device-profile default
@@ -91,7 +91,7 @@ $(config device-profile default)protocol tlsv1 tlsv1.1 tlsv1.2
 
 \item[Select your accepted cipher-suites:] \mbox{}
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $conf t
 Enter configuration commands, one per line.  End with CTRL-Z.
 $(config)proxy-services
@@ -114,7 +114,7 @@ Select cipher numbers to use, separated by commas: 2,5,6
 
 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]
+\begin{lstlisting}
 <ssl>
     DENY server.connection.negotiated_ssl_version=(SSLV2, SSLV3)
 \end{lstlisting}
@@ -132,7 +132,7 @@ Disabling protocols and ciphers in a forward proxy environment could lead to une
 
 Pound 2.6
        
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 # HTTP Listener, redirects to HTTPS
 ListenHTTP
     Address 10.10.0.10
@@ -148,7 +148,7 @@ ListenHTTPS
     AddHeader    "Front-End-Https: on"
     Cert         "/path/to/your/cert.pem"
     ## See 'man ciphers'.
-    Ciphers      "TLSv1.2:TLSv1.1:!SSLv3:!SSLv2:@@@CIPHERSTRINGB@@@"
+    Ciphers      "TLSv1.2:TLSv1.1:!SSLv3:!SSLv2:%*\cipherstringB*)"
     Service
         BackEnd
             Address 10.20.0.10
index c4e3d1b..0d765e7 100644 (file)
@@ -2,8 +2,8 @@
 \subsection{OpenSSH}
 \subsubsection{Tested with Version} OpenSSH 6.1
 \subsubsection{Settings}
-\paragraph*{sshd_config}
-\begin{lstlisting}[breaklines]
+\paragraph*{sshd\_config}
+\begin{lstlisting}
        # ...
 
        Protocol 2
@@ -33,7 +33,7 @@ Note that the setting \texttt{ServerKeyBits 4096}  has no effect until you re-ge
 The openssh sshd\_config  man page is the best reference: \url{http://www.openssh.org/cgi-bin/man.cgi?query=sshd_config}
 \subsubsection{How to test}
 Connect a client with verbose logging enabled to the SSH server \\
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $ ssh -vvv myserver.com
 \end{lstlisting}and observe the key exchange in the output.
 
@@ -42,7 +42,7 @@ $ ssh -vvv myserver.com
 \subsection{Cisco ASA}
 \subsubsection{Tested with Version} 9.1(3)
 \subsubsection{Settings}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 crypto key generate rsa modulus 2048
 ssh version 2
 ssh key-exchange group dh-group14-sha1
@@ -54,7 +54,7 @@ Note: When the ASA is configured for SSH, by default both SSH versions 1 and 2 a
 \url{http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/general/admin\_management.html }
 \subsubsection{How to test}
 Connect a client with verbose logging enabled to the SSH server \\
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $ ssh -vvv myserver.com
 \end{lstlisting}and observe the key exchange in the output.
 
@@ -63,7 +63,7 @@ $ ssh -vvv myserver.com
 \subsection{Cisco IOS}
 \subsubsection{Tested with Version} 15.0, 15.1, 15.2
 \subsubsection{Settings}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 crypto key generate rsa modulus 2048 label SSH-KEYS
 ip ssh rsa keypair-name SSH-KEYS
 ip ssh version 2
@@ -76,6 +76,6 @@ In IOS, a dedicated Key-pair can be bound to SSH to reduce the usage of individu
 % add any further references or best practice documents here
 \subsubsection{How to test}
 Connect a client with verbose logging enabled to the SSH server \\
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 $ ssh -vvv myserver.com
 \end{lstlisting}and observe the key exchange in the output.
index 71d529e..1605208 100644 (file)
@@ -278,7 +278,7 @@ client and server.
 % 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}[breaklines]
+\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
@@ -290,7 +290,7 @@ Client and server have to use compatible configurations, otherwise they can't co
 The \verb|cipher| and \verb|auth| directives have to be identical.
 
 \todo{FIXME: we should use the CIPHERSTRINGB  macro here}
-\begin{lstlisting}[breaklines]
+\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
@@ -340,7 +340,7 @@ When installing an OpenVPN server instance, you are probably using
 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
@@ -385,7 +385,7 @@ The following settings reflect our recommendations as best as possible on the Ci
 \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
index c8e6222..0d0693a 100644 (file)
@@ -13,7 +13,7 @@ Please note, that any cipher suite starting with ECDHE can be omitted, if in dou
 \subsubsection{Settings}
 Enabled modules \emph{SSL} and \emph{Headers} are required.
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   SSLCertificateFile server.crt
   SSLCertificateKeyFile server.key
   SSLProtocol All -SSLv2 -SSLv3 
@@ -27,7 +27,7 @@ Enabled modules \emph{SSL} and \emph{Headers} are required.
   # ALL subdomains HAVE TO support https if you use this!
   # Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
 
-  SSLCipherSuite '@@@CIPHERSTRINGB@@@'
+  SSLCipherSuite '%*\cipherstringB*)'
 \end{lstlisting}
 
 
@@ -35,7 +35,7 @@ Enabled modules \emph{SSL} and \emph{Headers} are required.
 You might want to redirect everything to \emph{https://} if possible. In Apache
 you can do this with the following setting inside of a VirtualHost environment:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   <VirtualHost *:80>
     RewriteEngine On
     RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=permanent]
@@ -63,13 +63,13 @@ See section \ref{section:Tools}
 
 
 \subsubsection{Settings}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   $SERVER["socket"] == "0.0.0.0:443" {
     ssl.engine  = "enable"
     ssl.use-sslv2 = "disable"
     ssl.use-sslv3 = "disable"
     ssl.pemfile = "/etc/lighttpd/server.pem"
-    ssl.cipher-list = "@@@CIPHERSTRINGB@@@"
+    ssl.cipher-list = "%*\cipherstringB*)"
     ssl.honor-cipher-order = "enable"
     setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=15768000") # six months
     # use this only if all subdomains support HTTPS!
@@ -83,7 +83,7 @@ As for any other webserver, you might want to automatically redirect http
 traffic towards \emph{https://}. It is also recommended to set the environment
 variable \emph{HTTPS}, PHP applications can then detect that HTTPS is in use.
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   $HTTP["scheme"] == "http" {
     # capture vhost name with regex conditiona -> %0 in redirect pattern
     # must be the most inner block to the redirect rule
@@ -135,15 +135,15 @@ See section \ref{section:Tools}
 
 
 \subsubsection{Settings}
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   ssl_prefer_server_ciphers on;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # not possible to do exclusive
-  ssl_ciphers '@@@CIPHERSTRINGB@@@';
+  ssl_ciphers '%*\cipherstringB*)';
   add_header Strict-Transport-Security "max-age=15768000; includeSubDomains"
 \end{lstlisting}
 
 If you absolutely want to specify your own DH parameters, you can specify them via
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   ssl_dhparam file;
 \end{lstlisting}
 
@@ -154,13 +154,13 @@ However, we advise you to read section \ref{section:DH} and stay with the standa
 \subsubsection{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:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   ssl_ecdh_curve          secp384r1;
 \end{lstlisting}
 
 You might want to redirect everything to httpS:// if possible. In Nginx you can do this with the following setting:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
   rewrite     ^(.*)   https://$host$1 permanent;
 \end{lstlisting}
 
index b1096f5..22494be 100644 (file)
@@ -16,7 +16,7 @@
 
 \subsection{Recommended cipher suites}
 \label{section:recommendedciphers}
-\input{"./theory/cipher_suites/recommended_generated.tex"}
+\input{"./theory/cipher_suites/recommended.tex"}
 
 
 %\subsection{Known insecure and weak cipher suites}
index 0a7e66c..f959f05 100644 (file)
@@ -34,7 +34,7 @@ We arrived at this set of cipher suites by selecting:
 
 This results in the OpenSSL string:
 
-\begin{lstlisting}[breaklines]
+\begin{lstlisting}
 'EDH+aRSA+AES256:EECDH+aRSA+AES256:!SSLv3'
 \end{lstlisting}
 
@@ -91,8 +91,8 @@ We arrived at this set of cipher suites by selecting:
 This results in the OpenSSL string:
 
 %'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'
-\begin{lstlisting}[breaklines]
-@@@CIPHERSTRINGB@@@
+\begin{lstlisting}
+%*\cipherstringB*)
 \end{lstlisting}
 
 \todo{make a column for cipher chaining mode}