proxy:也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
proxy也是学习kali必须了解的一些知识。它有三个基本原则:
一、正向代理(forward proxy)
简单的来说,就是我们向代理服务器发送请求,然后通过代理服务器去访问外部网络或者服务器,并将获得的内容返回给我们。当然,我们的客户端必须设置好正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
使用正向代理,主要有以下几点作用:
1、访问本无法访问的服务器:最简单的例子就是翻墙,应该很好理解吧。
2、缓存(Cahce)作用:cache技术与代理服务技术是紧密联系的,假设我们的电脑是用户A,我们想通过代理服务器X访问服务器A上的数据B,如果在这之前,有人通过代理服务器X访问过该数据,那么代理服务器X会把数据B保存一段时间,在这段时间内,如果我们想访问数据B,代理服务器会直接把缓存的数据B直接发给我们,而不会再去访问服务器A。
3、客户端访问授权:最好的例子就是防火墙
如图,假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。
4、隐藏访问者的行踪:翘板与肉鸡,这部展开做笔记了。
二、反向代理(reverse proxy)
顾名思义,反向代理与正向代理相反,把正向代理中的客户端和服务器位置调换一下就懂了。
1、保护隐藏服务器2、负载均衡:当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器X去应答不同的用户,然后发送不同用户需要的资源。
三、透明代理(transparent proxy)
透明代理指的是客户端不知道代理服务器的存在,代理服务器改编了我们的报文(request fields),并传送真实的IP。有一点要注意,加密的透明代理属于匿名代理,意思是不用设置代理。
如图,用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。
小结:网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外MS ISA也可以用来在WINDOWS平台下做正向代理。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。