跳转到内容

知识产权与互联网/代理服务器

来自维基教科书,开放的书籍,为开放的世界
Diagram of two computers connected only via a proxy server. The first computer says to the proxy server: "ask the second computer what the time is".
两台计算机(以灰色显示)之间通过充当代理的第三台计算机(以红色显示)进行通信。

计算机网络 中,代理服务器 是一个 服务器(计算机系统或应用程序),充当 客户端 的中介,这些客户端从其他服务器请求资源。客户端连接到代理服务器,请求某些服务,例如文件、连接、网页或其他可从不同服务器获得的资源。代理服务器根据其过滤规则评估请求。例如,它可以根据 IP 地址协议 过滤流量。如果请求通过过滤器验证,代理将通过连接到相关服务器并代表客户端请求服务来提供资源。代理服务器可以选择性地更改客户端的请求或服务器的响应,有时它可能会在不联系指定服务器的情况下提供请求。在这种情况下,它会 '缓存' 来自远程服务器的响应,并直接返回后续对相同内容的请求。

代理的概念诞生于分布式系统的早期[1],作为简化和控制其复杂性的方法。如今,大多数代理都是网页代理,允许访问 万维网 上的内容。

代理服务器有各种潜在用途,包括

  • 使它后面的机器匿名,主要是为了 安全[2]
  • 加快对资源的访问速度(使用缓存)。网页代理通常用于 缓存 来自 Web 服务器的网页。[3]
  • 将访问策略应用于网络服务或内容,例如阻止不需要的网站。
  • 访问您的 ISP 或机构禁止或过滤的网站。
  • 记录/审核使用情况,例如提供公司员工的互联网使用情况报告。
  • 绕过安全/家长控制。
  • 绕过政府阻止的互联网过滤,访问其他内容。[4]
  • 在交付之前扫描传输的内容以查找恶意软件。
  • 扫描出站内容,例如为了数据丢失预防。
  • 允许网站向外部托管的资源(例如图像、音乐文件等)发出 Web 请求,当跨域限制禁止网站直接链接到外部域时。

通常,无修改地传递请求和响应的代理服务器被称为 网关,有时也称为隧道代理

代理服务器可以放置在用户的本地计算机中,也可以放置在用户和互联网上的目标服务器之间的各个点。

反向代理 通常是面向互联网的代理,用作私有网络上服务器的前端,以控制和保护对该服务器的访问,通常还会执行诸如负载平衡、身份验证、解密或缓存之类的任务。

代理类型

[编辑 | 编辑源代码]

正向代理

[编辑 | 编辑源代码]
A proxy server connecting an internal network and the Internet.
从内部网络接收请求并将其转发到互联网的正向代理。

正向代理是客户端服务器命名要连接的目标服务器的代理。[5] 正向代理能够从各种来源检索(在大多数情况下,可以从互联网上的任何地方检索)。

"正向代理" 和 "转发代理" 这些术语是对行为(转发流量)的一般描述,因此存在歧义。除了反向代理之外,本文中描述的代理类型是通用正向代理概念的更专业的子类型。

开放代理

[编辑 | 编辑源代码]
Diagram of proxy server connected to the Internet.
从互联网上的任何地方接收请求并将其转发到任何地方的开放代理。

开放代理是可以被任何互联网用户访问的转发代理服务器。 Gordon Lyon 估计互联网上有 “数十万” 个开放代理。[6] 匿名开放代理 允许用户在浏览网页或使用其他互联网服务时隐藏自己的 IP 地址。但是,匿名程度各不相同,并且存在多种方法可以 “欺骗” 客户端使其无论使用什么代理都泄露自身信息。

反向代理

[编辑 | 编辑源代码]
A proxy server connecting the Internet to an internal network.
从互联网接收请求并将其转发到内部网络中的服务器的反向代理。发出请求的人连接到代理,可能不知道内部网络。

反向代理(或代理)是一种对客户端来说像是普通服务器的代理服务器。请求被转发到一个或多个源服务器,这些服务器处理请求。响应被返回,就像直接来自代理服务器一样。[5]

反向代理安装在一个或多个 Web 服务器附近。来自互联网并以这些服务器之一为目标的所有流量都必须经过代理服务器。“反向” 的使用源于其对应词 “正向代理”,因为反向代理更靠近 Web 服务器,只服务于一组受限的网站。

安装反向代理服务器有很多原因:

  • 加密/SSL 加速:创建安全网站时,SSL 加密通常不是由 Web 服务器本身完成的,而是由配备了 SSL 加速硬件的反向代理完成的。参见 安全套接字层。此外,主机可以提供单个 “SSL 代理” 为任意数量的主机提供 SSL 加密;这样就无需为每个主机单独使用 SSL 服务器证书,缺点是反向代理后面的所有主机都必须共享 SSL 连接的公共 DNS 名称或 IP 地址。这个问题可以通过使用 X.509 证书的SubjectAltName 功能来部分解决。
  • 负载均衡: 反向代理可以将负载分配到多个 Web 服务器,每个 Web 服务器服务于自己的应用程序区域。在这种情况下,反向代理可能需要重写每个网页中的 URL(将外部已知 URL 转换为内部位置)。
  • 服务/缓存静态内容:反向代理可以通过缓存静态内容(如图片和其他静态图形内容)来卸载 Web 服务器。
  • 压缩:代理服务器可以优化和压缩内容以加快加载时间。
  • 慢慢喂食:通过缓存 Web 服务器发送的内容并缓慢地“慢慢喂食”给客户端,从而减少慢速客户端在 Web 服务器上造成的资源使用。这对动态生成的页面特别有利。
  • 安全性:代理服务器是额外的防御层,可以防止某些操作系统和 Web 服务器特有的攻击。但是,它不提供任何针对 Web 应用程序或服务本身的攻击的保护,这通常被认为是更大的威胁。
  • 外部网发布:面向互联网的反向代理服务器可用于与组织内部的防火墙服务器通信,为某些功能提供外部网访问,同时将防火墙后的服务器保留在内部。如果以这种方式使用,应考虑安全措施以保护您的其他基础设施,以防此服务器被入侵,因为其 Web 应用程序容易受到来自互联网的攻击。

性能增强代理

[编辑 | 编辑源代码]

旨在缓解特定链接相关问题或降级的代理。PEP(性能增强代理)通常用于在存在高往返时间 (RTT) 和无线链路具有高丢包率的情况下提高 TCP 性能。它们也经常用于具有非常不同的上传和下载速率的高度异步链接。

代理服务器的用途

[编辑 | 编辑源代码]

一个内容过滤 Web 代理服务器提供对可能通过代理中继的内容的管理控制。它通常用于商业和非商业组织(尤其是学校),以确保互联网使用符合可接受使用政策。在某些情况下,用户可以绕过代理,因为有一些服务旨在通过非过滤网站代理来自过滤网站的信息,以允许其通过用户的代理。[7]

内容过滤代理通常会支持用户身份验证,以控制 Web 访问。它通常还会生成日志,要么提供有关特定用户访问的 URL 的详细信息,要么监控带宽使用统计信息。它还可以与守护进程

许多工作场所、学校和学院限制了在其建筑物中提供的网站和在线服务。这是通过专门的代理(称为内容过滤器,有商业和免费产品可用)或通过使用缓存扩展协议(如ICAP)来完成的,该协议允许将插件扩展到开放式缓存架构中。

用于内容过滤的一些常见方法包括:URLDNS 黑名单URL 正则表达式过滤,MIME 过滤或内容关键字过滤。已知某些产品采用内容分析技术来查找某些类型的内容提供商通常使用的特征。

对开放互联网的请求必须首先通过出站代理过滤器。Web 过滤公司提供一个 URL 模式(正则表达式)数据库,并具有关联的内容属性。该数据库每周通过站点范围订阅更新,就像病毒过滤器订阅一样。管理员指示 Web 过滤器禁止广泛类别的内容(如体育、色情内容、在线购物、赌博或社交网络)。与被禁止的 URL 模式匹配的请求将立即被拒绝。

假设请求的 URL 可接受,则代理将获取该内容。此时,可以在返回路径上应用动态过滤器。例如,可以根据肤色匹配阻止JPEG 文件,或者语言过滤器可以动态检测不需要的语言。如果内容被拒绝,则返回 HTTP 获取错误,并且不会缓存任何内容。

外部网发布:面向互联网的反向代理服务器可用于与组织内部的防火墙服务器通信,为某些功能提供外部网访问,同时将防火墙后的服务器保留在内部。如果以这种方式使用,应考虑安全措施以保护您的其他基础设施,以防此服务器被入侵,因为其 Web 应用程序容易受到来自互联网的攻击

大多数 Web 过滤公司使用互联网范围内的爬虫机器人来评估内容是特定类型的可能性。然后,根据投诉或内容匹配算法中已知的缺陷,通过人工劳动来校正结果数据库。

Web 过滤代理无法查看安全的套接字 HTTP 事务内部,假设 SSL/TLS 的信任链没有被篡改。因此,想要绕过 Web 过滤的用户通常会在互联网上搜索开放式匿名 HTTPS 透明代理。然后,他们会将浏览器编程为通过 Web 过滤器将所有请求代理到此匿名代理。这些请求将使用 https 加密。Web 过滤器无法区分这些事务与例如对金融网站的合法访问。因此,内容过滤器仅对缺乏经验的用户有效。

如上所述,SSL/TLS 信任链确实依赖于受信任的根证书颁发机构;在客户端由组织管理的工作场所环境中,信任可能会授予其私钥为代理所知的根证书。具体来说,由代理生成的根证书由 IT 人员安装到浏览器的 CA 列表中。在这种情况下,代理对 SSL/TLS 事务内容的分析成为可能。代理实际上正在运行中间人攻击,因为客户端信任代理拥有的根证书。

Web 代理的一个特例是“CGI 代理”。这些是允许用户通过它们访问网站的网站。他们通常使用PHPCGI 来实现代理功能。这些类型的代理经常用于访问被公司或学校代理阻止的网站。由于它们也隐藏了用户自己的IP 地址,因此它们有时也用于获得一定程度的匿名性,称为“代理避免”。

一个缓存代理服务器通过检索从同一个客户端或其他客户端之前请求中保存的内容来加速服务请求。缓存代理保留经常请求的资源的本地副本,允许大型组织显着减少其上游带宽使用量和成本,同时显着提高性能。大多数 ISP 和大型企业都有缓存代理。缓存代理是第一种代理服务器。

一些实施不当的缓存代理具有负面影响(例如,无法使用用户身份验证)。RFC 3143(已知的 HTTP 代理/缓存问题)中描述了一些问题。

代理服务器的另一个重要用途是降低硬件成本。一个组织可能在同一个网络上或在单个服务器的控制下拥有许多系统,禁止每个系统单独连接到互联网。在这种情况下,单个系统可以连接到一个代理服务器,并且代理服务器连接到主服务器。软件缓存代理的示例是Squid

DNS 代理

[编辑 | 编辑源代码]

DNS 代理服务器接收来自(通常是本地)网络的 DNS 查询,并将它们转发到 Internet 域名服务器。它还可以缓存 DNS 记录。

绕过过滤器和审查

[编辑 | 编辑源代码]

如果目标服务器根据请求的来源过滤内容,使用代理可以绕过此过滤器。例如,使用基于IP地理定位来将服务限制在特定国家/地区的服务器可以通过使用位于该国家/地区的代理来访问该服务。

同样,配置不当的代理可以提供对原本与 Internet 隔离的网络的访问。[6]

日志记录和窃听

[编辑 | 编辑源代码]

可以安装代理以窃听客户端机器和网络之间的数据流。所有发送或访问的内容 - 包括提交的密码和使用的Cookie - 都可以被代理操作员捕获和分析。因此,在线服务(如 webmail 和银行)的密码应始终通过加密安全连接(如 SSL)交换。

通过链接不透露原始请求者信息的代理,可以从用户的目的地眼中隐藏活动。但是,将在中间跳跃点留下更多痕迹,这些痕迹可用于跟踪用户的活动或提供给用户以跟踪用户的活动。如果这些其他代理的策略和管理员未知,用户可能会错误地认为自己很安全,仅仅因为这些细节不在视线内和脑海中。

更像是不便而不是风险的是,代理用户可能会发现自己被某些网站阻止,因为许多论坛和网站阻止来自代理的 IP 地址,这些代理被认为已发送垃圾邮件恶意攻击该网站。代理跳跃可用于维护您的隐私。


通往私有网络的门户

[编辑 | 编辑源代码]

代理服务器可以在链接两个网络方面执行类似于网络交换机的作用。

匿名访问服务

[编辑 | 编辑源代码]

匿名代理服务器(有时称为网络代理)通常试图匿名化网络冲浪。有不同类型的匿名器。目标服务器(最终满足网络请求的服务器)从匿名代理服务器接收请求,因此不会收到有关最终用户地址的信息。但是,请求对于匿名代理服务器来说不是匿名的,因此代理服务器和用户之间存在一定程度的信任。它们中的许多通过向用户提供持续的广告链接来获得资金。

访问控制:一些代理服务器实施登录要求。在大型组织中,授权用户必须登录才能访问网络。组织因此可以跟踪个人使用情况。

一些匿名代理服务器可能会转发包含 HTTP_VIA、HTTP_X_FORWARDED_FOR 或 HTTP_FORWARDED 等标题行的數據包,这些标题行可能会透露客户端的 IP 地址。其他匿名代理服务器,称为精英或高匿名代理,只包含包含代理服务器 IP 地址的 REMOTE_ADDR 标题,使其看起来像代理服务器是客户端。如果客户端发送包含来自未使用高匿名代理服务器的先前访问的 Cookie 的数据包,网站仍然会怀疑正在使用代理。清除 Cookie 以及可能清除缓存可以解决此问题。

代理的实现

[编辑 | 编辑源代码]

网络代理

[编辑 | 编辑源代码]

网络代理像任何其他代理服务器一样传递http 协议请求。但是,网络代理接受用户浏览器窗口内的目标 URL,处理请求,然后立即将请求的 URL 的内容显示回用户浏览器。这通常与企业内部网代理有很大不同,有些人错误地将企业内部网代理称为网络代理。

后缀代理

[编辑 | 编辑源代码]

后缀代理允许用户通过将代理服务器的名称附加到请求内容的 URL 来访问网络内容(例如,“en.wikipedia.org.SuffixProxy.com”)。后缀代理服务器比普通代理服务器更易于使用。但不能提供匿名,主要用途是绕过网络过滤器;但是,由于更先进的网络过滤器,这很少使用。

透明代理

[编辑 | 编辑源代码]

透明代理也称为拦截代理强制代理,它可以在不需任何特殊客户端配置的情况下拦截正常通信。客户端不必知道代理的存在。透明代理通常位于客户端和 Internet 之间,代理执行网关路由器的部分功能。[8]

RFC 2616(超文本传输协议 - HTTP/1.1)提供标准定义

“'透明代理'是一种代理,除了代理身份验证和识别所需的之外,它不会修改请求或响应”。
“'非透明代理'是一种代理,它会修改请求或响应,以便为用户代理提供一些附加服务,例如组注释服务、媒体类型转换、协议缩减或匿名过滤”。

2009 年,Robert Auger 发布了透明代理操作方式中存在的安全漏洞,[9]计算机应急响应小组发布了一份咨询公告,其中列出了数十个受影响的透明代理和拦截代理服务器。[10]

拦截代理通常用于企业中,以防止规避可接受使用策略,并减轻管理负担,因为不需要任何客户端浏览器配置。但是,由于 Active Directory 组策略或 DHCP 和自动代理检测等功能,第二个原因得到了缓解。

拦截代理还被一些国家/地区的 ISP 广泛使用,以通过缓存节省上游带宽并提高客户响应时间。这在带宽有限(例如岛国)或需要付费的国家/地区更为常见。

TCP 连接的转向/拦截会产生几个问题。首先,必须以某种方式将原始目标 IP 和端口传达给代理。这并不总是可行的(例如,当网关和代理位于不同的主机上时)。有一类跨站点攻击依赖于不检查或无法访问有关原始(被拦截)目标的信息的拦截代理的某些行为。这个问题可以通过使用集成的包级别和应用程序级别设备或软件来解决,然后这些设备或软件能够在包处理程序和代理之间传递此信息。

拦截还会为HTTP 身份验证(特别是连接型身份验证,如NTLM)造成问题,因为客户端浏览器认为它正在与服务器通信而不是代理。这会导致问题,因为拦截代理需要身份验证,然后用户连接到也需要身份验证的网站。

最后,拦截连接会导致 HTTP 缓存出现问题,因为某些请求和响应变得无法被共享缓存缓存。

因此,一般不鼓励拦截连接。但是,由于部署此类系统的简单性,它们被广泛使用。

实现方法

[编辑 | 编辑源代码]

可以使用 Cisco 的WCCP(Web 缓存控制协议)执行拦截。此专有协议驻留在路由器上,并从缓存进行配置,允许缓存确定哪些端口和流量通过路由器的透明重定向发送到它。此重定向可以通过以下两种方式之一进行:GRE 隧道 (OSI 第 3 层) 或 MAC 重写 (OSI 第 2 层)。

一旦流量到达代理机器本身,拦截通常使用 NAT(网络地址转换)执行。此类设置对客户端浏览器不可见,但使代理对 Web 服务器和代理网络侧的其他设备可见。最近的 Linux 和一些 BSD 版本提供了 TPROXY(透明代理),它执行 IP 级别的 (OSI 第 3 层) 透明拦截和出站流量欺骗,隐藏代理 IP 地址免受其他网络设备的检测。

有几种方法通常可以用于检测拦截代理服务器的存在。

  • 通过比较客户端的外部 IP 地址和外部 Web 服务器看到的地址,或者有时通过检查服务器接收到的 HTTP 标头。为了解决这个问题,已经创建了一些网站,通过在网页上向用户报告网站看到的用户的 IP 地址来向用户报告。 [1]
  • 通过比较诸如traceroute之类的工具为代理协议(例如 http(端口 80))报告的网络跃点序列与非代理协议(例如 SMTP(端口 25))的网络跃点序列。 [2][3]
  • 通过尝试连接到已知不存在服务器的 IP 地址。代理将接受连接,然后尝试代理它。当代理找不到服务器来接受连接时,它可能会返回错误消息或简单地关闭与客户端的连接。这种行为差异很容易检测到。例如,大多数 Web 浏览器会在无法连接到 HTTP 服务器的情况下生成浏览器创建的错误页面,但在接受连接后又关闭连接的情况下会返回不同的错误。[11]
  • 通过向最终用户提供专门编程的 Flash 文件,这些文件会向其服务器发送 HTTP 调用。

Tor 洋葱代理软件

[编辑 | 编辑源代码]
Screenshot of computer program showing computer locations on a world map.
The Vidalia Tor-network map.

TorThe Onion Router 的缩写)是一个旨在实现在线匿名的系统。[12] Tor 客户端软件通过全球志愿者服务器网络路由互联网流量,以隐藏用户的地理位置或使用情况,使其免受进行网络监控流量分析的人员的监控。[12] 使用 Tor 使追踪互联网活动(包括“访问网站、在线帖子、即时消息和其他通信形式”)变得更加困难,追踪到用户。[12] 它的目的是通过阻止用户的互联网活动受到监控来保护用户的个人自由、隐私和进行机密业务的能力。

洋葱路由”指的是加密服务的层层叠叠的性质:原始数据被多次加密和重新加密,然后通过连续的 Tor 中继发送,每个中继都会解密一层加密,然后将数据传递到下一个中继,最终传递到目标。这降低了在传输过程中对原始数据进行解密或理解的可能性。[13]

Tor 客户端是自由软件,使用该网络无需支付任何额外费用。

I2P 匿名代理

[编辑 | 编辑源代码]

The I2P 匿名网络 ('I2P') 是一个旨在实现在线匿名的代理网络。它实现了大蒜路由,它是Tor洋葱路由的增强版。I2P 是完全分布式的,通过在各种位置由志愿者运行的路由器网络加密各种层面的所有通信并将它们中继来工作。通过隐藏信息来源,I2P 提供了抗审查能力。I2P 的目标是保护用户的个人自由、隐私和进行机密业务的能力。

每个 I2P 用户都在其计算机(节点)上运行一个 I2P 路由器。I2P 路由器负责查找其他对等节点并通过它们建立匿名隧道。I2P 为所有协议(HTTP、irc、SOCKS 等)提供代理。

该软件是免费开源的,并且使用该网络是免费的。

参考文献

[编辑 | 编辑源代码]
  1. Shapiro, Marc (1986). "分布式系统中的结构和封装:代理原理" (PDF). 国际分布式计算系统会议: 198–204. Retrieved 4 September 2011. {{cite journal}}: Unknown parameter |month= ignored (help)
  2. "防火墙和代理服务器 HOWTO". tldp.org. Retrieved 4 September 2011. 代理服务器首先是安全设备。
  3. Thomas, Keir (2006). Beginning Ubuntu Linux: From Novice to Professional. Apress. ISBN 9781590596272. 代理服务器通过存储经常访问的页面来帮助加速互联网访问。
  4. "2010 绕过工具使用报告" (PDF). 哈佛大学伯克曼互联网与社会研究中心。2010 年 10 月。
  5. a b "正向代理和反向代理". httpd mod_proxy. Apache. Retrieved 20 December 2010.
  6. a b Lyon, Gordon (2008). Nmap 网络扫描. 美国:Insecure. 第 270 页。 ISBN 9780979958717.
  7. "使用 Ninjaproxy 穿越过滤代理". 高级过滤机制. TSNP. Retrieved 17 September 2011.
  8. "什么是拦截代理?". uCertify. 2010 年 2 月 28 日. Retrieved 4 September 2011.
  9. "支持套接字的浏览器插件会导致透明代理滥用". 安全实践。2009 年 3 月 9 日. Retrieved 14 August 2010.
  10. "漏洞说明 VU#435052". 美国网络安全与应急响应小组. 2009 年 2 月 23 日. Retrieved 14 August 2010.
  11. Wessels, Duane (2004). Squid:权威指南. O'Reilly. 第 130 页。 ISBN 9780596001629.
  12. a b Glater, Jonathan (2006 年 1 月 25 日). "不露肚脐的隐私". 纽约时报. http://www.nytimes.com/2006/01/25/technology/techspecial2/25privacy.html?_r=1. Retrieved 4 August 2011. 
  13. 洋葱路由项目. "Tor:匿名在线". Retrieved 9 January 2011.
[edit | edit source]
华夏公益教科书