关于/etc/services
真正的服务是从这里启动的.当一个客户请求到达防火墙计算机的一个已知端口(<1024),
比如telnet的23端口, inetd就在 /etc/services文件中寻找这种服务的名称. 然后调用
inetd.conf中指定的相应的应用程序.
我们建立的某些服务通常并不在 /etc/services 中, 你有指定端口的自由. 例如, 我把
administrator的telnet端口指定为24,你甚至可以用2323.因此作为管理员, 访问防火墙
时必须telnet到24端口,另外,如果你象我一样设置了netperm-table, 就只能从内部网用
administrator访问防火墙.
telnet-a 24/tcp
ftp-gw 21/tcp # this named changed
auth 113/tcp ident # User Verification
ssl-gw 443/tcp
8.SOCKS代理服务器
8.1 安装
(译注:本文所有内容均基于 socks4.2(socks4),鉴于socks5已经成为目前的标准,译者
将对两者不同之处尽量注明)。
从ftp://sunsite.unc.edu/pub/Linux/system/Network/misc/socks-linux-src.tgz可以得到SOCKS代理服务器。同一个目录中还有一个样本配置文件"socks-conf".解开文件,按
说明make.我碰过一些个问题,关键在于保证Makefile的正确.
值得注意的的一点是要把proxy server加入/etc/inetd.conf.你必须加入一行:
(译注:SOCKS5还可以用其它方式启动,具体见其文档)
socks stream tcp nowait nobody /usr/local/etc/sockd sockd
用以在请求到来时启动服务.
8.2 配置代理服务
SOCKS程序需要两个配置文件.一个用来确认访问许可,另一个用于客户同代理服务器之间
的路由.访问许可配置文件在服务器上,而路由配置文件在每台Un*x机器上,Dos可以自己进
行路由,MAC应该也可以自己进行路由。
配置访问许可
在socks4.2Beta中,配置文件为"sockd.conf".包含两行,分别用于接受和拒绝访问.每行
由三项组成:
*标示符 (permit/deny) *IP地址 *地址修饰
标示符的取值为permit/deny,各占一行.
IP地址为典型的由句号隔开的4byte格式.比如:192.168.2.0
地址修正,与子网屏蔽类似,这个数字有32位,如果某位是1,则它必需与它所检查的IP
地址这一位的值是一样的,例如,如果该行为:
permit 192.168.2.0 255.255.255.0
表示允许在 192.168.2.0 到
192.168.2.255范围内的所有C类地址,下面一行是危险的:
permit 192.168.2.0 0.0.0.0
因为这等于没有地址匹配检查,缺省允许所有访问!
因此,首先设定允许范围,再加以限制.下面两行允许来自192.168.2.xxx的所有访问:
permit
192.168.2.0 255.255.255.0
deny 0.0.0.0 0.0.0.0
注意后面一行,第一个"0.0.0.0"是什么无所谓,因为它的屏蔽值是"0.0.0.0",用全零只
是为了书写方便.
每行多于一项也是合法的.
也可以配置成对指定用户访问的接收或拒绝.由身份验证完成.但不是所有的系统都支持,
包括Trumpet Winsock,因此我不再介绍有关内容,具体可参考socks的文挡.
配置路由
路由配置文件被冠以一个糟糕的名字:"socks.conf"之所以糟糕是因为同前一个文件名
太象了,容易使人产生误解.
路由配置文件决定何时使用sock. 比如说:在我们的网络内, 192.168.2.3 同192.168.2.1
之间的对话不需要使用sock去和防火墙对话,而是通过以太网直接进行.其中也定义了你的
IP回路,127.0.0.1,同样你也不需要用SOCK同自己对话.共有三项:
*deny
*direct
*sockd
Deny指示SOCKS何时拒绝请求.与sockd.conf相同,每行含标识符,IP地址和IP修正三个域.
一般说来,这些也由sockd.conf和访问文件处理,所以IP修正这一项可以在这里被设成
0.0.0.0。如果你想让自己那儿都访问不了,你可以在这儿设置。
direct指定不通过代理的地址.这些都是可以直接访问的,同样有标识符,IP地址和IP修正
三个域,我们的例子:
direct 192.168.2.0 255.255.255.0
指定所有内部网络的地址不用代理.
sockd用来说明服务器的地址,这一行的格式为:
sockd @=<serverlist> <IP address> <modifier>
注意"@=" 是要你设置代理服务器的ip列表,我们这里只能使用一个服务器,但你可以使用多
个以增加带宽或利用冗余提高稳定性.
其余两项同前,设置通过相应代理的地址。
在防火墙后设置域名服务器是一项相对简单的工作.你只要在代理服务器上设置DNS服务,
并将其作为墙内机器的DNS即可.
8.3 使用代理服务器
8.3.1 UNIX
要使应用程序配合防火墙工作,首先要把他们sockify,你将有两个telnet,一个用于直接
连接,另一个用于通过防火墙的连接.SOCKS中含有关于如何sock化应用程序的文挡,以及
一些已经sock化了的例子.如果你使用sock化的程序去访问直接连接的地址,SOCKS会自动
为你切换成直接连接的版本.
因此,我们可以把墙内机器所有的应用程序替换成AA过的版本,这时,原来的"finger"变成
了"finger.orig","telnet"变成了"telnet.orig"等等.但你必须在/include/socks.h中
告诉SOCKS每项改动.
有些应用程序可以自己处理路由和sockify,比如Netscape,你只要在相应的位置填入代理
服务器的地址(我们这里是192.168.2.1)即可。
8.3.2 MS Windows with Trumpet Winsock
Trumpet Winsock
自带了对代理的支持,在"setup"菜单里填入server的IP和可以直接连接的IP,Trumpet就
可以工作了.
8.3.4 关于UDP包
SOCKS(译注:SOCKS4)只能代理TCP,不支持UDP(译注:SOCKS5全面支持UDP).这使得SOCKS无
法代理象talk,
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 210.32.151.168]