Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Guide to filtering web content (http and https) with pfsense 2.3

    Scheduled Pinned Locked Moved Documentation
    190 Posts 54 Posters 222.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • johnpozJ
      johnpoz LAYER 8 Global Moderator
      last edited by

      What is the point of all the safesearch nonsense and redirecting users to only use your dns..  You do understand when a proxy is being used, the proxy does the query not the client..

      An intelligent man is sometimes forced to be drunk to spend time with his fools
      If you get confused: Listen to the Music Play
      Please don't Chat/PM me for help, unless mod related
      SG-4860 24.11 | Lab VMs 2.7.2, 24.11

      1 Reply Last reply Reply Quote 0
      • P
        phunni
        last edited by

        While setting up wpad we'r supposed ot enter the following into /usr/local/www/wpad.da:

        function FindProxyForURL(url, host)
        {
            if (isPlainHostName(host) ||
                shExpMatch(host, "*.local") ||
                isInNet(dnsResolve(host), "192.168.1.0",  "255.255.255.0"))
                return "DIRECT";

        return "PROXY 192.168.1.1:3128";
        }

        I've actually changed my pfsense server ip to 192.168.0.1 - do I need to edit both ip addresses listed above?

        1 Reply Last reply Reply Quote 0
        • A
          AR15USR
          last edited by

          @johnpoz:

          What is the point of all the safesearch nonsense and redirecting users to only use your dns..  You do understand when a proxy is being used, the proxy does the query not the client..

          I think the point of the safe search is to stop, say your young kids, from Googling porn images. I'm not sure about the dns redirecting.


          2.6.0-RELEASE

          1 Reply Last reply Reply Quote 0
          • A
            aGeekhere
            last edited by

            @AR15USR:

            @johnpoz:

            What is the point of all the safesearch nonsense and redirecting users to only use your dns..  You do understand when a proxy is being used, the proxy does the query not the client..

            I think the point of the safe search is to stop, say your young kids, from Googling porn images. I'm not sure about the dns redirecting.

            1. What is the point of forcing search engines from using safe search?
            Answer: To aid in the filtering of adult content, this is most importantly for google images as squidguard does not block them, if you do not want to filter web content then this guide is not designed for you.

            2. What is the point of redirecting users to use THEIR pfsense router as the DNS server.
            Answer: There are many advantages not all relating to web filtering however tries and stops the user from bypassing the dns redirect rule.

            @phunni:

            While setting up wpad we'r supposed ot enter the following into /usr/local/www/wpad.da:

            function FindProxyForURL(url, host)
            {
                if (isPlainHostName(host) ||
                    shExpMatch(host, "*.local") ||
                    isInNet(dnsResolve(host), "192.168.1.0",  "255.255.255.0"))
                    return "DIRECT";

            return "PROXY 192.168.1.1:3128";
            }

            I've actually changed my pfsense server ip to 192.168.0.1 - do I need to edit both ip addresses listed above?

            Yes, set it to 192.168.0.0

            Never Fear, A Geek is Here!

            1 Reply Last reply Reply Quote 0
            • A
              AR15USR
              last edited by

              I'm constantly getting these entries in the Squid Real Time log:

              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:59488	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:55735	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:49806	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:46365	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:38156	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:25012	-	-
              01.07.2016 06:06:34	192.168.1.5	TCP_DENIED/403	127.0.0.1:24866	-	-
              01.07.2016 06:06:33	192.168.1.5	TCP_DENIED/403	127.0.0.1:14826	-	-
              01.07.2016 06:06:33	192.168.1.5	TCP_DENIED/403	127.0.0.1:10196	-	-
              01.07.2016 06:06:33	192.168.1.5	TCP_DENIED/403	127.0.0.1:6263	-	-
              

              192.168.1.5 is my local machine. Is this normal?

              Update: Resolved this in another thread..


              2.6.0-RELEASE

              1 Reply Last reply Reply Quote 0
              • P
                phunni
                last edited by

                To stop users from bypassing your proxy setup a new firewall lan rule and block port 80 and 443

                Just to clarify - this is to prevent users from bypassing the proxy altogether, rather than just  bypassing the autoproxy/wpad stuff?

                1 Reply Last reply Reply Quote 0
                • P
                  phunni
                  last edited by

                  The Squid Guard settings aren't working for me.  I download the blacklist and then go to Common ACL (I've already completed the target categories step on a previous run through), but the "Target Rules" only contains "^whitelist all" and there are only [whitelist] and Default access [all] options there.

                  On another point, I don't want to have to set up auto proxy for every device connecting to my network - would it work if I use transparent proxy and then explicitly set the https_proxy on the couple of machines I really need locked down?

                  1 Reply Last reply Reply Quote 0
                  • A
                    aGeekhere
                    last edited by

                    @phunni:

                    To stop users from bypassing your proxy setup a new firewall lan rule and block port 80 and 443

                    Just to clarify - this is to prevent users from bypassing the proxy altogether, rather than just  bypassing the autoproxy/wpad stuff?

                    If port 80 and 443 are lefted open then the user can simply untic the auto configure proxy (on their PC, Mac, phone etc) and set the setting to go direct. This will not call for the wpad and the user will go direct and not use the proxy.

                    @phunni:

                    The Squid Guard settings aren't working for me.  I download the blacklist and then go to Common ACL (I've already completed the target categories step on a previous run through), but the "Target Rules" only contains "^whitelist all" and there are only [whitelist] and Default access [all] options there.

                    On another point, I don't want to have to set up auto proxy for every device connecting to my network - would it work if I use transparent proxy and then explicitly set the https_proxy on the couple of machines I really need locked down?

                    1.With squidguard set default access to allow then set the categories you want to deny. Save and then go to squidguard General settings and hit apply. Please read the tip under this section it is very important.
                    Read this https://doc.pfsense.org/index.php/SquidGuard_package

                    2. Transperrent proxy does not use a wpad, if you want to use transperrent proxy for http then you need SSL Man In the Middle Filtering for https which must have a certificate installed on evey device.

                    So you can either set auto configure proxy on all devices or install a certificate on all devices.

                    You cannot use a transperrent proxy and a wpad at the same time. If you did get a transperrent proxy with SSL mitm working then there is no need for manual proxy mode.

                    Never Fear, A Geek is Here!

                    1 Reply Last reply Reply Quote 0
                    • P
                      phunni
                      last edited by

                      @aGeekHere:

                      1.With squidguard set default access to allow then set the categories you want to deny. Save and then go to squidguard General settings and hit apply. Please read the tip under this section it is very important.
                      Read this https://doc.pfsense.org/index.php/SquidGuard_package

                      That was the problem - there were no other categories than whitelist and default access.  I managed to get the others by enabling "Blackilist" under the general settings of Squid Guard.  Forgive me if I just missed it, but I couldn't see that step in the guide.

                      1 Reply Last reply Reply Quote 0
                      • A
                        aGeekhere
                        last edited by

                        I added
                        In squidguard under General settings
                        Tic enable
                        Tic Enable log
                        Tic Enable log rotation
                        Tic enable blacklist
                        Under Blacklist URL add http://www.shallalist.de/Downloads/shallalist.tar.gz
                        Save
                        apply (you must always hit apply for any changes you made to squidguard).

                        Never Fear, A Geek is Here!

                        1 Reply Last reply Reply Quote 0
                        • A
                          aGeekhere
                          last edited by

                          I found this post and I am researching to see how well it will work.

                          https://forum.pfsense.org/index.php?topic=106016.0

                          The idea is to use the wpad for https content and have a transperrent proxy for http traffic. This could remove the bypass rules for programs with no proxy settings and need to use port 80.

                          Update
                          OK it looks to be working fine, now all the traffic that was block on port 80 is now using the transperrent proxy, you will still need a pass rule for port 443 but not for port 80.

                          So you can use the wpad for http and https filtering (or for just https) and enable the transperrent proxy to catch the leftovers.

                          Never Fear, A Geek is Here!

                          1 Reply Last reply Reply Quote 0
                          • P
                            phunni
                            last edited by

                            Just to point out that this approach does not play well with many Roku channels - at least on my Roku 3 anyway.

                            Forcing youtube to be restricted causes all videos to fail on the Roku app.

                            The step " Do not allow IP-Addresses in URL" breaks Netflix.

                            There is also something that breaks the ITV Hub channel - although I haven't figured out what yet.  My experiments suggest that it's something to do with Squid, but probably no squid guard.

                            The Roku remote is also somewhat less reliable in connecting after a reboot of the Roku, although I'm surprised at that, because I thought the Roku used it's own wifi to connect to the remote independently of the main network.

                            I'm not saying all this because I'm asking for fixes (although any suggestions that might provide fixes would be useful), but as information for anyone setting this up who has a Roku on their network.

                            I'm still, largely, using this approach, although, obviously, it's somewhat weaker than it would be if I didn't have to make compromises to get my Roku working.

                            1 Reply Last reply Reply Quote 0
                            • A
                              aGeekhere
                              last edited by

                              Bypass the proxy for Roku and Netflix.

                              Never Fear, A Geek is Here!

                              1 Reply Last reply Reply Quote 0
                              • W
                                wifiuk
                                last edited by

                                So i have got wpad all working fine using some other guides, everything goes via the autodisovery and all is good.

                                That is except android devices. They are not allowing auto wpad config, and i'm not setting them all up one by one.

                                If i set a firewall rule to block 80 - 443 on the LAN it works, and all the devices work except the android devices, which is what i expect to happen.

                                What i want to do is redirect all 80 - 443 requests to the squid port 3128.

                                But i have read somewhere that as my squid is the same ip as firewall and same subnet as lan it will cause some redirect loops.

                                Can someone advise me the best way to force all android traffic via squid without manually setting up each device..

                                1 Reply Last reply Reply Quote 0
                                • A
                                  aGeekhere
                                  last edited by

                                  That is except android devices. They are not allowing auto wpad config, and i'm not setting them all up one by one.

                                  Manual setup is the only way I got it to work for android (5.1) and for older versions manual setup is the only option.

                                  Try enabling transperrent proxy with the wpad, this will help with port 80 getting blocked.

                                  But i have read somewhere that as my squid is the same ip as firewall and same subnet as lan it will cause some redirect loops.

                                  I have read that too (never tried) might be your best option.

                                  Or just get your users to setup the proxy?

                                  Never Fear, A Geek is Here!

                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    chris4916
                                    last edited by

                                    @wifiuk:

                                    But i have read somewhere that as my squid is the same ip as firewall and same subnet as lan it will cause some redirect loops.

                                    You are not obliged to redirect to LAN IP. Thik about localhost  ;)  then I don't think there is any loop.

                                    What makes this "dual proxy" option difficult is that, in order to set-up transparent proxy, you will have to allow requests ton internet on port 80, while, when configuring explicit proxy, you may (should) want to deny such access so that you ensure everything goes through your proxy.
                                    And same for HTTPS except that transparent proxy, unless you configure ssl-bump, will not intercept HTTPS flow.

                                    Jah Olela Wembo: Les mots se muent en maux quand ils indisposent, agressent ou blessent.

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      phunni
                                      last edited by

                                      @aGeekHere:

                                      Bypass the proxy for Roku and Netflix.

                                      This fixes the issue with itv hub, although bypassing for netflix.co.uk - works on the roku, but then breaks netflix on Android - presumably they're using different destination ips.

                                      Will have to re-enable ip addresses in the url in squid.

                                      Also, this doesn't fix the problem with youtube - you just have to allow unsafe mode…

                                      1 Reply Last reply Reply Quote 0
                                      • E
                                        everwake
                                        last edited by

                                        this guide was very nice, but it does not work for me.

                                        http proxy part works fine (transparent mode)

                                        on android using automatic discovery it uses the wpad file, and looking in the log I can see entries like:

                                        10.111.11.111/android-a41b317d63f30562.local sb.scorecardresearch.com:443 Request(default/blk_BL_tracker/-) - CONNECT REDIRECT

                                        which implies to me that https is working, but regular expression matching for a site only works if it is http, not over https, which means that filtering using regexp for youtube and google does not work.
                                        no filtering on sites using https seems to be happening.

                                        safe search for youtube only works for desktop-pc, not on youtube apps. the desktop pc's say that safe search was forced by the network admin (which is what I want), but our android pads don't seem to care (rendering safe search totally useless)

                                        I found this looking for a way to filter youtube and google, but since both sites use https it does not work, has anyone got it working or should I go to using certificates?

                                        Regards

                                        1 Reply Last reply Reply Quote 0
                                        • dotdashD
                                          dotdash
                                          last edited by

                                          Just a note, you can simplify the directions by touching the file instead of creating with vi.
                                          e.g.
                                          Ssh into the router
                                          type 8
                                          cd /
                                          cd var/unbound
                                          vi forecegoogle.conf
                                          leave blank for now
                                          save (wq)

                                          Could be done with-
                                          Ssh into the router
                                          type 8
                                          touch /var/unbound/forecegoogle.conf

                                          Or you could just paste the touch command into diagnostics, command prompt and not shell in.
                                          Just a suggestion, there are many ways to do these things.

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            oddworld19
                                            last edited by

                                            I have followed the guide, WPAD is working and the proxy is working in NON-transparent mode. I want to block specific subreddits, like Reddit.com/r/nsfw without blocking the remainder of Reddit.com. I do not want to block the entire domain, and I use pfblockerng and DNSBL with unbound to handle DNS and Top level domain blocking. I don't want to block all of Reddit… Just the NSFW material (and I have a list of all websites in squidguard).

                                            At the moment, if the user access HTTP - Reddit.com/r/nsfw, then squidguard blocks at the proxy. However HTTPS requests to the same site are not blocked.

                                            Is the proxy able to block this type of traffic without MITM / certificate installation on each host? At the moment, "transparent mode" and "MITM" are disabled on squid. Any advice is appreciated.

                                            Supermicro SYS-5018A-FTN4 (Atom c2758)
                                            pfSense 2.3.2

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.