Re: [squid-users] handing off usernames to parent proxies

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Wed, 19 Oct 2011 12:38:52 +1300

 On Tue, 18 Oct 2011 13:53:18 +0200, E.S. Rosenberg wrote:
> Hi all,
> We currently have a setup with proxies that use NTLM authentication
> (we hope to upgrade to kerberos in the future) and based on the
> username send the user to one of several parent proxies, to improve
> caching we would like to instead route all traffic through one proxy
> that is heavily optimized for caching (has it's own large storage
> etc.).
>
> I saw in the documentation that it is possible to pass the
> authentication to the parent, as far as I can tell I can 'tell' the
> parent in several ways how to route the client:
> - I can pass the username to the parent

 Yes via the login= parameter. It is sent as Basic auth (and a dummy or
 fake password is best there). So you can use it safely for logging
 purposes, but not reliable security.

> - I can 'NAT' the users connection as it leaves the child proxy (src
> ip rewrite rules) and have source IP based rules on the parent.

 Hmm? never heard of this one before. Any details you can point me at
 for my education?

> - I could setup multiple instances of the same parent with different
> login details and 'route' based on username to each of said 'parents'
>
> It seems to me that the second option would result in better
> performance on the one hand but on the other hand it would add more
> obfuscation, however performance is more important to me.
>
> Am I correct in my analysis? Is passing the username to parent a lot
> slower, would it require another ntlm-auth binary running on the
> parent or can the username just pass cleartext between  the proxies
> and therefor the whole 'authentication' is a lot faster....

 Username as such is okay as clear-text. NTLM does not let squid know
 the password, so there is no security leak by adding a fake one of your
 own.

 NTLM on the parent has a major flaw that will bite you if you try to do
 NTLM there. Namely that NTLM (and Kerberos) do not authenticate the HTTP
 request particularly, they authenticate the TCP connection. So all they
 can guarantee is that the connection came from the child proxy. Squid
 2.7 and 3.1+ add a bit more surety in that they "pinn" the connections,
 preventing multiple clients using the TCP connection to the parent. This
 is nasty for performance and resource usage, but the only way to get
 NTLM and Kerberos to work without regular popups.

 On the whole, I think reconsider carefully your need for auth
 credentials to get to the backend. Whether you need full auth, or just
 the username for example. You can add in SSL, IP, and/or MAC checks to
 harden the surety that parent proxy traffic is coming from the child
 proxy.

 Amos
Received on Tue Oct 18 2011 - 23:38:54 MDT

This archive was generated by hypermail 2.2.0 : Thu Oct 20 2011 - 12:00:03 MDT