Search squid archive

Re: Re: Squid transparent proxy with one nic access denied problem.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18/02/2014 11:33 p.m., Nikolai Gorchilov wrote:
> On Tue, Feb 18, 2014 at 10:30 AM, Amos Jeffries <squid3@xxxxxxxxxxxxx> wrote:
>> On 18/02/2014 1:16 p.m., Nikolai Gorchilov wrote:
>>> Hi Spyros,
>>>
>>> Seems you're experiencing request loops, that are unrelated to your ACLs
>>>
>>> Looking at the logs, we can clearly see pairs of requests for same
>>> url. Like this:
>>> 1392590890.301      0 192.168.1.20 TCP_MISS/403 4158 GET
>>> http://www.tvxs.gr/ - HIER_NONE/- text/html
>>> 1392590890.302      1 192.168.1.1 TCP_MISS/403 4263 GET
>>> http://www.tvxs.gr/ - HIER_DIRECT/192.168.1.20 text/html
>>>
>>> As the logging happens at the end of transaction, records are ordered
>>> by finish time, not start. They actually started in reverse order:
>>> 1. First came the request from 192.168.1.1 for http://www.tvxs.gr/.
>>> 2. As it was considered a MISS, your Squid decided to go directly to
>>> the destination server (thus hierarchy code HIER_DIRECT)
>>> 3. PROBLEM! PROBLEM! Surprisingly, Squid resolves www.tvxs.gr as
>>> 192.168.1.20 and fires the request towards this IP!
>>
>> Sadly, NOT surprising:
>>
>>  A) kernel NAT records on the Squid box indicate that no NAT alterations
>> to the TCP packet took place there.
>>
>>  B) TCP packet indicates that destination server is 192.168.1.20.
>>
>> ==> forward DIRECTly to original destination server (192.168.1.20).
> 
> If Squid is running in intercept mode, I don't see a reason it cares
> about dst ip. IMHO it has to resolve the host name and forward the
> request there.

Which hostname?

TCP header dst IP 114.15.67.89
"
  GET http://google.com/ HTTP/1.1
  Host: example.com
  ...
"
 - Hint: neither google.com nor example.com is being sent this request.

Get the wrong one and you just poisoned the cache and screwed over *all*
users of the proxy :-(


Overall gains:
 * better security
 * better transparency (some types of broken apps start working)
 * less trouble debugging broken routing from the client end
 * the "NAT" part can be reduced to just NPT instead of full NAPT


> 
>>> 4. Boom! This is how the same request arrives again, this time from
>>> source IP 192.168.1.20 (Squid itself). We have a loop!
>>> 5. Squid detects the loop (something like "WARNING: Forwarding loop
>>> detected" in cache.log) and generates internal error response like
>>> HTTP/403 Forbidden, using ERR_ACCESS_DENIED or alike. Thus hierarchy
>>> code is HIER_NONE.
>>
>>
>> "SECURITY ALERT: Host header forgery detected" should also be showing up
>> on the initial request processing. Since Squid validates whether
>> (192.168.1.20 == www.tvxs.gr) => FAIL.
> 
> Isn't this message only available when running TPROXY?

No. Host: header validation is done with all of the TCP/IP traffic
interception methods.


Your possibly thinking of IP spoofing. Which is the client/src IP, not
the dst IP.

> 
>> http://wiki.squid-cache.org/KnowledgeBase/HostHeaderForgery
>>

Amos





[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux