pfSense - Squid + Squidguard / Traffic Shapping Tutorial

In this tutorial I will show you how to set up pfSense 2.0.1 up as an Internet Gateway with Squid Proxy / Squidguard Filtering. I will also show that you have to configure some extra features of pfSense like traffic shapping with squid. This type of configuration would be useful for people who want to set up wireless hot spots or Internet cafe's etc.

 

Requirements

This tutorial assumes that you already have a pfsense (version 2.0.1 Minimum) installation running with your network interfaces configured and basic firewall rules configured.

 

Installing Packages to pfsense

First of all lets start by installing the extra packages that we are going to requires

Login to your pfsense's Web Administrator, and click on "Server -> Packages", scroll down the list and find squid and click on "+" button to install, wait for the process to finish then return to the packages section and look for squidguard and install that package as well.

To confirm that the packages have been installed, refresh the web interface and goto "Services" menu and look for Proxy Server & Proxy Filter, if they both appear in the menu they have been installed correctly, reboot the pfSense Box.

NOTE: There have been a couple of instances where I have had to reinstall the squid package right after I have installed the squidguard package, the reason behind this is after I install the squidguard package I am unable to access the Proxy Server Configuration, if this happens go back to the packages menu, click on installed packages tab, then select reinstall on the squid server entry (this has only happened in versions prior to 2.0.1).

 

Configuring Proxy Server Package

Once pfsense has been rebooted we want to configure the proxy server settings, (now in this tutorial I am setting up the proxy server as a transparent proxy, if you want to set this part up differently please do you research into squid configuration, the pfsense web site has configuration guides for squid aswell), click on Services -> Proxy Server.

On the General Tab, you want to set the following settings, the Proxy Interface Option should be set to "LAN", and because I am setting this up as a transparent proxy server, tick the "Transparent Proxy" check box.

I would strongly recommend logging to be enabled on your proxy server, as it will come in handy should you need to trouble shoot a issue or just see what people are doing on the Internet etc. Tick the "Enabled Logging" Checkbox, set the log store to the default location " /var/squid/logs " rotate your logs every 7 days, set your proxy port to port number 3128 ( remember this port number as we will need it when we set the firewall rules up), add a visible hostname and an administrator e-mail address, and set your required language, then click on the Save button.

Next click on the "Cache Mgmt" tab, by default the Hard Disk Cache Size is set to 100mb, I would strongly recommend that you increase this, now it will depend on how big your HDD is that will determine how big you make it, but also keep in mind the more people using this proxy the more space you need to allocate, after that is set leave the rest of the page at default settings and click on Save.

Click on the Access Control Tab next, in the allowed subnets field type in your required subnets, (eg: 192.168.255.0/24); keep in mind that if you have more then one subnet accessing this proxy you need to specify each subnet on its own line.

Scroll down until you see "ACL Safeports and ACL SSLPorts" in these fields you will have to type in what ports you want open threw your proxy server, you will need to do some research on this, find out what applications are being used on this network, and specifiy your required porst effectlive. For this howto I am just going to use port 80 and 443 as these are the only too ports that I need to see if you have web pages and for some basic Internet applications to work, if you want other applications to have access to the Internet, do some reading on what ports are required and then update the pfsense box, once set click on Save.

Now for the people who wish to throttle the speed of which users get access to the Internet, click on the Trafic Mgmt tab, and set (in kilobytes) what speed you want to restrict users too, click on Save once done.

 

Configuring SquidGuard Filtering

Now thats is the proxy server configured, next we are going to configure SquidGuard, click on the Services menu and select the Proxy Filter button, tick the following 3 check boxes "Enable", "Enable GUI Log" and "Enable Log" then click the Save button, once the page has reloaded click on apply and then confirm that the Squidguard service is running by making sure the Squidguard status is set to STARTED.

Stay on the General Settings Tab and scroll down to the blacklist area and tick the box that says Enable Blacklist, and in the blacklist URL type the following http://www.shallalist.de/Downloads/shallalist.tar.gz, and click Save; this is so we can download the blacklist data. Click on the Black list tab and add the save the same URL as before to the Update Address and click on Download. Wait for the process to complete.

Next click on the common ACL tab, and the click on Target Rules List, and select every rule that you want block or allow, then add a message to the Proxy Denied Error Field, I am currently just using the default one they suggest (look at sceenshot for example), leave redirect mode at Int Error page so it will use the message you type in, tick the Log Check box then click on Save.

Once that is set up test your proxy and make sure everything is working. I hope this has been a help to you, and keep an eye out for the next tutorial which will be implenting Captive Portal to this setup.

Share this page:

24 Comment(s)

Add comment

Please register in our forum first to comment.

Comments

By: Ricky Kua

When you mentioned "set your proxy port to port number 3128 ( remember this port number as we will need it when we set the firewall rules up)", there are no screenshots added as to what rules should you set in the firewall.

 As for "ACL Safeports and ACL SSLPorts", do we need to add in port 53 for resolving of URL?

By: Anonymous

Sorry to say this. why don't you start from the beginning how to configure. Include on your tutorials simple Network diagrams + the following list of configurations. Otherwise it is a waste of time reading your tutorials. 1. NIC configuration 2.Pfsense WAN and LAN Config 3. The Firewall Rules 4. Proxy server config. 5. SquidGuard Config. You have said in the beginning " When you mentioned "set your proxy port to port number 3128 ( remember this port number as we will need it when we set the firewall rules up)", there are no screenshots added as to what rules should you set in the firewall." . It seams you don't know the firewall part configurations. Because screen shots are easy to put one your tutorials. It is a matter of copy and paste. I am Sory for my words. I am really looking to solve this problem. But never came with a simple, step by step configuration to configure 1. Pfsense to work just for internet access without proxy and filtering. a. adding a firewall. 2. Pfsense and Proxy only. 3. Add on the above filtering capability (SquidGuard). 4. Testing your configurations. 5. Reporting using Light Squid. I believe the above steps are a fully functional firewall applications only if they are properly configured and tested.

By: Paul

In order to manage PFSense or any other network appliance, one will need a bit of prerequisite knowledge of networking. If you don't have the basics down (such as configuring proxy settings in IE) and you followed a tutorial to setup a full blown PFSense install from scratch - if something breaks then you will be completely lost.

By:

Thank you for this!

By: Anonymous

Thank you for your nice tutorial. Do you also know how to configure squid as https proxy in non transparent mode?

By: Anonymous

Pfsense 2.0.1 latest build. Everything working great with Squid, squidguard,and Muli-wan.

Trying to rewrite youtbe.com -> http://youtube.com/?edufilter=zyshXjlHxWvXP-I9x3Wqjg

Should be easy? Not sure I understand rewrite vs. redirect as the best solution.

Added target category youtube
block youtube in ACL
Have rewrite defined
click on apply and also restarted squid and squidguard services

I will keep trying
At one point using redirect only was getting it to redirect but getting a redirect loop in the client browser.

Have not found any step by step how to do a simple redirect.

Any advice is appreciated.

International school in Chiang Mai Thailand

By: azeemmasghar786

I see this post again because for the first when see then setting required to me.I have a knowledge about PFSense that given below and below link.

Pfsense is a FreeBSD based Open source Firewall Router. Pfsense is basically using as a gateway device (firewall and router). But it can be expandable as many Server services like DNS, DHCP, and Proxy Servers. Here I submit step by step procedure to install a Pfsense based Proxy server.

Proxy Servers

By:

Hi guys,

I am using pfsense on my network and working good but have one problem that sometime pfsense not open sites on one click when we hit 3,4 or 5 times then open.

Any one know what reason and solution plz share with me. Ntop,Squid and squid guard also installed in pfsense.

thanks

By:

you need to mention the transperant proxy option

By: Gerardo Jacinto

Working if reboot ?

By: Toshky

Any one solved this issue with clickinf 2 or 3 times and the website works?

By: Norman

Hi to Toshky and other people with the same problem. Your problem seem to be that NAT didnt work with your proxy. Im not an expert but i know this problem from an older router (linksys RV082). I blocked all ports from 1024-65535 on my old router because of filesharing in the past (i share 150mbit line with like 50 people in a studens flat).

After i changed to the Pfsense the problem with 2-5 times-hitting-for-full-load was solved. And im sure its the NAT of pfsense. Its portmapping (hope i dont talk wron things now). I used TcpView on Windows to see what ports are opend when i start a browser (Firefox and Chrome). And there are opend random ports e.g. tcp-54875 to tcp-54905 which try to reach port 80 on the destination side. Problem could be that these high ports opend randomly. So i think you problem is that the proxy block the mapping to port 80 on the server side (destination). Hope my post help you, sorry for my lack of english. Greets

By: Ajay Kumar

I have setup 2.2.4 v. pfsense squid proxy  separate  machine  I set all as you mentioned above but when I restart machine  squid proxy stopped .    this service start when I upload again blacklist url.

By: Ajay Kumar

I have setup 2.2.4 v. pfsense squid proxy  separate  machine  I set all as you mentioned above but when I restart machine  squid proxy stopped . this service start when I upload again blacklist url. Please help

 

By: Cariño Brutal
By: adrenalinic

I can use this proxy server , to serve different server on my lan from the same wan port 80 with hostname based settings?

By: Shelton Dickson

Hey guys, if anyone on this thread is a pfSense expert I'd like to hire you to help me with a new pfSense instance I want to setup with failover internet, traffic shaping and possibly squid.  If interested I'm available to get electronic messages; shelton a-t dickson resources daught commericial.

By: rogerbc

Buen día... No prodrian hacer un tutorial con manejo de horarios con el proxy, la verdad he intentado con el  Proxy filter SquidGuard y  no me sale, no tengo activo proxy transparente, he buscado en toda la internet y no encuentro un tutorial completo al respecto. Espero me ayuden, mil gracias.

By: narendra

Hi,

 

I have installed the pfsense and squidguard and squid proxy.But on my network whats app is not working..Can some one help me to sort this issue.I tried to check the port which is used by whats app 443,5222,52223,52228,4244,5242.

I tried to open the ports on firewall but no sccess.I don't know how to configure the right parameters.

 

Please help and thanks in advance.

 

Narendra

 

By: Zalatan

Hello everyone!!! I have configured the proxy server. It's all okie but I face some problems. If user don't put the proxy, all user can access the internet through pfsense without blocking any web site. How can I block the user that don't put the proxy at browser? Please send email to me.

Thanks.

By: morino

What if you want to store pfsense cache to a network attached storage(NAS) or to a shared folder from your network. Is this possible? I need help for that setup.

By: Rajat Khandelwal

hi..I have installed Squid and SquidGuard. But its blocking our whole sites. Then i uninstalled these pacakages because its stucking our enviornment. Now as i install again it blocks all. So how can i stop this without stuck.

 

By: shetu

I set squid proxy on lan. My squid configration has problem and I can not log in pfsense webgui. It said ip not found. Is there any way to access pfsense webgui without resotre pfsense from backup?

By: joshua

i am having problem getting the squidguard to work. i followed all of the steps and when testing the blocked categories. it is still being allowed through. what am i missing? is there other settings that i need to configure before completing these steps?

thank you