reformat ECC section
[ach-master.git] / src / practical_settings / proxy_solutions.tex
1 %%\subsection{Intercepting proxy solutions and reverse proxies}
2
3 Within enterprise networks and corporations with increased levels of paranoia or at least some defined security requirements it is common \textbf{not} to allow direct connections to the public internet.
4
5 For this reason proxy solutions are deployed on corporate networks to intercept and scan the traffic for potential threats within sessions.\\
6
7 For encrypted traffic there are four options:
8
9 \begin{itemize}
10 \item Block the connection because it cannot be scanned for threats.
11 \item Bypass the threat-mitigation and pass the encrypted session to the client, which results in a situation where malicious content is transferred directly to the client without visibility to the security system.
12 \item Intercept (i.e. terminate) the session at the proxy, scan there and re-encrypt the session towards the client (effectively MITM).
13 \item Deploy special Certificate Authorities to enable Deep Packet Inspection on the wire.
14 \end{itemize}
15
16 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.
17
18 Conclusion: Don't forget to check your proxy solutions SSL-capabilities. Also do so for your reverse proxies!
19
20 \subsubsection{squid}
21
22
23 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.
24
25 \paragraph*{squid.conf}\mbox{}\\
26 squid.conf
27
28 \todo{UNTESTED!}
29 \begin{lstlisting}[breaklines]
30 options=NO_SSLv2,NO_TLSv1,NO_Compression,CIPHER_SERVER_PREFERENCE 
31 cipher=@@@CIPHERSTRINGB@@@
32 \end{lstlisting}
33
34
35
36 \paragraph*{squid.conf}\mbox{}\\
37 squid.conf
38
39 %% http://forum.pfsense.org/index.php?topic=63262.0
40
41 \todo{UNTESTED!}
42 \begin{lstlisting}[breaklines]
43                 NO_SSLv2    Disallow the use of SSLv2
44                 NO_SSLv3    Disallow the use of SSLv3
45                 NO_TLSv1    Disallow the use of TLSv1.0
46                 NO_TLSv1_1  Disallow the use of TLSv1.1
47                 NO_TLSv1_2  Disallow the use of TLSv1.2
48                 SINGLE_DH_USE
49                                 Always create a new key when using temporary/ephemeral
50                                 DH key exchanges
51 \end{lstlisting}
52
53 \todo{Patch here? Definitely working for 3.2.6!}
54 For squid Versions before 3.2.7 use this patch against a vanilla source-tree:
55
56 \begin{lstlisting}[breaklines]
57 --- support.cc.ini      2013-01-09 02:41:51.000000000 +0100
58 +++ support.cc  2013-01-21 16:13:32.549383848 +0100
59 @@ -400,6 +400,11 @@
60          "NO_TLSv1_2", SSL_OP_NO_TLSv1_2
61      },
62  #endif
63 +#ifdef SSL_OP_NO_COMPRESSION
64 +    {
65 +        "NO_Compression", SSL_OP_NO_COMPRESSION
66 +    },
67 +#endif
68      {
69          "", 0
70      },
71 \end{lstlisting}
72
73
74
75 \subsubsection{Bluecoat}
76 %% https://kb.bluecoat.com/index?page=content&id=KB5549
77 \begin{description}
78 \item[Tested with Version:] SGOS 6.5.x
79
80 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.
81
82 \item[Only allow TLS 1.0,1.1 and 1.2 protocols:] \mbox{}
83
84 \begin{lstlisting}[breaklines]
85 $conf t
86 $(config)ssl
87 $(config ssl)edit ssl-device-profile default
88 $(config device-profile default)protocol tlsv1 tlsv1.1 tlsv1.2
89   ok
90 \end{lstlisting}
91
92 \item[Select your accepted cipher-suites:] \mbox{}
93
94 \begin{lstlisting}[breaklines]
95 $conf t
96 Enter configuration commands, one per line.  End with CTRL-Z.
97 $(config)proxy-services
98 $(config proxy-services)edit ReverseProxyHighCipher
99 $(config ReverseProxyHighCipher)attribute cipher-suite
100 Cipher#  Use        Description        Strength
101 -------  ---  -----------------------  --------
102       1  yes            AES128-SHA256      High
103       2  yes            AES256-SHA256      High
104       3  yes               AES128-SHA    Medium
105       4  yes               AES256-SHA      High
106       5  yes       DHE-RSA-AES128-SHA      High
107       6  yes       DHE-RSA-AES256-SHA      High
108                [...]
109      13  yes          EXP-RC2-CBC-MD5    Export
110
111 Select cipher numbers to use, separated by commas: 2,5,6
112   ok
113 \end{lstlisting}
114
115 The same protocols are available for forward proxy settings and should be adjusted accordingly:
116 In your local policy file add the following section:
117 \begin{lstlisting}[breaklines]
118 <ssl>
119     DENY server.connection.negotiated_ssl_version=(SSLV2, SSLV3)
120 \end{lstlisting}
121
122 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)
123
124 \end{description} 
125
126
127
128
129 \subsubsection{Pound}
130 % See http://www.apsis.ch/pound
131 % See https://help.ubuntu.com/community/Pound
132
133 Pound 2.6
134         
135 \begin{lstlisting}[breaklines]
136 # HTTP Listener, redirects to HTTPS
137 ListenHTTP
138     Address 10.10.0.10
139     Port    80
140     Service
141         Redirect "https://some.site.tld
142     End
143 End
144 ## HTTPS Listener
145 ListenHTTPS
146     Address      10.10.0.10
147     Port         443
148     AddHeader    "Front-End-Https: on"
149     Cert         "/path/to/your/cert.pem"
150     ## See 'man ciphers'.
151     Ciphers      "TLSv1.2:TLSv1.1:!SSLv3:!SSLv2:@@@CIPHERSTRINGB@@@"
152     Service
153         BackEnd
154             Address 10.20.0.10
155             Port 80
156         End
157     End
158 End
159 \end{lstlisting}