一、代理服务器
简介:
代理服务器是目前网络中常见的服务器之一,它可以提供文件缓存、复制和地址过滤等服务,充分利用有限的出口带宽,加快内部主机的访问速度,也可以解决多用户需要同时访问外网但公有IP地址不足的问题。同时可以作为一个防火墙,隔离内网与外网,并且能提供监控网络和记录传输信息的功能,加强局域网的安全性等。它的主要作用有以下几点。
1.共享网络
2.加快访问速度,节约通信带宽
3.防止内部主机受到攻击
4.限制用户访问,完善网络管理
原理:
① 客户端A向代理服务器提出访问Internet的请求。
② 代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。
③ 如果缓存中存在客户端A需要的信息,则将信息传送给客户端。如果不存在,代理服务器就代替客户端向Internet上的主机请求指定的信息。
④ Internet上的主机将代理服务器的请求信息发送到代理服务器中,同时代理服务器会将信息存入缓存中。
⑤ 代理服务器将Internet上主机的回应信息传送给客户端A。
⑥ 客户端B向代理服务器提出相同的请求。
⑦ 代理服务器也首先与访问控制列表中的访问规则相对照。
⑧ 如果满足规则,则将缓存中的信息传送给客户端B。
二、squid简介
Squid是Linux和UNIX平台下最为流行的高性能免费应用层代理服务器,它具有权限管理灵活、性能高和效率快等特点。Squid是一个由众多在互联网上的开发人员共同努力完成的高性能的代理缓冲服务器,它的具体开发是由国家网络应用研究室(the National Laboratory for Applied Network Research)的Duane Wessels主持,由NSF出资支持的。
Squid的另一个优越性在于它使用访问控制列表(ACL)和访问权限列表(ARL)进行权限管理和内容过滤。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。
三、CDN简介:
文件下载加速服务:
四、Web缓存的类型和特点:
Web缓存的位置可以有三种,一是可以防止在客户端,二是放在服务器,三是放在客户端与服务器之间的某个网络节点上,这个网络节点就是web代理服务器。
1 客户端缓存
2 代理服务器缓存
3 服务器缓存
三种典型的代理方式
1 传统代理
2 透明代理
3 反向代理
五、配置简介
1.查看是否已安装squid
Red Hat Enterprise Linux 5安装程序默认没有安装Squid
服务,读者可以使用下面的命令检查系统是否已经安装了
Squid服务或查看已经安装了何种版本。
rpm -q squid
2.Squid代理服务的基本配置
2.1 Squid主配置文件是/etc/squid/squid.conf ,最基本的设置如下。
http_port 192.168.16.1:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.144.56.101
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 192.168.16.1
cache_mgr lindenstar@163.com
acl all src 0.0.0.0/0.0.0.0
http_access allow all
2.2 acl选项的格式如下:
acl列表名称 列表类型 [-i] 列表值
列表名称:用于区分Squid的各个访问控制列表,任何两个访问控制列表不能用相同的列表名。虽然列表名称可以随便定义,但为了避免以后不知道这条列表是干什么用的,应尽量使用有意义的名称,如badurl、clientip和work time等。
列表类型:是可被Squid识别的类别。Squid支持的控制类别很多,可以通过IP地址、主机名、MAC地址和用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口和URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理
-i选项:表示忽略列表值的大小写,否则Squid是区分大小写的。
列表值:针对不同的类型,列表值的内容是不同的。例如,对于类型为src或dst,列表值的内容是某台主机的IP地址或子网地址;对于类型为time,列表值的内容是时间;对于类型为srcdomain和dstdomain,列表值的内容是DNS域名。
类型选项
2.3 http_access 的使用
Squid会针对客户HTTP请求检查http_access规则,
定义访问控制列表后,就使用http_access选项根据访
问控制列表允许或禁止访问了。
该选项的基本格式为:
http_access [allow | deny] 访问控制列表名称
? [allow | deny]:定义允许(allow)或禁止(deny)访问控制列表定义的内容。
? 访问控制列表名称:需要http_access控制的ACL名称
2.4 初始化Squid
1.创建Squid使用硬盘缓冲区的目录结构
/usr/sbin/squid –z
2.设置Squid错误提示信息为中文
在Squid的主配置文件/etc/squid/squid.conf中添加下
列语句,并使用命令“/etc/init.d/squid reload”重新载
入配置文件
error_directory /usr/share/squid/errors/Simplify_Chinese
2.5启动和停止代理服务器
1.启动代理服务
/etc/init.d/squid start
2.停止代理服务
/etc/init.d/squid stop
3.重新启动代理服务
/etc/init.d/squid restart
4.重新载入配置文件
/etc/rc.d/init.d/squid reload
六、具体案例
案例一:传统代理:
介绍:
代理服务器(squid):Red Hat Linux 5.4
(eth1 :Host-only 到vmware1
eth0: Bridged 到本地连接)
内网主机:windows xp (虚拟机Host-only)
实机(windows 7)通过无线路由器直接上网!
1.用setup配网络参数:
2. 安装squid
[root@gjp99 ~]# mkdir /mnt/cdrom
[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@gjp99 Server]# rpm -ql squid |less
查看注释语句:
/etc/httpd/conf.d/squid.conf //和Apache的代理捆绑在一起
/etc/pam.d/squid //支持pam
/etc/rc.d/init.d/squid //独立守护进程
/etc/squid/squid.conf // squid的主配置文件
[root@gjp99 Server]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$"
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all 默认拒绝所有
icp_access allow all
http_port 3128 代理服务器的监听端口,最好在前面写上具体ip地址,
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid
3.测试机配置:
3.1 配ip
走代理,dns也不用配置(无需地址解析)
3.2 代理设置
IE 右击属性----连接-----局域网(LAN)设置
3.3 参考文档:
3.4 主文件配置:
[root@gjp99 Server]# ll /var/spool/squid/
total 0
说明:squid还没有被初始化!
[root@gjp99 Server]# vim /etc/squid/squid.conf
修改成:
3.5 支持代理的软件
浏览器支持代理、聊天工具(qq支持代理)、下载工具(如:网络蚂蚁):
登陆时设置:
3.6 客户机访问外网测试:
该为允许所有!
刷新页面
[root@gjp99 Server]# tail -f /var/log/squid/
access.log cache.log squid.out store.log
[root@gjp99 Server]# tail -f /var/log/squid/access.log
t_search_word_style/piddomain.js - DIRECT/220.181.124.108 application/x-javascript
1346398516.767 17157 192.168.2.22 TCP_MISS/000 0 GET http://www.gougou.com/js/input-ac.js - DIRECT/www.gougou.com -
1346398516.767 17188 192.168.2.22 TCP_HIT/000 0 GET http://www.gougou.com/ - DIRECT/www.gougou.com -
修改squid.conf 文件,避免其他人使用此代理服务器访问外网!
squid.conf
类型参考:
4.代理服务器安全应用测试:
4.1.拒绝某个人:禁止IP地址为192.168.2.22的客户机上网。
允许其他人:
[root@gjp99 Server]# service squid restart
测试:日志监视:
[root@gjp99 ~]# tail -f /var/log/squid/access.log
1346401928.431 2 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
1346401938.105 1 192.168.2.22 TCP_DENIED/403 1417 GET http://www.google.com/ - NONE/- text/html
换了个ip,就能正常上网!(参考日志信息)
1346402102.080 897 192.168.2.21 TCP_MISS/302 934 GET http://www.google.com/ - DIRECT/74.125.71.106 text/html
1346402106.243 4162 192.168.2.21 TCP_MISS/302 648 GET http://www.google.com.hk/url? - DIRECT/74.125.71.199 text/html
1346402109.660 3416 192.168.2.21 TCP_MISS/200 169690 GET http://www.google.com.hk/ - DIRECT/74.125.71.199 text/html
1346402113.359 3596 192.168.2.21 TCP_MISS/404 1310 GEThttp://www.google.com.hk/compressiontest/gzip.html - DIRECT/74.125.71.199 text/html
4.2 拒绝某个网段的人:禁止192.168.2.0这个子网里所有的客户机上网。
任选该网段的三个ip段作为测试:
1346402829.564 4 192.168.2.21 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
1346402881.349 2 192.168.2.1 TCP_DENIED/403 1417 GET http://www.gougou.com/ - NONE/- text/html
1346402926.390 2 192.168.2.254 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
4.3 拒绝访问某个ip的网站 禁止用户访问IP地址为119.75.218.77的网站
主配置文件的590行!
以上证明:拒绝ip,却拒绝不了访问该网站,因为一个服务器可对应于多个ip
4.4 拒绝访问带某个域名的网站 :禁止用户访问域名包含有sina.com的网站。
日志信息:
1346407353.802 12 192.168.2.22 TCP_DENIED/403 1413 GET http://www.sina.com/ - NONE/- text/html
1346407365.210 3 192.168.2.22 TCP_DENIED/403 1415 GET http://news.sina.com/ - NONE/- text/html
4.5 禁止用户访问域名包含有sex关键字的URL。
4.6 禁止用户访问域名为 www.163.com的网站
acl baddomain1 dstdomain -i www.163.com
http_access deny baddomain1
4.7 限制IP地址为192.168.2.100的客户机并发最大连接数为5。
acl clientip1 src 192.168.2.100
acl conn5 maxconn 5
http_access deny client1 conn1
4.8 禁止192.168.2.0这个子网里所有的客户机在周一到周五的9:00到18:00上网。
acl clientnet1 src 192.168.2.0/255.255.255.0
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet1 worktime
下班时间可以正常上网:
[root@gjp99 ~]# date
Fri Aug 31 18:37:49 CST 2012
调整为上班时间:
[root@gjp99 ~]# date 083112302012
Fri Aug 31 12:30:00 CST 2012
日志信息:
1346387408.908 1 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html
4.9 禁止客户机下载*.mp3、*.exe、*.zip和*.rar类型的文件。
测试:迅雷中:
禁止的是用下载工具下载如(迅雷)如果网页上直接保存,可以下载!
4.10 禁止QQ通过Squid代理上网。
acl qq url_regex -i tencent.com
http_access deny qq
正常情况下,qq工具只要设置代理方式中的任意一种也可登陆qq
qq已无法正常登陆!
本文出自 “Smile” 博客,请务必保留此出处http://guojiping.blog.51cto.com/5635432/978839