liunx 下巧妙使用代理服务器(squid)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
.cn 域名,1个 12个月
云解析 DNS,旗舰版 1个月
简介:

一、代理服务器

简介:

  代理服务器是目前网络中常见的服务器之一,它可以提供文件 
缓存、复制和地址过滤等服务,充分利用有限的出口带宽,加快 
内部主机的访问速度,也可以解决多用户需要同时访问外网但公 
有IP地址不足的问题。同时可以作为一个防火墙,隔离内网与外 
网,并且能提供监控网络和记录传输信息的功能,加强局域网的 
安全性等。它的主要作用有以下几点。 
1.共享网络 
2.加快访问速度,节约通信带宽 
3.防止内部主机受到攻击 
4.限制用户访问,完善网络管理

原理: 

① 客户端A向代理服务器提出访问Internet的请求。 
② 代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。 
③ 如果缓存中存在客户端A需要的信息,则将信息传送给客户端。如果不存在,代理服务器就代替客户端向Internet上的主机请求指定的信息。 
④ Internet上的主机将代理服务器的请求信息发送到代理服务器中,同时代理服务器会将信息存入缓存中。 
⑤ 代理服务器将Internet上主机的回应信息传送给客户端A。 
⑥ 客户端B向代理服务器提出相同的请求。 
⑦ 代理服务器也首先与访问控制列表中的访问规则相对照。 
⑧ 如果满足规则,则将缓存中的信息传送给客户端B。

image

二、squid简介  

  Squid是Linux和UNIX平台下最为流行的高性能免费应用 
层代理服务器,它具有权限管理灵活、性能高和效率快等特 
点。Squid是一个由众多在互联网上的开发人员共同努力完 
成的高性能的代理缓冲服务器,它的具体开发是由国家网络 
应用研究室(the National Laboratory for Applied Network 
Research)的Duane Wessels主持,由NSF出资支持的。 
    Squid的另一个优越性在于它使用访问控制列表(ACL) 
访问权限列表(ARL)进行权限管理内容过滤。访问控 
制清单和访问权限清单通过阻止特定的网络连接来减少潜在 
的Internet非法连接,可以使用这些清单来确保内部网的主 
机无法访问有威胁的或不适宜的站点。

三、CDN简介:

image

image

image

image

image

image 

image

image 

文件下载加速服务:

image

四、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域名。

类型选项

image 

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

六、具体案例

案例一:传统代理:

image

介绍:

代理服务器(squid):Red Hat Linux 5.4

(eth1 :Host-only 到vmware1 

   eth0: Bridged 到本地连接)

内网主机:windows xp  (虚拟机Host-only)

实机(windows 7)通过无线路由器直接上网!

1.用setup配网络参数:

imageimageimageimageimage

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

image

[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也不用配置(无需地址解析)

image

3.2 代理设置

IE 右击属性----连接-----局域网(LAN)设置

image

3.3 参考文档:

image

image

3.4 主文件配置:

[root@gjp99 Server]# ll /var/spool/squid/ 
total 0

说明:squid还没有被初始化!

[root@gjp99 Server]# vim /etc/squid/squid.conf

image 修改成:

image

image

image

3.5 支持代理的软件

浏览器支持代理、聊天工具(qq支持代理)、下载工具(如:网络蚂蚁):

登陆时设置:

image 

image 

3.6 客户机访问外网测试:

image

image 该为允许所有!

image image

刷新页面

image 

[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.confimage 

image 

类型参考:

image

4.代理服务器安全应用测试:

4.1.拒绝某个人:禁止IP地址为192.168.2.22的客户机上网。

image

允许其他人:

image

[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

image

换了个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 GET http://www.google.com.hk/compressiontest/gzip.html - DIRECT/74.125.71.199 text/html

4.2 拒绝某个网段的人:禁止192.168.2.0这个子网里所有的客户机上网。 
image

任选该网段的三个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的网站

image 

主配置文件的590行!

image

image

image

以上证明:拒绝ip,却拒绝不了访问该网站,因为一个服务器可对应于多个ip

4.4 拒绝访问带某个域名的网站 :禁止用户访问域名包含有sina.com的网站。

image 

日志信息:

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。

image

image 

4.6  禁止用户访问域名为 www.163.com的网站 
acl baddomain1 dstdomain -i www.163.com 
http_access deny baddomain1

image

image

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

image

调整为上班时间:

[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

image

4.9 禁止客户机下载*.mp3、*.exe、*.zip和*.rar类型的文件。 
image

测试:迅雷中:

image

禁止的是用下载工具下载如(迅雷)如果网页上直接保存,可以下载! 
4.10 禁止QQ通过Squid代理上网。 
acl qq url_regex -i tencent.com 
http_access deny qq

正常情况下,qq工具只要设置代理方式中的任意一种也可登陆qq

image 

qq已无法正常登陆!

image




本文转自 gjp0731 51CTO博客,原文链接:http://blog.51cto.com/guojiping/978839

相关文章
|
Linux 数据安全/隐私保护
liunx命令之:命令链接ftp服务器
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。
1144 0
|
7月前
|
网络安全 Apache PHP
Liunx服务器如何配置https(二)
Liunx服务器如何配置https(二)
123 0
Liunx服务器如何配置https(二)
|
7月前
|
Apache
Liunx服务器如何配置https(一)
Liunx服务器如何配置https(一)
68 0
Liunx服务器如何配置https(一)
|
算法 安全 应用服务中间件
Liunx下安装Nginx服务器
Liunx下安装Nginx服务器
169 0
Liunx下安装Nginx服务器
|
域名解析 弹性计算 Linux
阿里云ecs建站 一键环境配置 _liunx下建站[图文超详细]【小白攻略】
如果你想简简单单的,那么我推荐你使用一键环境搭建,在云市场上购买这个服务 5元钱 还是很划算的,当初我找了很久
阿里云ecs建站 一键环境配置 _liunx下建站[图文超详细]【小白攻略】
阿里云ecs建站 一键环境配置 图文超详细_liunx下建站,适合纯新手小白
  一、购买域名和阿里云ecs 首先,我们需要购买ecs,选择了1核1G的入门版,地域可以选择离你比较近的;在这里我们CentOS 6.5 64位操作系统; 如果你是学生,阿里云还有不错的体验价格,9.9一个月,性价比超高;打一波广告,阿里云这一点的确不错! 购买域名也是需要实名认证的哦!     购买完成,现在我们进入阿里云的控制台→云服务器ecs→实例(好了,不要怀疑了,这就是你的服务器); 看到箭头所指向的方向,没错,这就是你的服务器的地址。
|
Web App开发 Java Linux
在LIUNX服务器上找出web项目中占用cpu资源最多的线程的排查方法
在这里对linux下、sun(oracle) JDK的线程资源占用问题的查找步骤做一个小结;linux环境下,当发现java进程占用CPU资源很高,且又要想更进一步查出哪一个java线程占用了CPU资源时,按照以下步骤进行查找: 第一步:登陆到web服务所在的liunx服务器,利用top命令获取j...
1350 0