This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Bypass network security packet filters using web proxy

I've noticed that the web proxy can be used to bypass network security packet filters.  Consider a gateway with three interfaces, one for the WAN, one for the LAN, and one for GUESTS.  If GUESTS are normally not permitted to access web servers on the LAN, but are permitted to access the web proxy (to limit web access), than the GUESTS can make requests through the web proxy to access the LAN.

As a simple measure to prevent this, I've tried using URL Filtering to block hosts on the LAN by URL.  But this won't cut it as anyone can register a domain name that does not match my URL filters and resolves to a host on my LAN.  I've also tried to add network security packet filter rules that block the Astaro LAN IP from accessing any hosts on the LAN - but it seems that the web proxy is exempt from these rules.

What I'd really like is a way to limit the web proxy by destination IP address or IP range.  I know how to do this with Squid (acl to_localnet dst ; http_access deny to_localnet), but is there a way to do this with Astaro?


This thread was automatically locked due to age.
  • I would also appreciate an external interface definition for the Proxy !

    By this, do you mean a way to avoid using a route and a SNAT to use a different interface for web surfing?

    Or a hard block by network interface (not by IP).

    Isn't this accomplished simply by NOT putting "Interface (Network)" into 'Allowed networks' - or have I misunderstood?  As you mentioned in your email, there's still the exploit Billybob discussed above, and that's, I think, what barkas meant by the "hard block by IP" suggestion.

    Cheers - Bob
    PS Astaro created a special site for Astaro Gateway Feature Requests.
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA

  • So there really should be a hard block by ip option.
    Or an external interface definition for the proxy (like the internal net you can also define).


    Yes that would be helpful. Also you would think that putting deny all traffic to server network and using bypass proxy for server address in http-advanced would fix this but it doesn't so there is definitely room for improvement.
    Best Regards.
    Bill.

    Edit: Ok the bypass traffic is for transparent proxy only and it does bypass unless the user changes the browser to use manual proxy which again is highly unlikely in guest situations. But an exceptions category that bypasses http proxy altogether would fix this also.
  • Edit: Ok the bypass traffic is for transparent proxy only and it does bypass unless the user changes the browser to use manual proxy which again is highly unlikely in guest situations.

    Billybob, it's been awhile since I played with this.  Are you confirming that if
    • the proxy is in a non-transparent mode for "Internal (Network)" and
    • in a transparent mode for the guest network
    • "Internal (Network)" is in the 'Transparent mode skiplist'
    • 'Allow HTTP traffic for listed hosts/nets' is not checked
    • there is a NAT rule 'Guest (Network) -> HTTP Proxy -> Any : DNAT to HTTP'

    even using the DynDNS trick to resolve an internal IP won't work to allow the guest access?

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
  • wow that sounds like a multiple choice quiz question[;)]

    The main proxy settings like bypass transparent hosts take precedence over proxy profile settings.

    What I tested was to put the webserver in transparent skip list under http proxy-->advanced with allow HTTP traffic for listed hosts not checked. Then there is a packet filter rule needed to access the server in a different network. I couldn't access it with IP/DNS name. If you manually put the proxy information in the browser although the proxy is running in transparent mode, then the transparentskip list is not applicable and the server is accessible again with or without any packet filter rules.

    Transparent skiplist is nothing more than some fancy netfilter rules by astaro, it doesn't change anything in the proxy. 

    My last comment about exceptions category was a feature request. We need an exceptions category that bypasses certain hosts/nets to bypass proxy no matter which mode the proxy is running in. Hope that made sense.

    Best Regards
    Bill.
  • OK, so I was trying to make you work too hard... [;)]

    Let me try again... If you have the following scenario, the webserver cannot be reached via the transparent proxy from the "Internal (Network)" even though it's in 'Allowed networks' for the proxy:
    • Webserver in "DMZ (Network)"
    • "DMZ (Network)" in 'Transparent mode skiplist'
    • 'Allow HTTP traffic for listed hosts/nets' is not checked and no packet filter rule allows access

    You can't browse to the webserver from "Internal (Network)" regardless of whether you try with an IP or a resolvable FQDN.

    Right?

    Cheers - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
  • Ok you made me work but I was curious myself so here it goes.


    You can't browse to the webserver from "Internal (Network)" regardless of whether you try with an IP or a resolvable FQDN.

    You are correct. You can't access DMZ once its in the bypass proxy list in transparent mode only.

    Here is how to block everyone from manually defining HTTP proxy while letting transparent proxy do its thing. 

    1.  Enable http proxy in transparent mode (Screenshot1) 

    1.  Create a DNAT rule to catch any webproxy traffic and redirect it to some other port. I am redirecting LAN traffic as a test, you can redirect any network (guest,dmz etc). I am using port 80 on my astaro as redirect, but you can send to some dummy address if you like. Leave the autopacket filter unchecked since we are stopping the traffic, not actually redirecting. (Screenshot2)

    2. Change your web browser's proxy settings to point to astaro port 8080(web proxy) and you will see that it is being dnatted and dropped with the default drop rule.(Screenshot 3) 

    3. Create a bypass rule for your dmz/server network in http proxy-->advance-->bypass transparent proxy and either add the whole dmz network or just your webserver for blocking Screenshot4. 

    4.  Screenshot5 (my client 192.168.0.10 trying to get to my webserver on dmz @192.168.1.101). Notice that this is packet filter log since its bypassing proxy due to the bypass rule in previous step.

    Things to keep in mind. If you have a packet filter rule Allow http-->ANY as a backup, your DMZ network is part of ANY so make sure you change ANY rules to Internet as destination.

    Finally, netfilter is only as smart as the user defining the rules. Astaro has done an awesome job of making it easy to write the rules by pointing and clicking. I for one am thankful that I don't have to manually write these rules, saving hours of headaches and misconfigurations. Just say thanks to the developers and to astaro for letting us use this as a fully functional product for free[;)]
  • Nice hack. Still, it's a hack and I'd prefer to not let the guest network use the proxy at all, which also solves this, if in a less secure way for guests. Depends on how nice you want to be to them [;)] .

    @balfson: I thought you wanted to put the guest network in transparent mode skiplist, if you put the internal network in, this should work.
  • Great, thanks for your feedback, Billybob and barkas.

    Billybob, I thought the transparent mode skip list applied to both sources and destinations; can you confirm that you don't have proxy access out of your DMZ even though it's in 'Allowed networks'?  Also, I think DNATs come before proxies, so can you check that leaving 'Destination' blank (instead of "LAN (Address)") in your DNAT still results in the proxy capturing that traffic?

    Thanks - Bob
     
    Sophos UTM Community Moderator
    Sophos Certified Architect - UTM
    Sophos Certified Engineer - XG
    Gold Solution Partner since 2005
    MediaSoft, Inc. USA
  • Yes allowing and bypassing don't effect each other. You can allow a network and bypass it just as you can allow a network and bypass just one client out of that network.
    Also, I think DNATs come before proxies, so can you check that leaving 'Destination' blank (instead of "LAN (Address)") in your DNAT still results in the proxy capturing that traffic?

    Dnat does come before proxies. The built in proxy rule catches all traffic on port 80 (DNAT any with destination port 80 to 8080). What I am doing is stopping the manual use of port 8080 so I am dnatting port 8080 to never never land. This will break standard proxy but transparent won't be affected at all. That was the problem with the original poster, people abusing his transparent proxy as standard proxy. 

    Regards

    Edit: In original poster's case, server is in LAN, he has DMZ as guest. So he will dnat his dmz port 8080 and just put the webserver in LAN in bypass proxy. This way his LAN is still being proxied, just the server is not and the DMZ can't use standard proxy if they tried to.
  • I would prefer some real functionality to do that, so far every way to hack it somehow has a downside.