Setting Up A Squid-Proxy Server: Abstract
Setting Up A Squid-Proxy Server: Abstract
Setting Up A Squid-Proxy Server: Abstract
http://linuxfocus.org
Abstract:
Linux has become a synonym for Networking. It is being used both in
office and home environments as file, print, e-mail, application server
and also it is increasingly being used as Proxy server.
A proxy-server provides Internet access to different users at same time
i.e. by sharing a single Internet connection. A good proxy server also
by D.S. Oberoi
provides for caching of the requests, which helps to access data from
<ds_oberoi/at/yahoo.com>
local resources rather fetching the data from web thus reducing access
time and bandwidth. Squid is one such software which supports proxy,
About the author:
caching of HTTP, ftp, gopher, etc.. It also supports SSL, access controls,
D.S. Oberoi lives in Jammu, caching of DNS and maintains a full log of all the requests. Squid is as
India and has currently
well available for Windows-NT from Logi Sense.
problems to connect to the
internet due to the ongoing The focus of this article is to give basic guidelines of setting up a proxy
political tentions.
server and ways of providing controlled access to users.
_________________ _________________ _________________
Is Squid Installed ?
Squids rpm comes bundled with the RedHat 7.1 and is installed automatically with the Network OS
installation option. One can check whether it is installed or not with the following rpm command:
rpm -q squid
The latest version of Squid can always be obtained from the Squid Homepage and other mirror sites.
Squid can be installed on the desired system by using the following rpm command:
rpm -ivh squid-2.3.STABLE4-10.i386.rpm
Configuring Squid
The working and behavior of the Squid is controlled by the configuration details given in its
configuration file i.e. squid.conf; this file is usually found in directory the /etc/squid. The configuration
file squid.conf is a mile long affair, it just keeps on going for pages after pages, but the good point is that
it has all options listed out clearly with explanation.
The first thing that has to be edited is the http_port, which specifies the socket address where the Squid
will listen to the clients request; by default this is set to 3128, but can be changed to a user defined
value also. Along with the port value, one can also give the IP address of the machine on which Squid is
running ; this can be changed to:
http_port 192.168.0.1:8080
With above declaration Squid is bounded to the IP address of 192.168.0.1 and port address of 8080. Any
port address can be given; but make sure that no other application is running at set port value. With
similar configuration lines other services request ports can also be set.
Access Control
Through access control features the access to Internet can be controlled in terms of access during
particular time interval, caching, access to particular or group of sites, etc.. Squid access control has two
different components i.e. ACL elements and access list. An access list infact allows or deny the access to
the service.
A few important type of ACL elements are listed below
src : Source i.e. clients IP addresses
dst : Destination i.e. servers IP addresses
srcdomain : Source i.e. clients domain name
dstdomain : Destination i.e. servers domain name
time : Time of day and day of week
url_regex : URL regular expression pattern matching
urlpath_regex: URL-path regular expression pattern matching, leaves out the protocol and
hostname
proxy_auth : User authentication through external processes
maxconn : Maximum number of connections limit from a single client IP address
To apply the controls, one has to first define set of ACL and then apply rules on them. The format of an
ACL statement is
acl acl_element_name type_of_acl_element values_to_acl
Note :
1. acl_element_name can be any user defined name given to an ACL element.
2. No two ACL elements can have the same name.
3. Each ACL consists of list of values. When checking for a match, the multiple values use OR logic.
In other words, an ACL element is matched when any one of its values matches.
4. Not all of the ACL elements can be used with all types of access lists.
5. Different ACL elements are given on different lines and Squid combines them together into one
list.
A number of different access lists are available. The ones which we are going to use here are listed
below
http_access: Allows HTTP clients to access the HTTP port. This is the primary access control list.
no_cache: Defines the caching of requests responses
An access list rule consists of keywords like allow or deny ; which allows or denies the service to a
particular ACL element or to a group of them.
Note:
1. The rules are checked in the order in which they are written and it terminates as soon as rule is
matched.
2. An access list can consists of multiple rules.
3. If none of the rules is matched, then the default action is opposite to the last rule in the list; thus it
is good to be explicit with the default action.
4. All elements of an access entry are ANDed together and executed in following manner
http_access Action statement1 AND statement2 AND statement OR.
http_access Action statement3
Multiple http_access statements are ORed whereas elements of an access entry are ANDed
together
5. Do remember that rules are always read from top to bottom.
Back to Configuration
By default, Squid will not give any access to clients and access controls have to modified for this
purpose. One has to list out ones own rules to allow the access. Scroll down in the squid.conf and enter
the following lines just above the http_access deny all line
acl mynetwork 192.168.0.1/255.255.255.0
http_access allow mynetwork
mynetwork is the acl name and the next line is the rule applicable to a particular acl i.e. mynetwork.
192.168.0.1 refers to the address of the network whose netmask is 255.255.255.0.. mynetwork basically
gives a name to group of machines in the network and the following rule allows the access to clients.
The above changes along with http_port is good enough to put Squid into gear. After the changes Squid
can be started by the following command
service squid start
Note :
Squid can also be started automatically at boot time by enabling it in ntsysv or setup (System Service
Menu). After each and every change in the configuration file, the present Squid process has to be
stopped and for new configuration changes to take effect, Squid has to be started once again. These two
steps can be achieved by following commands
1. service squid restart or
2. /etc/rc.d/init.d/squid restart
above error directory. This error message file should be in HTML format. The above listed out
examples are just a few of the options, facilities and capabilities of ACL. One can read through the
FAQ section at the Squid Home Page for more extensive usage and explanation of other ACL
elements and access elements.
Log Files
All log files of Squid are contained in directory /var/log/squid; these contain cache log, access logs and
store.log. File access.log maintains the information about the clients request, activity and maintains
entry for each HTTP & ICP queries received by the proxy server, clients IP, request method, requested
URL, etc.. The data of this file can be used to analyze the access information. Many programs like sarg,
calamaris, Squid-Log-Analyzer are available which can analyze this data and generate reports (in HTML
format). The reports can be generated in terms of users, IP numbers, site visited, etc..
The destination of these log files can also be changed by following options
cache_access_log
cache_log
cache_store_log
pid_filename
For access.log
For cache.log
For store.log (Store manager)
Squid process ID file name
Authentication Methods
Squid in the default configuration allows any user to have access without any authentication process. To
authenticate the users i.e. to allow only valid users (from any machine in the network) to access the
Internet, Squid provides for authentication process but via an external program, for this a valid username
and password is required. This is achieved by using proxy_auth ACL and authenticate_program; which
forces a user to verify the username and password before the access is given. Several authentication
programs are available which Squid can use and these are
1.
2.
3.
4.
5.
6.
One needs to specify the authentication program being used and this can be specified by using the
authenticate_program option. Make sure that the authentication program being used for the purpose is
installed and working.
The changes in the squid.conf file now should also reflect the same authenticate_program
/usr/local/bin/pam_auth
References
This article just touches the tip of the Squid iceberg; for further reference visit the following Web sites
Squid Home, www.squid-cache.org
Squid Documentation Project, squid-docs.sourceforge.net
visolve.com
For Proxy Authentication, home.iae.nl/users/devet/squid/proxy_auth