fix chomp in perl script
authorAaron Kaplan <aaron@lo-res.org>
Mon, 9 Dec 2013 23:09:08 +0000 (00:09 +0100)
committerAaron Kaplan <aaron@lo-res.org>
Mon, 9 Dec 2013 23:09:08 +0000 (00:09 +0100)
src/perlify.pl
src/practical_settings/webserver.tex
src/practical_settings/webserver.tex.template [new file with mode: 0644]

index df53313..83cf2bc 100755 (executable)
@@ -6,16 +6,18 @@ use strict;
 my $debug=1;
 
 my $cipherStrB=`cat cipherStringB.txt`;
-
+chomp $cipherStrB;
 
 my @files=`find . -name "*.tex.template" -print`;
 my $f;
 
 foreach  $f ( @files)  {
-       print "file = $f\n" if $debug;
-       $f =~ /(.*\.tex\.)template/;
+       chomp $f;
+       $f =~ /(.*\.tex)\.template/;
        my $ftex = $1;
 
+       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: $!";
index 393fe5f..d88d3f7 100644 (file)
@@ -21,7 +21,7 @@
 old:
   SSLCipherSuite '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'
 new:
-  SSLCipherSuite '@@@CIPHERSTRINGB@@@'
+  SSLCipherSuite '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'
 
 \end{lstlisting}
 
diff --git a/src/practical_settings/webserver.tex.template b/src/practical_settings/webserver.tex.template
new file mode 100644 (file)
index 0000000..393fe5f
--- /dev/null
@@ -0,0 +1,262 @@
+%%\subsection{Webservers}
+
+\subsubsection{Apache}
+
+\begin{description}
+\item[Tested with Version:]
+
+\item[Settings:] \mbox{}
+
+%-All +TLSv1.1 +TLSv1.2
+\begin{lstlisting}[breaklines]
+  SSLProtocol All -SSLv2 -SSLv3 
+  SSLHonorCipherOrder On
+  SSLCompression off
+  # Add six earth month HSTS header for all users...
+  Header add Strict-Transport-Security "max-age=15768000"
+  # If you want to protect all subdomains, use the following header
+  # ALL subdomains HAVE TO support https if you use this!
+  # Strict-Transport-Security: max-age=15768000 ; includeSubDomains
+
+old:
+  SSLCipherSuite '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'
+new:
+  SSLCipherSuite '@@@CIPHERSTRINGB@@@'
+
+\end{lstlisting}
+
+Note again, that any cipher suite starting with ECDHE can be omitted, if in doubt.
+%% XXX NOTE TO SELF: remove from future automatically generated lists!
+
+\item[Additional settings:]
+
+You should redirect everything to httpS:// if possible. In Apache you can do this with the following setting inside of a VirtualHost environment:
+
+\begin{lstlisting}[breaklines]
+  <VirtualHost *:80>
+   #...
+   RewriteEngine On
+        RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=permanent]
+   #...
+  </VirtualHost>
+\end{lstlisting}
+
+\item[Justification for special settings (if needed):]
+
+\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
+
+
+\subsubsection{lighttpd}
+
+
+
+\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??}
+
+\begin{lstlisting}[breaklines]
+  $SERVER["socket"] == "0.0.0.0:443" {
+    ssl.engine  = "enable"
+    ssl.use-sslv2 = "disable"
+    ssl.use-sslv3 = "disable"
+    #ssl.use-compression obsolete >= 1.4.3.1
+    ssl.pemfile = "/etc/lighttpd/server.pem"
+    ssl.cipher-list = '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'
+    ssl.honor-cipher-order = "enable"
+    setenv.add-response-header  = ( "Strict-Transport-Security" => "max-age=31536000")
+  }
+\end{lstlisting}
+
+
+\item[Additional settings:]
+
+As for any other webserver, you should automatically redirect http traffic toward httpS://
+
+\begin{lstlisting}[breaklines]
+  $HTTP["scheme"] == "http" {
+    # capture vhost name with regex conditiona -> %0 in redirect pattern
+    # must be the most inner block to the redirect rule
+    $HTTP["host"] =~ ".*" {
+        url.redirect = (".*" => "https://%0$0")
+    }
+  }
+\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:] 1.4.4 with OpenSSL 1.0.1e on OS X Server 10.8.5
+
+1.2.1-2.2+wheezy2 with OpenSSL 1.0.1e on Debian Wheezy
+1.4.4 with OpenSSL 1.0.1e on Debian Wheezy
+1.4.4 with OpenSSL 1.0.1e on Debian Wheezy
+1.4.4 with OpenSSL 1.0.1e on Debian Wheezy
+1.4.4 with OpenSSL 1.0.1e on Debian Wheezy
+
+\todo{version?}
+
+\item[Settings:] \mbox{}
+
+\begin{lstlisting}[breaklines]
+  ssl_prefer_server_ciphers on;
+  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+  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';
+  add_header Strict-Transport-Security max-age=2592000;
+\end{lstlisting}
+
+%% XXX FIXME: do we need to specify dhparams? Parameter: ssl_dhparam = file. See: http://wiki.nginx.org/HttpSslModule#ssl_protocols
+
+It is recommended to specify your own Diffie-Hellman Parameters file of at least the same bit size as your RSA key. E.g. use no less than 2048bit DH parameters with a 2048bit RSA key.
+\begin{lstlisting}[breaklines]
+  ssl_dhparam file;
+\end{lstlisting}
+
+
+\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:
+
+\begin{lstlisting}[breaklines]
+  ssl_ecdh_curve          secp384r1;
+\end{lstlisting}
+
+You should redirect everything to httpS:// if possible. In Nginx you can do this with the following setting:
+
+\begin{lstlisting}[breaklines]
+  rewrite     ^(.*)   https://$host$1 permanent;
+\end{lstlisting}
+
+
+\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{Daniel: add screenshots and registry keys}
+
+\begin{description}
+
+\item[Tested with Version:] \todo{Daniel: add tested version}
+
+\item[Settings:] \mbox{}
+
+
+When trying to avoid RC4 and CBC (BEAST-Attack) and requiring perfect
+forward secrecy, Microsoft Internet Information Server (IIS) supports
+ECDSA, but does not support RSA for key exchange (consider ECC suite
+B doubts\footnote{\url{http://safecurves.cr.yp.to/rigid.html}}).
+
+Since \verb|ECDHE_RSA_*| is not supported, a SSL certificate based on
+elliptic curves needs to be used.
+
+The configuration of cipher suites MS IIS will use, can be configured in one
+of the following ways:
+\begin{enumerate}
+\item Group Policy \footnote{\url{http://msdn.microsoft.com/en-us/library/windows/desktop/bb870930(v=vs.85).aspx}}
+\item Registry
+\item IIS Crypto~\footnote{\url{https://www.nartac.com/Products/IISCrypto/}}
+\end{enumerate}
+
+
+Table~\ref{tab:MS_IIS_Client_Support} shows the process of turning on
+one algorithm after another and the effect on the supported clients
+tested using https://www.ssllabs.com.
+
+\verb|SSL 3.0|, \verb|SSL 2.0| and \verb|MD5| are turned off.
+\verb|TLS 1.0| and \verb|TLS 2.0| are turned on.
+
+\begin{table}[h]
+  \centering
+  \small
+  \begin{tabular}{ll}
+    \toprule
+    Cipher Suite & Client \\
+    \midrule
+    \verb|TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256| & only IE 10,11, OpenSSL 1.0.1e \\
+    \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256| & Chrome 30, Opera 17, Safari 6+ \\
+    \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA| & FF 10-24, IE 8+, Safari 5, Java 7\\
+    \bottomrule 
+ \end{tabular}
+  \caption{Client support}
+  \label{tab:MS_IIS_Client_Support}
+\end{table}
+
+Table~\ref{tab:MS_IIS_Client_Support} shows the algoriths from
+strongest to weakest and why they need to be added in this order. For
+example insisting on SHA-2 algorithms (only first two lines) would
+eliminate all versions of Firefox, so the last line is needed to
+support this browser, but should be placed at the bottom, so capable
+browsers will choose the stronger SHA-2 algorithms.
+
+\verb|TLS_RSA_WITH_RC4_128_SHA| or equivalent should also be added if
+MS Terminal Server Connection is used (make sure to use this only in a
+trusted environment). This suite will not be used for SSL, since we do
+not use a RSA Key.
+
+
+% \verb|TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256| ... only supported by: IE 10,11, OpenSSL 1.0.1e
+% \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256| ... Chrome 30, Opera 17, Safari 6+
+% \verb|TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA| ... Firefox 10-24, IE 8+, Safari 5, Java 7
+
+
+Clients not supported:
+\begin{enumerate}
+\item Java 6
+\item WinXP
+\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}