Linux 版 (精华区)

发信人: tcpip (俺的昵称改了), 信区: Linux
标  题: 包过滤基础知识(2)--3
发信站: 哈工大紫丁香 (Fri Sep  3 16:25:24 1999), 转信

3.我被 Routing, masquerading, portforwarding, ipautofw...搞糊度了.

这个 HOWTO 是关于包过滤器的. 意思是决定一个包通过或不. 然而, Linux 作为黑客

平台, 你也许想做比这更多的事情.

一个问题是, 同一个工具(ipchains)用于控制伪装和传输代理工作, 尽管这些是从包过

滤中分离出来的想法. (如果 不认为它们相近的话,目前 Linux 上的工具合并在一起是

不舒服的.)

伪装和代理的说明包含在被分离出去的HOWTO中, 并且自动中转和端口中转由分离出去

的工具控制, 但是,因为有许多人一直问我关于它们的问题, 我将讲述一些有共性的问

题和什么时候应该使用它们中的哪一个. 这里不讲每个设置的安全性问题.

3.1 免费宣传: WatchGuard Rules 

你可以购买非免费的防火墙软件. 优秀的一个是 WatchGuard 的 FireBox. 它之所以优

秀是因为我喜欢它, 它安全, 基于 Linux, 并且他们支持与新的防火墙软件(aimed fo

r 2.3)一样好的 ipchains 的继续开发. 一句话, 当我为你工作的时候, WatchGuard 

供养我. 所以请考虑他们的产品.

http://www.watchguard.com

以上与技术无关, 但与人的生存有关, 所以我把它翻译出来了.

3.2 防火墙们相类似的共同设置 

你经营 littlecorp.com. 有一个内部网, 和用一个 PPP 连接到因特网(firewall.lit

tlecorp.com 地址是 1.2.3.4). 你的局域网是个乙太网, 你个人的机器叫 myhost.

3.3 私有网络: 传统的代理服务. 

此方案中, 包不会从私有网络中传送到因特网和 vice versa. 私有网络中的IP地址应

遵循RFC1597中为私有网络分配的.(象 10.*.*.*, 172.16.*.* 或192.168.*.*)

只有通过连接到防火墙机器这么一条路连接到因特网, 它是两个网络之间的唯一连接.

 你在防火墙机器上运行代理软件来代理 FTP,web访问, telnet, RealAudio, Usenet 

News 等服务. 具体请看 firewall HOWTO.

需要因特网访问的所有服务必须安装在防火墙机器上.(看下面的 有限的因特网服务).

 

例如: 允许从私有网络中访问因特网上的 web.

    1.私有网络地址为192.168.1.*, 其中 myhost 是 192.168.1.100, 防火墙机器网

卡是 192.168.1.1.     2.web 代理 (eg. "squid") 被安装在防火墙机器上并配置端

口为 8080.     3.私有网络上运行的 Netscape 设置防火墙机器 8080 作为代理. 

    4.私有网络的 DNS 无须设置. 

    5.防火墙机器上的 DNS 必须设置. 

    6.私有网络上的机器不设置默认路由(别名网关). 

myhost 机器上的 Netscape 访问 http://slashdot.org. 

    1.Netscape 使用 myhost 机器的端口 1050 连接防火墙机器的端口 8080. 请求 

"http://slashdot.org". 页面.     2.代理去查找名字 "slashdot.org", 并得到地址

 207.218.152.131. 它与那个地址建立一个连接(使用防火墙机器外部接口的端口 102

5 ), 并向 web 服       务器 (port 80) 索取页面. 

    3.当它从 web 服务器得到页面后, 它把数据复制到与 Netscape 建立的连接. 

    4.Netscape 提交此页面. 

从 slashdot.org' 来看, 连接是从 1.2.3.4 (防火墙机器的拨号接口)的端口 1025 到

 207.218.152.131(slashdot.org) 的端口 80. 从 myhost 的角度来看, 连接是从192

.168.1.100 (myhost)的端口1050到192.168.1.1(防火墙机器的乙太网卡)的端口8080.

3.4 私有网络: 透明的代理服务 

此方案中, 包不会从私有网络中传送到因特网和 vice versa. 私有网络中的IP地址应

遵循RFC1597中为私有网络分配的.(象 10.*.*.*, 172.16.*.* 或192.168.*.*)

只有通过连接作为防火墙的机器这么一条路连接到因特网, 它是连接两个网络的唯一的

一台机器. 你在作为防火墙的机器上运行一个叫做透明代理的软件来代理对外部的访问

. 核心把需要向外发送的包发到透明代理服务.

透明代理的意思是客户端不需要知道复杂的代理服务.

需要因特网访问的所有服务必须安装在作为防火墙的机器上.(看下面的 有限的因特网

服务). 

例如: 允许从私有网络上访问因特网上的 web 站点.

    1.私有网络地址为192.168.1.*, 其中 myhost 是 192.168.1.100, 防火墙机器网

卡是 192.168.1.1.     2.透明web 代理 (我相信有 "squid"的补丁程序工作于此种方

式, 或试试"transproxy") 被安装在防火墙机器上并配置端口为 8080.     3.核心使

用 ipchains 把与防火墙端口80的连接重定向到代理服务.     4.私有网上的 Netsca

pe 被配置为直接连接方式.     5.私有网络的 DNS 需要设置(你需要在防火墙机器上

运行DNS代理服务).     6.防火墙机器上的 DNS 必须设置. 

    7.私有网络上机器的默认路由(别名网关)指向防火墙机器. 

myhost机器上的 Netscape 访问 http://slashdot.org.

    1.1.Netscape 通过查找"slashdot.org", 得到它的地址为 207.218.152.131. 然

后它使用端口1050与此地址建立一个连接, 并向 web 站点索取页面.     2.当包由 m

yhost (port 1050) 通过防火墙送往 slashdot.org (port 80) 时, 它们重定向到代理

服务重定的8080端口. 透明代理使用端口1025与 207.218.152.131       的端口80(这

是原始包发往的地址)建立一个连接.     3.当代理服务收到从 web 站点传来的页面后

, 通过已经建立的连接把它复制给 Netscape.     4.Netscape 显示此页面. 

从 slashdot.org 的角度来看,连接是由 1.2.3.4 (防火墙的拨号连接 IP 地址)的端口

 1025 到 207.218.152.131 的端口 80. 从 myhost 的角度来看,连接是从192.168.1

.100 (myhost) 端口 1050 连接到 207.218.152.131 (slashdot.org)的端口 80, 但是

, 它实际是在与透明代理服务器对话.

3.5 私有网络: 伪装 

此方案中, 包不经特殊处理不会从私有网络中传送到因特网和 vice versa. 私有网络

中的IP地址应遵循RFC1597中为私有网络分配的.(象 10.*.*.*,172.16.*.* 或192.168

.*.*)

取代使用代理服务的是我们使用核心的伪装服务. 伪装服务重写经过防火墙的包, 所以

包看起来就象从防火墙自身发出的. 然后代理服务重写返回的包使他们看起来是发往原

来的申请者.

伪装有分离的模块去使用 "tricky" 协议, 如同 FTP, RealAudio, Quake 等. 为了真

正掌握这些协议, "auto forwarding" 功能使用自动设置端口中转来操纵有关端口: 看

"ipportfw"(2.0 核心)或"ipmasqadm"(2.1 核心).

需要因特网访问的所有服务必须安装在作为防火墙的机器上.(看下面的 有限的因特网

服务). 

例如: 允许从私有网络上访问因特网上的 web 站点.

    1.私有网络地址为192.168.1.*, 其中 myhost 是 192.168.1.100, 防火墙机器网

卡是 192.168.1.1.     2.防火墙伪装从私有网络中来的任何发往因特网上某主机80端

口的包.     3.私有网上的 Netscape 被配置为直接连接方式. 

    4.私有网络的 DNS 需要设置(你需要在防火墙机器上运行DNS代理服务). 

    5.私有网络机器的 DNS 必须正确设置. 

    6.私有网络上机器的默认路由(别名网关)设定为指向防火墙机器. 

myhost机器上的 Netscape 访问 http://slashdot.org.

    1.1.Netscape 通过查找"slashdot.org", 得到它的地址为 207.218.152.131. 然

后它使用端口1050与此地址建立一个连接, 并向 web 站点索取页面.     2.当包由 m

yhost (port 1050) 通过防火墙送往 slashdot.org (port 80) 时, 它们被重写为由P

PP地址发出, 端口是 65000. 防火墙有合法的IP地址, 所以从       www.slashdot.c

om 返回的包可以找到正确的返回路径.     3.当包从 slashdot.org (端口 80)来到 

firewall.littlecorp.com (端口 65000)后, 它们被重写为发向 myhost, 端口 1050.

 这是伪装的真正奥妙: 它可以记住它重写       后发出去的包, 当此包的回复包返回

来时改写它们, 再发给私有网络中的访问者.     4.Netscape 显示此页面. 

从 slashdot.org 的角度来看,连接是由 1.2.3.4 (防火墙的拨号连接 IP 地址)的端口

 65000 到 207.218.152.131 的端口 80. 从 myhost 的角度来看,连接是从192.168.

1.100 (myhost) 端口 1050 连接到 207.218.152.131 (slashdot.org)的端口 80.

3.6 公共网络 

此节, 你的个人网络是因特网的一部分: 包不用改动即可在两个网络之间传送. 分配给

内部网络的 IP 地址必须是申请的 IP 地址块, 这样网络上的其它机器将知道如何向你

发送包. 这意味着永久的连接.

包过滤器在此处的作用是, 允许什么包可以在私有网络和因特网之间传送, 例如: 限定

外部网络只能访问你的 web 服务器.

例如: 允许从私有网络上访问因特网上的 web 站点.

    1.按申请的 IP 地址给你的网络分配. 

    2.防火墙被设置为允许通过. 

    3.Netscape 设置为直接连接. 

    4.正确配置 DNS. 

    5.把私有网络的防火墙设置为默认路由器. 

myhost 机器上的 Netscape 访问 http://slashdot.org.

    1.1.Netscape 通过查找"slashdot.org", 得到它的地址为 207.218.152.131. 然

后它使用端口1050与此地址建立一个连接, 并向 web 站点索取页面.     2.包通过你

的防火墙, 如同通过你和 slashdot.org 之间的其它路由器一样.     3.Netscape 显

示此页面. 

1.2.3.100 (myhost) 端口1050 与 207.128.152.131 (slashdot.org) 端口 80 之间的

连接是唯一的连接.

3.7 有限的因特网服务 

当因特网访问你内部网的服务器时, 可以采用一些哄骗的手法, 这要好过让这些服务运

行在防火墙机器上. 它们以代理或者类似伪装的方法为外部访问服务.

最简单的方法是运行重定向( "redirector"), 这是一个单一的代理服务, 它在设定的

端口等待连接, 然后与内部网的一个固定的主机和端口号连接, 在两个连接之间复制数

据. "redir"程序是这种方式的一个特例. 从因特网的角度来看, 是与防火墙之间的连

接. 从内部网服务器的角度来看, 是内部网接口与防火墙之间产生连接.

另一种方式(需要 2.0 核心的 ipportfw 补丁, 或 2.1 及其以后的内核)是内核中的端

口中转技术. 它和 "redir" 以不同的方法做同样的服务: 核心重写通过的包, 改变它

们的目的地址和端口号使它们指向内部网中的主机和端口号. 从因特网的角度来看, 是

与你的防火墙连接. 从你的内部网服务器的角度来看, 是因特网上机器与它的直接连接

.


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.196毫秒