个人工具

“UbuntuHelp:SquidGuard”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
 
(未显示同一用户的9个中间版本)
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/SquidGuard}}
 
{{From|https://help.ubuntu.com/community/SquidGuard}}
 
{{Languages|UbuntuHelp:SquidGuard}}
 
{{Languages|UbuntuHelp:SquidGuard}}
 
+
<<Include(Tag/StyleCleanup)>>
 
+
<<Include(Tag/NeedsExpansion)>>
This howto describes the process of setting up Squid and SquidGuard for the purpose of internet content filtering.
+
This howto describes the process of setting up Squid and SquidGuard for the purpose of internet content filtering. It is revised for Karmic 9.10 and Squid 2.7 in the repositories with it. Older versions work a little different.
 
+
 
There are many different configuration options available.  The settings used in this howto are very simplistic and may not suit your needs.  In any case it will get you up and running.  More complex settings can be added afterwards.
 
There are many different configuration options available.  The settings used in this howto are very simplistic and may not suit your needs.  In any case it will get you up and running.  More complex settings can be added afterwards.
 
 
=== Introduction ===
 
=== Introduction ===
 
Squid is a proxy server, HTTP requests are sent to Squid instead of being sent directly to the internet.
 
Squid is a proxy server, HTTP requests are sent to Squid instead of being sent directly to the internet.
 
 
SquidGuard is a web filter plugin for Squid which is used to restrict access to domains/URLs based upon access control lists. When SquidGuard receives a request it is examined and will either allow the page to load or will redirect to a predetermined “block” page or script.  SquidGuard makes its decisions based upon the use of access control lists and databases of domains, URLs, and expressions.
 
SquidGuard is a web filter plugin for Squid which is used to restrict access to domains/URLs based upon access control lists. When SquidGuard receives a request it is examined and will either allow the page to load or will redirect to a predetermined “block” page or script.  SquidGuard makes its decisions based upon the use of access control lists and databases of domains, URLs, and expressions.
 
 
=== Installation ===
 
=== Installation ===
Make sure you have the Universe repository enabled
+
If you'd like to host your own block page, install apache2
 
+
Install Squid and SquidGuard
+
 
<pre><nowiki>
 
<pre><nowiki>
sudo apt-get install squid squidguard
+
sudo apt-get install apache2
 
</nowiki></pre>
 
</nowiki></pre>
 
+
Install [[UbuntuHelp:Squid|Squid]]
If you don't have a web server installed
+
Make sure you have the Universe repository enabled
 +
Install SquidGuard
 
<pre><nowiki>
 
<pre><nowiki>
sudo apt-get install apache2
+
sudo apt-get install squidguard
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Key File Locations ===
 
=== Key File Locations ===
 
 
 
{|border="1" cellspacing="0"
 
{|border="1" cellspacing="0"
|<rowstyle="background-color: #FFFFDD;"> '''File''' || '''Purpose'''  
+
| '''File''' || '''Purpose'''  
 
|-
 
|-
 
| /etc/squid/squid.conf || Squid configuration file  
 
| /etc/squid/squid.conf || Squid configuration file  
第41行: 第33行:
 
| /var/log/squid/squidGuard.log || SquidGuard log file  
 
| /var/log/squid/squidGuard.log || SquidGuard log file  
 
|}
 
|}
 
 
=== Squid Configuration ===
 
=== Squid Configuration ===
 
The squid.conf file is huge, with hundreds of options.  In this howto we will only be changing a few settings.
 
The squid.conf file is huge, with hundreds of options.  In this howto we will only be changing a few settings.
Open the squid.conf file for editing
+
Open the squid.conf file for editing using sudo and a text editor. You can use graphical sudo (gksudo) and gedit for this task, or `sudo nano`
 
<pre><nowiki>
 
<pre><nowiki>
 
gksudo gedit /etc/squid/squid.conf
 
gksudo gedit /etc/squid/squid.conf
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Turn on line numbers in gedit (Edit > Preferences)
 
Turn on line numbers in gedit (Edit > Preferences)
 
+
Find the `http_port tag`. By default it reads `# http_port 3128` This is the default port that Squid will listen on for requests.  If you want to change it, uncomment the line and set the correct port.  If you want Squid to listen only on one specific NIC, you can also change the IP address – for example `192.168.1.5:3128`
Find the `http_port tag` (should be on or around line 53, its currently Line 89 in 7.10 release) By default it reads `# http_port 3128` This is the default port that Squid will listen on for requests.  If you want to change it, uncomment the line and set the correct port.  If you want Squid to listen only on one specific NIC, you can also change the IP address – for example `192.168.1.5:3128`
+
Now we need to tell squid where squidguard is.  Find the `TAG: url_rewrite_program` heading. There is no default setting here, so we need to add our own line:
 
+
Now we need to tell squid where squidguard is.  Find the redirect_program tag (should be around line 1028) There is no default setting here, so we need to add our own line below the redirect_program description:
+
 
<pre><nowiki>
 
<pre><nowiki>
redirect_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
+
url_rewrite_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
 
</nowiki></pre>
 
</nowiki></pre>
 
+
Now we'll setup who is allowed access to the proxy. Find the `TAG: http_access` heading and below it the 'INSERT YOUR OWN RULE(S) HERE...' Uncomment the line
OK, now we'll setup who is allowed access to the proxy. Find the http_access section (should start around line 1860,line 2589 in 7.04 and line 2608 in 7.10 release) Uncomment these 2 lines:
+
<pre><nowiki>
 +
#http_access allow localnet
 +
</nowiki></pre>
 +
And we need to define who is in the localnet. Find the `TAG: ACL` heading. Way down you will find
 
<pre><nowiki>
 
<pre><nowiki>
#http_access allow our_networks
 
 
</nowiki></pre>
 
</nowiki></pre>
 
+
You'll need to uncomment that line if necessary, and change that IP address to match your network. /24 signifies the block of IP addresses from 192.168.1.0 to 192.168.1.255. You can also delete any extra IP blocks out of the examples you are not using.
You'll need to change 192.168.1.0/24 to match your network.  Unless you have a second subnet you can delete 192.168.2.0/24
+
 
+
 
if you get a startup error :-
 
if you get a startup error :-
 
'FATAL: Could not determine fully qualified hostname. Please set visible_hostname'
 
'FATAL: Could not determine fully qualified hostname. Please set visible_hostname'
you will also need to modify the visible_hostname tag (around line 2909 in 7.10) to:-
+
you will also need to add a visible_hostname tag, or uncomment it if you can find one in there already :-
 
+
NOTE: this needs to be added as a new line in 7.10 (not sure about other releases) as there is no commented out line re-introduce.
+
 
+
 
<pre><nowiki>
 
<pre><nowiki>
 
visible_hostname localhost
 
visible_hostname localhost
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Save the file and close gedit
 
Save the file and close gedit
 
 
=== SquidGuard Configuration ===
 
=== SquidGuard Configuration ===
 
 
For the purposes of this howto we will use a very simple configuration for SquidGuard, with only one category of sites that we want to block.  More complex and useful configurations are explained on the official SquidGuard site.
 
For the purposes of this howto we will use a very simple configuration for SquidGuard, with only one category of sites that we want to block.  More complex and useful configurations are explained on the official SquidGuard site.
 
 
First we will create a list of domains we want to block
 
First we will create a list of domains we want to block
 
<pre><nowiki>
 
<pre><nowiki>
sudo mkdir /var/lib/squidguard/db/weapons/
+
sudo mkdir /var/lib/squidguard/db/ads/
gksudo gedit /var/lib/squidguard/db/weapons/domains
+
gksudo gedit /var/lib/squidguard/db/ads/domains
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Insert the following, then save the file.
 
Insert the following, then save the file.
 
<pre><nowiki>
 
<pre><nowiki>
israeli-weapons.com
+
doubleclick.net
uws.com
+
flashbannernow.com
glock.com
+
addispenser.com
 
</nowiki></pre>
 
</nowiki></pre>
 
+
proxy must own the db, config, and log files
proxy must own all the db files
+
 
<pre><nowiki>
 
<pre><nowiki>
 +
sudo chown proxy:proxy /etc/squid/squidGuard.conf
 
sudo chown -R proxy:proxy /var/lib/squidguard/db
 
sudo chown -R proxy:proxy /var/lib/squidguard/db
 +
sudo chown -R proxy:proxy /var/log/squid/
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Now we edit our squidGuard.conf file.
 
Now we edit our squidGuard.conf file.
 
<pre><nowiki>
 
<pre><nowiki>
 
gksudo gedit /etc/squid/squidGuard.conf
 
gksudo gedit /etc/squid/squidGuard.conf
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Delete everything after the line:  `logdir /var/log/squid`
 
Delete everything after the line:  `logdir /var/log/squid`
 
 
Replace the deleted text with the following:
 
Replace the deleted text with the following:
 
<pre><nowiki>
 
<pre><nowiki>
dest weapons {
+
dest ads {
domainlist weapons/domains
+
domainlist ads/domains
 
}
 
}
  
 
acl {
 
acl {
 
default {
 
default {
pass !weapons
+
pass !ads all
 
redirect http://yourip/block.html
 
redirect http://yourip/block.html
 
}
 
}
 
}
 
}
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Time to compile the domains list into a database
 
Time to compile the domains list into a database
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo squidGuard –C all
 
sudo squidGuard –C all
 
</nowiki></pre>
 
</nowiki></pre>
 
+
Create a page to redirect blocked requests to. If you can write raw html in a text editor do
Create a page to redirect blocked requests to
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo nano /var/www/block.html
 
sudo nano /var/www/block.html
 
</nowiki></pre>
 
</nowiki></pre>
REMEMBER, this 'block.html' page points to the default web servers directories, probably Apache as installed above. You must have a web server running on the machine for this to work! or you get an error message with the redirect on the client's PC. You could also redirect it to another server running a web server and let it host the error pages.
+
If not, use a WYSIWYG editor, and copy the files into the /var/www directory. REMEMBER, this 'block.html' page points to the default web servers directories, probably Apache as installed above. You must have a web server running on the machine for this to work! Or you get an error message with the redirect on the client's PC. You could also redirect it to another server running a web server and let it host the error pages.  
 
Put whatever message you want in this page.
 
Put whatever message you want in this page.
 
 
Fire up squid and squidguard
 
Fire up squid and squidguard
 
+
<pre><nowiki>
If it is not running you can use :-
+
 
+
 
sudo /etc/init.d/squid start|restart|stop
 
sudo /etc/init.d/squid start|restart|stop
 
+
sudo squid -k reconfigure
then this will work
+
<pre><nowiki>
+
squid -k reconfigure
+
 
</nowiki></pre>
 
</nowiki></pre>
 
+
If you change your block page after you have visited it, Squid will have cached it, and will not refetch the new version until its default cache expiration time has been reached (generally 1 week). If you'd like to purge the Squid cache to fetch your revised block page, see the [[UbuntuHelp:Squid|Squid Page.]]
 
=== Testing ===
 
=== Testing ===
 
Change all your client browser settings to use your new proxy.
 
Change all your client browser settings to use your new proxy.
 
 
If you are using Firefox, this is done via Edit > Preferences > Connection Settings.  Enter the IP address of your new Proxy server, and the port number you previously configure.
 
If you are using Firefox, this is done via Edit > Preferences > Connection Settings.  Enter the IP address of your new Proxy server, and the port number you previously configure.
 
 
The 3 domains we added to our domains file should be blocked.
 
The 3 domains we added to our domains file should be blocked.
 
 
=== Troubleshooting ===
 
=== Troubleshooting ===
 
It is fairly common to run into problems.  99% of the time, it comes down to permissions or ownership of files.
 
It is fairly common to run into problems.  99% of the time, it comes down to permissions or ownership of files.
 
 
First of all, lets check what processes are running.
 
First of all, lets check what processes are running.
 
<pre><nowiki>
 
<pre><nowiki>
 
ps -e | grep squid
 
ps -e | grep squid
 
</nowiki></pre>
 
</nowiki></pre>
 
+
You should see 1 or 2 squid processes, and 5 squidGuard processes.  If not then lets restart Squid. If you previously had an abort when you were trying to reconfigure, then squid crashed and you need to start it again, else skip to the reconfigure step...
You should see 1 or 2 squid processes, and 5 squidGuard processes.  If not then lets restart Squid.
+
 
<pre><nowiki>
 
<pre><nowiki>
squid -k reconfigure
+
sudo /etc/init.d/squid start
 +
sudo squid -k reconfigure
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Again, check what processes are running.
 
Again, check what processes are running.
 
 
Still having problems?  Check what's being written to the squidGuard.log file
 
Still having problems?  Check what's being written to the squidGuard.log file
 
<pre><nowiki>
 
<pre><nowiki>
tail /var/log/squid/squidGuard.log
+
sudo tail /var/log/squid/squidGuard.log
 
</nowiki></pre>
 
</nowiki></pre>
 
+
You might see something here that mentions that SquidGuard has gone into emergency mode. You also might see a generic error like 'Error db_open: Permission denied'. If either is the case, the following may help.
You might see something here that mentions that SquidGuard has gone into emergency mode. If this is the case, the following may help.
+
It is often useful to run squidGuard directly from the command line to see what it is doing.  An example is:
 
+
<pre><nowiki>
 +
sudo echo "http://www.ubuntu.com {client ip address}/ - - GET" | squidGuard -d -c /etc/squid/squidGuard.conf
 +
</nowiki></pre>
 +
You can change the URL to whatever you'd like to test for access or denial. The IP address is the address of the computer you want to simulate as surfing the net from.
 
==== SquidGuard Emergency Mode ====
 
==== SquidGuard Emergency Mode ====
 
When squidguard starts up, it tries to do the following things:
 
When squidguard starts up, it tries to do the following things:
* Read the configuration file
+
<ol><li>Read the configuration file
* Read the database or text files with the lists of sites to block
+
</li><li>Read the database or text files with the lists of sites to block
* Write to its log file
+
</li><li>Write to its log file</li></ol>
  
 
If it fails to do any of these things, it goes into "emergency mode"; effectively this means that it doesn't do anything.
 
If it fails to do any of these things, it goes into "emergency mode"; effectively this means that it doesn't do anything.
 
 
The following problems will cause either 1, 2, or 3 to fail:
 
The following problems will cause either 1, 2, or 3 to fail:
 
 
* The configuration file is not in the place specified in squid.conf. Make sure squidguard is started with this line in squid.conf:
 
* The configuration file is not in the place specified in squid.conf. Make sure squidguard is started with this line in squid.conf:
 
<pre><nowiki>
 
<pre><nowiki>
 
redirect_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
 
redirect_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
 
</nowiki></pre>
 
</nowiki></pre>
 
 
* The database files are not in the place defined in squidGuard.conf. Make sure the following is one of the first lines in squidGuard.conf:
 
* The database files are not in the place defined in squidGuard.conf. Make sure the following is one of the first lines in squidGuard.conf:
 
<pre><nowiki>
 
<pre><nowiki>
 
/var/lib/squidguard/db
 
/var/lib/squidguard/db
 
</nowiki></pre>
 
</nowiki></pre>
 
+
* The ownership of the configuration file, logfiles, or blacklist files is not correct. These files should be owned by the user and group under which the squid program runs. In the case of Ubuntu, that user is `proxy` (I think this is no longer accurate. To get squid to read the domain and db files, I had to set the permissions to 777, setting to 775 would not work. While unsafe, this indicates squid is not running as user 'proxy'. I will edit this if I can determine the actual user name.)
* The ownership of the configuration file, logfiles, or blacklist files is not correct. These files should be owned by the user and group under which the squid program runs. In the case of Ubuntu, that user is `proxy`
+
 
+
 
* To make sure the ownership is correct, run the following commands:
 
* To make sure the ownership is correct, run the following commands:
 
<pre><nowiki>
 
<pre><nowiki>
chown proxy:proxy /etc/squid/squidGuard.conf
+
sudo chown proxy:proxy /etc/squid/squidGuard.conf
 
+
sudo chown -R proxy:proxy /var/lib/squidguard/db
chown -R proxy:proxy /var/lib/squidguard/db
+
sudo chown -R proxy:proxy /var/log/squid/
 
+
chown -R proxy:proxy /var/log/squid/
+
 
</nowiki></pre>
 
</nowiki></pre>
 
 
* The permissions of the configuration file, logfiles, or blacklist files is not correct. Set the permissions as follows:
 
* The permissions of the configuration file, logfiles, or blacklist files is not correct. Set the permissions as follows:
 
<pre><nowiki>
 
<pre><nowiki>
 
chmod 644 /etc/squid/squidGuard.conf
 
chmod 644 /etc/squid/squidGuard.conf
 
 
chmod -R 640 /var/lib/squidguard/db
 
chmod -R 640 /var/lib/squidguard/db
 
 
chmod -R 644 /var/log/squid/
 
chmod -R 644 /var/log/squid/
 
 
find /var/lib/squidguard/db -type d -exec chmod 755 \{\} \; -print
 
find /var/lib/squidguard/db -type d -exec chmod 755 \{\} \; -print
 
 
chmod 755 /var/log/squid
 
chmod 755 /var/log/squid
 
</nowiki></pre>
 
</nowiki></pre>
 
 
* There is a line-end before the "{" character in source or dest lists:
 
* There is a line-end before the "{" character in source or dest lists:
 
 
Bad:
 
Bad:
 
<pre><nowiki>
 
<pre><nowiki>
dest weapons
+
dest ads
{
+
  {
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Good:
 
Good:
 
<pre><nowiki>
 
<pre><nowiki>
dest weapons {
+
dest ads {
 
</nowiki></pre>
 
</nowiki></pre>
 
+
After fixing these problems issue the command to restart with the new settings
 
+
<pre><nowiki>
After fixing these problems issue the command : `squid –k reconfigure` To restart Squid and SquidGuard with the new settings.
+
sudo squid –k reconfigure
You also need to create Swap directories with 'squid -z'
+
</nowiki></pre>
 +
You also need to create Swap directories with 'sudo squid -z'
 
If you still have errors you can start squid with 'squid -NCd1' which starts in debug/verbose mode which will show any errors. As above, the most likely will be permissions.
 
If you still have errors you can start squid with 'squid -NCd1' which starts in debug/verbose mode which will show any errors. As above, the most likely will be permissions.
 
 
=== External Links ===
 
=== External Links ===
 
*[http://www.squid-cache.org Official Squid site]
 
*[http://www.squid-cache.org Official Squid site]
 
*[http://www.squidguard.org/ Official SquidGuard site]
 
*[http://www.squidguard.org/ Official SquidGuard site]
 
*[http://www.maynidea.com/squidguard/faq-plus.html SquidGuard FAQ]
 
*[http://www.maynidea.com/squidguard/faq-plus.html SquidGuard FAQ]
*[http://www.squidguard.org/blacklist/ Downloadable blacklists]
+
*[http://www.squidguard.org/blacklists.html/ Downloadable blacklists]
 
+
 
=== In Need Of Further Documentation ===
 
=== In Need Of Further Documentation ===
 
 
* More sophisticated configurations (source groups, time settings, more destination groups, urls, expressions)
 
* More sophisticated configurations (source groups, time settings, more destination groups, urls, expressions)
 
* Using diff files
 
* Using diff files
 
* Using Ident
 
* Using Ident
 
+
----
[[category:CategoryDocumentation]] [[category:CategoryCleanup]] [[category:CategoryNeedsExpansion]]
+
[[category:CategoryNetworking]] [[category:CategorySecurity]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2010年5月20日 (四) 00:16的最新版本

<<Include(Tag/StyleCleanup)>> <<Include(Tag/NeedsExpansion)>> This howto describes the process of setting up Squid and SquidGuard for the purpose of internet content filtering. It is revised for Karmic 9.10 and Squid 2.7 in the repositories with it. Older versions work a little different. There are many different configuration options available. The settings used in this howto are very simplistic and may not suit your needs. In any case it will get you up and running. More complex settings can be added afterwards.

Introduction

Squid is a proxy server, HTTP requests are sent to Squid instead of being sent directly to the internet. SquidGuard is a web filter plugin for Squid which is used to restrict access to domains/URLs based upon access control lists. When SquidGuard receives a request it is examined and will either allow the page to load or will redirect to a predetermined “block” page or script. SquidGuard makes its decisions based upon the use of access control lists and databases of domains, URLs, and expressions.

Installation

If you'd like to host your own block page, install apache2

sudo apt-get install apache2

Install Squid Make sure you have the Universe repository enabled Install SquidGuard

sudo apt-get install squidguard

Key File Locations

File Purpose
/etc/squid/squid.conf Squid configuration file
/var/log/squid/access.log Squid access log file
/etc/squid/squidGuard.conf SquidGuard configuration file
/var/lib/squidguard/db SquidGuard database files
/var/log/squid/squidGuard.log SquidGuard log file

Squid Configuration

The squid.conf file is huge, with hundreds of options. In this howto we will only be changing a few settings. Open the squid.conf file for editing using sudo and a text editor. You can use graphical sudo (gksudo) and gedit for this task, or `sudo nano`

gksudo gedit /etc/squid/squid.conf

Turn on line numbers in gedit (Edit > Preferences) Find the `http_port tag`. By default it reads `# http_port 3128` This is the default port that Squid will listen on for requests. If you want to change it, uncomment the line and set the correct port. If you want Squid to listen only on one specific NIC, you can also change the IP address – for example `192.168.1.5:3128` Now we need to tell squid where squidguard is. Find the `TAG: url_rewrite_program` heading. There is no default setting here, so we need to add our own line:

url_rewrite_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf

Now we'll setup who is allowed access to the proxy. Find the `TAG: http_access` heading and below it the 'INSERT YOUR OWN RULE(S) HERE...' Uncomment the line

#http_access allow localnet

And we need to define who is in the localnet. Find the `TAG: ACL` heading. Way down you will find


You'll need to uncomment that line if necessary, and change that IP address to match your network. /24 signifies the block of IP addresses from 192.168.1.0 to 192.168.1.255. You can also delete any extra IP blocks out of the examples you are not using. if you get a startup error :- 'FATAL: Could not determine fully qualified hostname. Please set visible_hostname' you will also need to add a visible_hostname tag, or uncomment it if you can find one in there already :-

visible_hostname localhost

Save the file and close gedit

SquidGuard Configuration

For the purposes of this howto we will use a very simple configuration for SquidGuard, with only one category of sites that we want to block. More complex and useful configurations are explained on the official SquidGuard site. First we will create a list of domains we want to block

sudo mkdir /var/lib/squidguard/db/ads/
gksudo gedit /var/lib/squidguard/db/ads/domains

Insert the following, then save the file.

doubleclick.net
flashbannernow.com
addispenser.com

proxy must own the db, config, and log files

sudo chown proxy:proxy /etc/squid/squidGuard.conf
sudo chown -R proxy:proxy /var/lib/squidguard/db
sudo chown -R proxy:proxy /var/log/squid/

Now we edit our squidGuard.conf file.

gksudo gedit /etc/squid/squidGuard.conf

Delete everything after the line: `logdir /var/log/squid` Replace the deleted text with the following:

dest ads {
	domainlist ads/domains
}

acl {
	default {
		pass !ads all
		redirect http://yourip/block.html
	}
}

Time to compile the domains list into a database

sudo squidGuard –C all

Create a page to redirect blocked requests to. If you can write raw html in a text editor do

sudo nano /var/www/block.html

If not, use a WYSIWYG editor, and copy the files into the /var/www directory. REMEMBER, this 'block.html' page points to the default web servers directories, probably Apache as installed above. You must have a web server running on the machine for this to work! Or you get an error message with the redirect on the client's PC. You could also redirect it to another server running a web server and let it host the error pages. Put whatever message you want in this page. Fire up squid and squidguard

sudo /etc/init.d/squid start|restart|stop
sudo squid -k reconfigure

If you change your block page after you have visited it, Squid will have cached it, and will not refetch the new version until its default cache expiration time has been reached (generally 1 week). If you'd like to purge the Squid cache to fetch your revised block page, see the Squid Page.

Testing

Change all your client browser settings to use your new proxy. If you are using Firefox, this is done via Edit > Preferences > Connection Settings. Enter the IP address of your new Proxy server, and the port number you previously configure. The 3 domains we added to our domains file should be blocked.

Troubleshooting

It is fairly common to run into problems. 99% of the time, it comes down to permissions or ownership of files. First of all, lets check what processes are running.

ps -e | grep squid

You should see 1 or 2 squid processes, and 5 squidGuard processes. If not then lets restart Squid. If you previously had an abort when you were trying to reconfigure, then squid crashed and you need to start it again, else skip to the reconfigure step...

sudo /etc/init.d/squid start
sudo squid -k reconfigure

Again, check what processes are running. Still having problems? Check what's being written to the squidGuard.log file

sudo tail /var/log/squid/squidGuard.log

You might see something here that mentions that SquidGuard has gone into emergency mode. You also might see a generic error like 'Error db_open: Permission denied'. If either is the case, the following may help. It is often useful to run squidGuard directly from the command line to see what it is doing. An example is:

sudo echo "http://www.ubuntu.com {client ip address}/ - - GET" | squidGuard -d -c /etc/squid/squidGuard.conf

You can change the URL to whatever you'd like to test for access or denial. The IP address is the address of the computer you want to simulate as surfing the net from.

SquidGuard Emergency Mode

When squidguard starts up, it tries to do the following things:

  1. Read the configuration file
  2. Read the database or text files with the lists of sites to block
  3. Write to its log file

If it fails to do any of these things, it goes into "emergency mode"; effectively this means that it doesn't do anything. The following problems will cause either 1, 2, or 3 to fail:

  • The configuration file is not in the place specified in squid.conf. Make sure squidguard is started with this line in squid.conf:
redirect_program /usr/bin/squidGuard –c /etc/squid/squidGuard.conf
  • The database files are not in the place defined in squidGuard.conf. Make sure the following is one of the first lines in squidGuard.conf:
/var/lib/squidguard/db
  • The ownership of the configuration file, logfiles, or blacklist files is not correct. These files should be owned by the user and group under which the squid program runs. In the case of Ubuntu, that user is `proxy` (I think this is no longer accurate. To get squid to read the domain and db files, I had to set the permissions to 777, setting to 775 would not work. While unsafe, this indicates squid is not running as user 'proxy'. I will edit this if I can determine the actual user name.)
  • To make sure the ownership is correct, run the following commands:
sudo chown proxy:proxy /etc/squid/squidGuard.conf
sudo chown -R proxy:proxy /var/lib/squidguard/db
sudo chown -R proxy:proxy /var/log/squid/
  • The permissions of the configuration file, logfiles, or blacklist files is not correct. Set the permissions as follows:
chmod 644 /etc/squid/squidGuard.conf
chmod -R 640 /var/lib/squidguard/db
chmod -R 644 /var/log/squid/
find /var/lib/squidguard/db -type d -exec chmod 755 \{\} \; -print
chmod 755 /var/log/squid
  • There is a line-end before the "{" character in source or dest lists:

Bad:

dest ads
   {

Good:

dest ads {

After fixing these problems issue the command to restart with the new settings

sudo squid –k reconfigure

You also need to create Swap directories with 'sudo squid -z' If you still have errors you can start squid with 'squid -NCd1' which starts in debug/verbose mode which will show any errors. As above, the most likely will be permissions.

External Links

In Need Of Further Documentation

  • More sophisticated configurations (source groups, time settings, more destination groups, urls, expressions)
  • Using diff files
  • Using Ident