您的位置:首页 > 运维架构 > 反向代理

Squid传统代理、透明代理应用

2013-08-15 23:58 691 查看

Squid传统代理、透明代理应用

        之前我们已经对Squid代理服务器http://wenzhongxiang.blog.51cto.com/6370734/1271606有了初步的了解,那么接下来我们就传统代理服务器及透明代理服务器的构建及ACL访问控制使用进行简单的描述,希望对大家有帮助。

透明模式的特点就是对用户是透明的(Transparent),即用户意识不到防火墙的存在。要想实现透明模式,防火墙必须在没有IP地址的情况下工作,不需要对其设置IP地址,用户也不知道防火墙的IP地址。

透明模式的防火墙就好象是一台网桥(非透明的防火墙好象一台路由器),网络设备(包括主机、路由器、工作站等)和所有计算机的设置(包括IP地址和网关)无须改变,同时解析所有通过它的数据包,既增加了网络的安全性,又降低了用户管理的复杂程度。

    防火墙使用透明代理技术,这些代理服务对用户也是透明的,用户意识不到防火墙的存在,便可完成内外网络的通讯。当内部用户需要使用透明代理访问外部资源时,用户不需要进行设置,代理服务器会建立透明的通道,让用户直接与外界通信,这样极大地方便了用户的使用。

一般使用代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数(如在浏览器中有专门的设置来指明HTTP或FTP等的代理)。而透明代理服务,用户不需要任何设置就可以使用代理服务器,简化了网络的设置过程。

    透明代理与透明模式都可以简化防火墙的设置,提高系统安全性。但两者之间也有本质的区别:工作于透明模式的防火墙使用了透明代理的技术,但透明代理并不是透明模式的全部,防火墙在非透明模式中也可以使用透明代理。

那么下边我们就通过示例让大家明白透明代理、传统代理及ACL控制的效果:

实验环境(略加修改,因为当测试网站在同一网段就没有必要验证了):

地址规划:

Squid 代理:

eth0:192.168.10.1

eth1:173.16.16.173

测试网站:173.16.16.2

客户机:192.168.10.10

实验描述:

在squid主机上,构建squid为客户机访问各种网站提供代理服务;

在客户机上,指定squid作为web访问代理,以隐藏自己的真实IP地址。

实验步骤:

1:squid服务器的配置:

因代理服务的主配置文件大多是注释行,需简化配置文件:

过滤前先进行备份—数据至上:

[root@squid ~]# mv /etc/squid/squid.conf /etc/squid/squid.conf.bak

执行过滤操作:

[root@squid ~]# grep -v "^#" /etc/squid/squid.conf.bak | grep -v "^$" > /etc/squid/squid.conf

在主配置文件/etc/squid/squid.conf中,添加配置项

http_port 3128                                ###指定代理服务监听的端口,默认为3128

cache_mem 64 MB                         ###指定缓存所使用的内存空间的大小

maximum_object_size 4096 KB        ###保存到缓存空间的最大对象(文件)大小

reply_body_max_size 10240000 allow all     ###允许用户下载的最大文件大小,其中all为默认的访问控制列表名

cache_dir ufs /var/spool/squid 100 16 256    ###指定缓存数据所存放的目录,容量,子目录个数;其中100为容量100M;16为一级子目录;256为二级子目录

access_log/var/log/squid/access.log squid     ###指定代理服务的日志文件位置及记录格式(squid)

visible_hostname  localhost                ###指定代理服务器本机的主机名

dns_testname  www.sohu.com            ###执行DNS解析,确保squid服务器自身的DNS查询功能正常,只要成功解析出一个域名,则不再测试后边的其他域名

http_access  allow  all                         ###放在http_access deny all之前

2:在Squid服务器上配置防火墙策略,允许3128端口访问外网的WEB服务器

iptables -I(大写i)  INPUT -p tcp --dport 3128 -j ACCEPT

3:初始化并启动服务(2种方法)

a:squid    -z        ###初始化缓存目录

      squid    -D        ###启动squid 服务

b:service    squid    start        ###初始化并启动服务

修改squid.conf配置文件后,需要重新加载方可生效。

执行“ service squid reload ”或者“ squid  -k  reconfigure”重新加载。

4:确认squid服务处于正常监听状态:

5:客户机程序的代理配置:

在IE浏览器的—右击属性—连接—局域网设置—代理服务器—填写IP地址和端口号—IP地址为局域网内网的网关地址;端口号为—3128:

Linux客户机命令行使用代理服务器,elinks网页浏览器、wget下载工具为例:

注意:在外网服务器173.16.16.2上必须安装WEB服务器并启动服务

6:验证传统代理的使用:

在192.168.10.10客户机上通过浏览器访问http://173.16.16.2

a:查看squid访问日志的新增记录:

在squid代理服务器中,通过跟踪squid服务的访问日志文件,我们会发现客户机192.168.10.10访问网站服务器173.16.16.2。

b:查看web访问日志的新增记录:

在被访问的web服务器中,通过跟踪httpd服务的访问日志文件,会发现来自代理服务器173.16.16.173的访问记录。这说明当客户机使用代理后,web服务器并不知道客户机的真实IP地址,因为实际是由代理服务器在代替访问。

  • 当从客户机再次访问同一web页面时,squid访问日志中会增加新的记录,但web访问日志中的记录不会有变化,除非页面变更、或执行强制刷新等操作。

  • 当客户机重复访问同一静态页面时,实际上是由代理服务器通过缓存提供的。

透明代理:

透明代理提供的服务功能与传统代理一致,但“透明”的实现依赖于默认路由和防火墙的重定向策略,更适用于局域网主机服务,而不适合为internet中的客户机提供服务。

实验描述:

在Linux网关上构建squid为客户机访问Internet提供代理服务;

在所有的局域网客户机上,只需正确设置IP地址、默认网关,不需要手动指定代理服务器的地址、端口等信息。

实验步骤:

1:配置Squid支持透明代理。

在主配置文件中/etc/squid/squid.conf中添加一项

http_port    局域网IP地址:3128    transparent    或     http_port    3128    transparent

2:设置iptables防火墙的重定向策略(如果防火墙开启,需先保存并关闭,然后新建如下规则):

  • 正确设置防火墙策略,将局域网主机访问internet的数据包转交给Squid进行处理,这里需要用到iptables的REDIRECT(重定向)策略,其作用是实现本机端口的重新定向,将访问网站协议HTTP、HTTPS的外发数据包转交给本机的Squid服务的3128端口

  • 注解:

  • REDIRECT是一种数据包控制类型,只能在nat表的PREROUTING或OUTPUT链以及被其调用的链中使用,通过“--to-ports端口号”的形式来指定映射的目标端口。

eg:将来自局域网段192.168.10.0/24且访问HTTP、HTTPS等协议的数据包,转交给运行在本机3128端口上的Squid服务处理。

[root@squid ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 80,443 -s 192.168.10.0/24 -j REDIRECT --to-ports 3128

或者:

[root@squid ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 80 -s 192.168.10.0/24 -j REDIRECT --to-ports 3128

[root@squid ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dports 443 -s 192.168.10.0/24 -j REDIRECT --to-ports 3128

3:验证透明代理的使用:

Windows客户机IE如果有手动指定的代理服务器设置则去除;

Linux客户机如果有则在命令行界面通过unset 命令清除HTTP_PROXY、HTTPS_PROXY等变量。

在客户机192.168.10.10中通过浏览器访问目标网站http://173.16.16.2,然后观察Squid代理服务器、web服务器的访问日志,验证透明代理是否生效。

Squid代理服务器的日志记录:

透明代理下的web服务器的访问日志:

 

三:配置ACL访问规则:

1.定义ACL列表

格式: acl    列表名    列表类型 列表内容....

常用的acl列表类型 :

src

192.168.10.1

192.168.10.0/24

192.168.10.0-192.168.20.0/24

源IP地址、网段、IP地址范围

dst

www.51cto.com

目标IP地址、网段、主机名

port

804432021

目标端口

dstdomain

.msn.com.163.com

目标域,匹配域内所有站点

time

MTWHF 8:00-18:00

12:00-16:00

AS

使用代理服务的时间段

字母表示各天的英文缩写

周六-周日

maxconn

30

最大并发连接

url_regex

url_regex -i^rtsp://

url_regex -i^emule://

目标URL地址,i表示忽略大小写

urlpath_regex

Urlpath_regex -i sex adult

Urlpath_regex -i \.mp3$

整个目标资源的URL路径

i 表示忽略大小写

2. 针对已定义的acl列表进行限制: 

 

格式: http_access    allow或deny    列表名称 ... 

eg:http_access    allow    mylan    worktime

3.添加一条ACL规则

acl    tupian    urlpath_regex -i\.gif$

http_access deny tupian

当访问WEB服务器时,页面上的图片将不显示

acl all src 0.0.0.0/0.0.0.0                    ###任意客户机地址

acl localhost src 127.0.0.1/255.255.255.255        ###源地址为127.0.0.1

acl    MYLAN    src    192.168.10.0/24    192.168.100.0/24

acl    MC20    maxconn    20                    ###最大并发连接为20

acl    BlackURL url_regex-i^rtsp://^emule://        ###以rtsp://等开头的URL

acl    MEDIAFILE urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$        ###以.mp3、.mp4、rmvb结尾的URL路径

acl    WORKTIME time MTWHF08:30-20:00            ###时间为周一至周五08:30-20:00

http_access    deny    MYLAN    MEDIAFILE            ###禁止客户机下载MP3、MP4等文件

http_access    deny    MYLAN    MC20        ###客户机的并发连接超过20时将被阻止

http_access    deny    MYLAN    WORKTIME    ###允许客户机在工作时间上网

http_access    deny    all                ###默认禁止所有客户机使用代理

  • 执行访问控制时,Squid将按照各条规则的顺序依次进行检查,如果找到一条相匹配的规则就不再向后搜索。

  • 没有设置任何规则时,Squid服务将拒绝客户端的请

  • 有规则但找不到相匹配的项,Squid将采用与最后一条规则相反的权限,即如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求。

  • 通常情况下,把最常用到的控制规则放在最前面,以减少Squid的负载。

  • 在访问控制的总体策略上,建议采用“先拒绝后允许”或“先允许后拒绝”的方式,最后一条规则设为默认策略。

  • 在acl列表前添加“!”表示取反条件。

基本示例:

aa:下班时间不允许登录服务器:

修改服务器时间:

客户机验证:

bb:客户机浏览网页不允许显示图片

整个介绍及使用完成,更多功能及作用需要大家去扩展!

Stay Hungry  Stay Foolish !

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: