RHCE253--架设Squid服务器

一、squid代理服务技术概览
1、代理服务器的简单概述与工作流程
2、squid代理服务器分类与介绍
3、squid代理服务器的安装和配置文件讲解
4、ACL访问控制应用
5、搭建透明代理网关服务器
6、搭建反向代理服务器
7、实现代理服务器的身份认证和安装代理日志分析软件

二、代理服务器的简单概述与原理
1、代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:
它是网络信息的中转站。代理服务器是介于浏览器和Web服务器之间的另一台服务器,有了它之后,
浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,
由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。大部分代理服务器都具有缓冲的功能,
就好像一个大的Cache,它有很大的存储空间,它不断将新取得的数据储存到它本机的存储器上,
如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器
取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。所以,
一般所说的代理就是指缓存代理,可以实现共享网络、加快访问网站速度、防止攻击等。在Linux下
主要使用squid代理服务器软件。
2、代理服务的缓存作用体现和工作流程
通过缓存的方式为用户提供Web访问加速,对用户的Web访问进行过滤控制


如果缓存中已经有客户机请求的数据,则走1、2、3、4路线
如果缓存中还没有客户机请求的数据,则走1、2、5、6、3、4路线

三、缓存squid代理服务器分类与介绍
1、缓存代理主要可以分为如下三种:
(1)普通代理服务
即标准的、传统的代理服务
需要客户机在浏览器中指定代理服务器的地址、端口
(2)透明代理服务
适用于企业的网关主机(共享接入Internet)中
客户机不需要指定代理服务器地址、端口等信息
需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理
对于普通代理服务和透明代理服务都可以通过如下图表示:


(3)反向代理服务
反向代理的缓存加速机制更多的应用于以下情况:Internet中的大量用户访问企业的单个(或少量)
Web站点;如下图表示:

 


而普通代理、透明代理更多应用于:局域网的大量用户访问Internet中的大量Web站点

四、squid代理服务器的安装和配置文件讲解
1、安装squid软件包squid-2.6.STABLE21-3.el5.i386.rpm(可以直接 挂载光盘安装)
[root@mail Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm --force
warning: squid-2.6.STABLE21-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:squid                  ########################################### [100%]
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid/
主配置文件:/etc/squid/squid.conf
默认监听端口:TCP 3128
默认访问日志文件:/var/log/squid/access.log
配置文件:
/etc/squid/squid.conf   主配置文件(重点,见过内容最多的配置文件)
/var/log/squid/access.log 访问日志
/var/log/squid/cache.log   缓存日志
/var/log/squid/store.log   缓存的存储日志
/var/spool/squid/
代理服务器网页存放的目录。一级目录为16个,二级目录为256个。
(题外话:需要修改squid.conf配置文件之前,最好先作好备份,默认已经有squid.conf.default)
对于主配置文件/etc/squid/squid.conf,通过 set number了解如下常用配置项:
919 http_port 3128   定义代理服务器的端口,3128是默认端口号
953 cache_mem 8 MB
分配为代理服务器的物理内存空间。一般为物理内存的1/3左右。最大到1/2.
1160 cache_dir ufs /var/spool/squid 100 16 256
代理服务器的网页存放目录,及大小(缓存数据的存储格式为ufs,100为缓存目录分配的磁盘空间(MB))
1199 maximum_object_size 4096 KB 最大缓存对象 4m.
1322 access_log /var/log/squid/access.log squid 定义访问日志
1338 cache_log /var/log/squid/cache.log 定义缓存日志
1348 cache_store_log /var/log/squid/store.log 存储日志
574 acl all src 0.0.0.0/0.0.0.0
定义访问列表。all表示访问列的名称。src表示访问列表的类型,在此表示源地址或源网段。
577 acl to_localhost dst 127.0.0.0/8 dst表示目标网段
578 acl SSL_ports port 443 port定义端口
615 http_access allow manager localhost      允许或拒绝某些访问列表
2383 visible_hostname linux 有效主机名,linux表示主机名

五、ACL访问控制应用
1、ACL(Access Control List,访问控制列表)
凡是搞过网络的都知道ACL这个访问控制机制,可以从客户机的IP地址、请求访问的URL/域名/文件类型、
访问时间、并发请求数等各方面进行控制。
应用访问控制的方式:
定义acl列表
        acl  列表名称 列表类型 列表内容 …
针对acl列表进行限制
        http_access allow或deny 列表名……
例如禁止任何客户机使用代理服务:
acl all src 0.0.0.0/0.0.0.0          //先写出列表
http_access deny all       //然后调用(这很像网络设备写ACL,然后在接口调用一样)
2、常用的acl列表类型
src
dst
port
srcdomain
dstdomain
time
maxconn
url_regex
urlpath_regex
3、ACL列表定义示例
acl LAN1 src 192.168.1.0/24
acl PC1 src 192.168.1.66/32
acl Blk_Domain dstdomain .qq.com .kaixin001.com
acl Work_Hours time MTWHF 08:30-17:30
acl Max20_Conn maxconn 20
acl Blk_URL url_regex -i ^rtsp:// ^mms://
acl Blk_Words urlpath_regex -i sex adult
acl RealFile urlpath_regex -i \.rmvb$ \.rm$
4、根据已经定义的部分ACL列表进行访问控制
http_access deny LAN1 Blk_URL
http_access deny LAN1 Blk_Words
http_access deny PC1 RealFile
http_access deny PC1 Max20_Conn
http_access allow LAN1 Work_Hours
上面这个ACL的具体用法在squid的主配置文件中有罗列出,下面copy一些重点举例说明:
    acl aclname src   ip-address/netmask 源网段,源ip,源ip范围
  acl aclname dst   ip-address/netmask 目标网段
   acl aclname myip ip-address/netmask 代理服务器的IP地址
   acl aclname arp   mac-address mac地址
   acl aclname srcdomain   .foo.com 源域名
   acl aclname dstdomain   .foo.com 目标域名
   acl aclname srcdom_regex [-i] xxx 源域名,支持正则表达式
eg: acl jpdomain srcdom_regex -i '\.jp$'
   acl aclname dstdom_regex [-i] xxx 目标网段
   acl aclname time [day-abbrevs] [h1:m1-h2:m2] 限制时间
    day-abbrevs:SMTWHFA (周日~周六)
#               S - Sunday
#               M - Monday
#               T - Tuesday
#               W - Wednesday
#               H - Thursday
#               F - Friday
#               A - Saturday      //因为S被周日用了,就用第二个字母

eg1: acl time1 time MTWHF 09:00-12:00 14:00-17:30
     acl time2 time MTWHF 08:00-18:00
     acl boss src 192.168.101.112
     http_access allow boss time2
     http_access deny time1
   acl aclname url_regex [-i] ^http://   限制访问协议,网址
eg2: 不允许ftp,rstp,mms
   acl ftp_test url_regex -i ^ftp://
   acl rstp_test url_regex -i ^rstp://
   acl mms_test url_regex -i ^mms://
   acl url_test url_regex -i fake yellow
   acl aclname urlpath_regex [-i] \.gif$ 限制下载,文件扩展名
eg3:
   acl download urlpath_regex -i \.torrent$ \.exe$ \.com$ \.zip$ \.rar$ \.tar$ \.gz$
   http_access deny download
   acl aclname urllogin [-i] [^a-zA-Z0-9] 限制网址登录
   acl aclname port 80 70 21 限制端口
eg4: 禁止QQ
   acl qq port 4000 8000
   acl aclname proto HTTP FTP 限制协议
   acl aclname method GET POST 限制方法
   acl aclname proxy_auth [-i] username ... 身份认证
   acl aclname proxy_auth_regex [-i] pattern 身份认证,支持正则表达式
   acl aclname maxconn number 限制用户最大连接数
eg5: 限制连接
   acl conn1 maxconn 2
注意:若没有做过调整,默认的squid.conf文件中将会拒绝其他客户机使用代理服务,
即存在“http_access deny all”
实例:
允许员工的周一~周五,12:00~14:00 15:00~18:00上网
允许webmin端口
允许tomcat端口
禁止下载.gz .tar .bz2的文件

vim /etc/squid/squid.conf
acl mynet src 192.168.101.0/24
acl time1 time MTHWFA 07:00-14:00 15:00-18:00
acl Safe_ports port 10000
acl Safe_ports port 8080
acl download urlpath_regex -i \.gz$ \.tar$ \.bz2$

http_access deny download mynet
http_access allow mynet time1
http_access deny all

service squid reload
service httpd start
cd /var/www/html/
touch 1.tar 2.gz 3.bz2
通过在Windows用浏览器下载可以发现被拒绝!

六、搭建透明代理网关服务器
1、实现透明代理的基本条件
(1)前提:
客户机的Web访问数据要能经过防火墙
代理服务构建在网关(防火墙)主机中
(2)配置要求:
代理服务程序能够支持透明代理
设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理
基本实现步骤
修改squid.conf配置文件,并重新加载该配置
http_port 192.168.1.1:3128 transparent
添加iptables规则
iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT
--to-ports 3128
客户机浏览器
不需要在浏览器中指定代理服务器的地址、端口

七、搭建反向代理服务器
1、基本实现步骤
修改squid.conf文件,并重新加载该配置
http_port 218.29.30.31:80 vhost
cache_peer 192.168.2.11 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.2.12 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.2.13 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.2.14 parent 80 0 originserver weight=1 max-conn=8
cache_peer Web服务器地址 服务器类型 http端口 icp端口 [可选项]

2、验证反向代理的实施效果
在上游Web服务器(192.168.2.11~192.168.2.14)中开启httpd服务
在Internet中的客户机(218.29.30.29)中访问反向代理服务器主机(http://218.29.30.31),
应能够看到实际由上游Web服务器提供的网页内容,查看反向代理服务器的访问日志信息
[root@localhost ~]# tail -1 /var/log/squid/access.log
(由于我所处的特殊网络环境,该试验无法对结果进行验证)

八、实现代理服务器的身份认证和安装代理日志分析软件
1、linux系统的代理支持认证方式有ncsa,smb,ldap,shadow,pam
通过编辑主配置文件:
vim /etc/squid/squid.conf
275 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid.passwd
276 auth_param basic children 5
277 auth_param basic realm Squid proxy-caching web server
278 auth_param basic credentialsttl 2 hours
279 auth_param basic casesensitive off

580 acl password proxy_auth REQUIRED    //设置认证的访问列表
648 http_access allow password time1      //允许正确用户在上网时间访问
649 http_access allow mynet time1

2、添加用户:
htpasswd -c /etc/squid/squid.passwd xx1
htpasswd /etc/squid/squid.passwd xx2     //不用-c选项啦
然后重新加载squid配置文件参数service squid reload
通过浏览器代理上网比必须认证通过了~!~

3、代理日志分析软件sarg的安装使用:
[root@mail ftp]# tar -zxf sarg-2.2.5.tar.gz -C /opt/
[root@mail ftp]# cd /opt/sarg-2.2.5/
[root@mail sarg-2.2.5]# mkdir /var/www/html/sarg
[root@mail ftp]# ./configure --enable-bindir=/usr/bin--enable-sysconfdir=/usr/local/sarg/ --enable-htmldir=/var/www/html/sarg --enable-mandir=/usr/share/man/man1/
[root@mail ftp]# make
[root@mail ftp]# make install

[root@mail sarg]# vim /usr/local/sarg/sarg.conf
37 access_log /var/log/squid/access.log
138 temporary_dir /tmp
144 output_dir /var/www/html/sarg

[root@mail sarg]# vim /etc/httpd/conf.d/sarg.conf
<Directory "/var/www/html/sarg">
    Options Indexes MultiViews
    AllowOverride authconfig
    Order allow,deny
    Allow from 192.168.101.0/24
    authtype basic
    authname "aadfajsldf"
    authuserfile /var/www/html/.htpasswd
    require user admin
</Directory>
[root@mail sarg]# htpasswd -c /var/www/html/.htpasswd admin
New password:
Re-type new password:
Adding password for user admin

[root@mail sarg]# sarg
SARG: Records in file: 142, reading: 100.00%
SARG: Successful report generated on /var/www/html/sarg/2010Aug23-2010Sep02

http://x.x.x.x/sarg 就可以通过帐号admin登陆使用了

这里有一点要注意的:
1、htpasswd -c /etc/squid/squid.passwd
创建后查看-->
/etc/squid/squid.passwd //这个是浏览网页密码
2、htpasswd -c /var/www/html/.htpasswd
创建后查看-->
/var/www/html/.htpasswd    //这个是登录sarg密码

你可能感兴趣的:(职场,休闲,Squid安装,RHCE253)