1.6 因特网提供的主要服务
本节将概括地介绍因特网的一些标准服务,这些服务开始都是由Unix操作系统提供的,现在大部分服务在Windows上也都实现了。应当注意的是,基本上每一种协议都有其安全性问题,系统管理员在进行设置时都应当参照相应的手册认真地进行设置,以免给黑客留下可乘之机。
1.6.1 远程终端访问服务
远程终端访问(Telnet)是一种因特网远程终端访问标准。它能够真实地模仿远程终端,但是不具有图形功能,它仅提供基于字符应用的访问。Telnet允许为任何站点上的合法用户提供远程访问权,而不需要做特殊约定。
Telnet并不是一种非常安全的服务,虽然在登录时要求用户认证。由于Telnet发送的信息都未加密,所以它容易被网络监听。只有当远程机和本地站点之间的网络通信安全时,Telnet才是安全的。这就意味着在因特网上 Telnet 是不安全的,现在有一种安全的登录客户程序,然而应用得并不多,主要是因为这在服务器端要有相应的服务器程序。
除了Telnet,还有几种能用于远程终端访问和执行的程序,如rlogin、rsh和on,在受托的环境里使用这些程序,允许用户远程登录而无需重新输入口令。它们登录的主机相信用户所用的主机已对其用户做过认证。但是使用上述这几个命令是特别不安全的,容易受到IP欺骗和名字欺骗以及其他欺骗技术的攻击。托管主机模式不适合在因特网上使用。事实上,因为地址信任非常不安全,所以不要相信它们说是来自哪个主机的数据包。
在没有防火墙保护的网络内使用rlogin和rsh是可以的,这取决于企业内部的安全措施。然而, on依靠客户机程序进行安全检查,每个人都可以假冒客户机而回避检查,因此,on是很不安全的,即便在设有防火墙的局域网内使用(它能让任何一个用户以其他用户的名义运行任何一个命令)。
1.6.2 文件传输服务
文件传输协议(FTP)是为进行文件共享而设计的因特网标准协议。通常情况下使用匿名FTP,这使没有得到全部授权访问FTP服务器的远程用户可以传输能够被共享的文件。如果运行FTP服务器,用户就可能在未经允许登录的情况下取得存放在系统中一个分离的公共区域中的文件,并可能取得系统中的任何东西。站点上的匿名FTP区可能存有机构的文件档案、软件、图片以及其他类型的信息,这些信息是人们需得到的,或是希望共享的。
使用匿名FTP,用户可用“匿名”用户名登录FTP服务器。通常情况下匿名FTP要求用户提供完整的E-mail地址作为响应。然而在大多数站点上,这个要求不是强制性的,只要它看起来像个E-mail地址(例如,它是否包含@符号),匿名FTP不对口令做任何的校验。
要确保匿名FTP服务器只能存取允许存取的信息,不允许外人存取本机的其他资料,如私人资料等。
如果不希望外界阅读的文件,最好不给匿名的FTP区提供文件。可能的话就采用其他传输方式。否则,可使用改进的FTP服务器。
好的FTP服务器应提供了如下适用于匿名FTP服务器的功能。
① 更好更完善的日志,它可记录、装载、下载或传送它的每个命令。
② 提供路径的信息,当用户访问那个路径时,为用户显示关于路径内容的有关信息。
③ 能对用户分类。
④ 对某类用户可加以限制,如限制同时访问服务器的匿名用户的个数,此限制可按某天什么时间或某周哪一天进行调整。使用这些限制能控制FTP服务器的负荷。
⑤ 在传输文件时,具有压缩和自动处理文件的能力。
⑥ 非匿名chroot访问。只需限制对机器访问的用户,这就允许建立一个特别账号访问一些文件。对匿名用户来说,如不给他们随意访问他人磁盘的能力,他们就无法看到这些文件。
无论使用何种FTP守护程序,都将面临一个特殊的问题,即匿名FTP区具有可写路径(通常为incoming)。站点经常为FTP区提供空间,以便外部用户能用它上载文件。可写路径是非常有用的,但也有其不完美的地方。因为这样的可写路径一旦被发现,就会被因特网上的“地下”用户用作“仓库”和非法资料的集散地。网上很多盗版软件包和黄色影像文件就是通过这种方式传播的。
当非法传播者发现一个新站点时,一般是建立一个隐藏路径,在此路径下存入他们的文件,或黄色图像文件。他们给路径起个无害的而且隐蔽的名字,例如:“..”(两个点两个空格)。通常,检查匿名FTP区时,很少会注意到这样的文件名。因为以“.”开头的文件和路径常被Unix中的“ls”命令忽视,除非给这个命令加以特殊显示参数或在这个命令根账号下运行,才能显示出来。
怎么才能保护匿名FTP区不受此类滥用的干扰呢?下面介绍的一些方法可以解决这个问题。
① 确保入站路径只可写。如果使用 Unix 机作为堡垒主机,最明智的方法就是使“入口”路径只可写(路径权限773或733,也就是rwxrwx-wx或rwx-wx-wx),确保这个路径的所有者为某个用户而不是“FTP”用户。如果状态是773而不是733,那也要确保这个路径的组号是其他某个组而不是默认的“FTP”登录组。
这种方法所做的仅仅是保证人们不能看这个顶层路径下的内容。但是这个路径下的子路径还是可以被看到,如果他们之间互相约定好文件名进行交流,他们仍能访问在顶层路径下自己建立的路径和文件。所以,这种方法并不是非常有效。
② 取消创建子路径和某些文件的权力。在匿名FTP服务器上取消以特殊字符创建路径和文件的权力,可通过配置文件或者修改服务器源码来实现。
这种方法不是阻止人们在提供的可写路径上载资料,而是简单地使人们更难隐藏文件,或更难逃脱监督。即使是这样,也要每天检查可写区(查看文件内容,不只是看文件名),确保所有文件及其内容是属于允许范围之内的。
③ 预定装载,也就是在装载文件与路径时必须经预先安排。这些站点通过建立隐含的可写子目录,使入侵者看不到这些子目录。
对FTP服务器来讲,假设使用Unix操作系统,其步骤如下。
• 建立一个“入口”路径。
• 建立一个子目录,起个“秘密”的名字,就像所选的口令字一样,不易被人猜到。
• 使带有秘密名的子目录可写。
• 使父目录(入口路径)状态为只可执行(状态111,即--x--x--x)。
例如:
tulip# cd ~ftp/pub
tulip# mkdir incoming
tulip# cd incoming
tulip# mkdir 23_free
tulip# chmod a+w 23_free
tulip# cd ..
tulip# chmod a=x incoming
用户只有知道它像口令一样难猜的路径名(假设预先告诉了他们)后,才能往可写路径装载文件。如需要,可以建立任意多个这样的秘密的子路径,并可随时改名、删除。如在站点建立FTP工作区顶层索引,应该确保索引文件中不含这些秘密路径。最简单的实现方法是做个FTP用户登录执行索引命令,以使它和某个匿名FTP具有相同的权限。
④ 文件及时转移。把上载到可写路径下的文件及时转移到另外一个只有特权用户才能看到的地方,这些被转移的文件只有经过重新检查才能被允许放到公用路径下供人下载。这可以通过写一个很小的Shell程序,然后把这个Shell程序作为一个cron作业来做到。
1.6.3 电子邮件服务
电子邮件(E-mail)是最流行和最基本的网络服务之一。它的危险性相对小些,但并不是没有风险。伪电子邮件是常有的,它可能会对用户进行某种欺骗以达到某种目的,如冒充管理员要求更改为指定的口令。接收的电子邮件耗费磁盘空间,而且可能存在潜在的侵袭服务,邮件炸弹就是通过往信箱里送入大量的邮件而达到这种攻击的目的。以前的邮件侵袭往往是数据驱动的,如在某些智能终端上阅读邮件会执行系统的某些命令,现在这种侵袭并不多见。但是自从有了 MIME格式电子邮件系统,电子邮件现在能够携带各种各样的程序,这些程序运行时无法控制,有可能会破坏系统或偷窃信息。目前这种危害是人们最担心的一种危害。
简单邮件传输协议(SMTP)是收发电子邮件的一种因特网标准协议。一般来说,SMTP本身不存在安全问题,但 SMTP 服务器则可能有安全问题。发送邮件给用户所用的程序通常也应当能被任何一个接收邮件的用户所运行,这就使它得到广泛的应用,同时也为侵袭者提供了目标。
Unix操作系统中最常用的SMTP服务软件是sendmail。由于sendmail的功能强大和程序的复杂性,其中任何一个版本都存在相应的缺陷,这使得它曾经受过一些干扰,最著名的就是全世界都知道的因特网蠕虫程序。然而,许多可用的替换软件并不比sendmail强。它们很少受侵袭是因为它们不很流行,而不是因为它们足够安全。有些程序例外,设计时明显考虑到了安全问题,但这些软件并不满足所有的、任意格式邮件的收发要求。综合看来,在安全的站点上,sendmail 还是最好的。
1.6.4 WWW服务
WWW即World Wide Web,中文称为环球信息网,也简称为Web,两者实际上是同一含义。创建 WWW 是为了解决因特网上的信息传递问题,WWW 创建以前,几乎所有的信息发布都是通过E-mail、FTP、Archie和Gopher实现的。
1.WWW
WWW是因特网上HTTP服务器的集合体。Web使用超文本技术链接Web文档,其中包括文本、图片、话音文件、视频文件以及其他格式的文件,可用任何方式搜索文档信息,超文本传输提供在因特网上从一个文档到另一个文档的导航功能。不管文档存放在哪里,用户可以很简单地从一个文档过渡到另一个文档,只要用鼠标单击由HTTP链接定义好的某个词或图片就可以了。
HTTP是WWW中的一个主要应用协议,它为用户提供存取Web标准页面的描述语言。它提供基本的文本格式功能(包括插入图片),以及允许把超文本和其他服务器或文件链接起来。
Web 浏览器和服务器难以保证安全。Web 的实用性在很大程度上是基于它的灵活性,正是由于这种灵活性使它不易控制。Web 浏览器依赖于外部程序,一般称为“查看程序”(包括 plug-in 和ActiveX),用它来处理浏览器不能识别的数据类型。目前浏览器能识别的基本数据类型有 HTML、普通文本、JPEG和GIF图片。应非常小心地选择所要配备的查看程序,以免它带来什么危险。
因为HTML文档很容易与其他服务器上的文档链接,所以人们很难弄清楚某个文档是属于谁的。新用户可能不会注意到他们何时从站点的内部文档跑到了外部文档上,他们就会盲目地相信外部文档,因为他们认为自己正在使用内部文档。
大多数Web服务器相当安全,因为它们是相对独立的。可是,它们也能调用外部程序,这些程序并不安全。与对待各种新服务器一样,要谨慎地对待服务器的功能扩展。
2.Gopher
Gopher是一个面向菜单、基于文本的工具,它能帮助用户在因特网上查找信息。Gopher服务器上的信息是以菜单方式管理的,用户可以根据某菜单选择某项。每一项可能是一个文件、一张表格或一个子菜单。有许多不同的Gopher客户机,Gopher客户机和服务器使用一种可扩展数据方案,与Web客户机和服务器一样,因此面临许多同样的安全问题。
3.WAIS
广域信息服务(WAIS)就是用户提出一个简单的请求(通常是一个关键字或短语),WAIS服务器即送来一个包含这些关键字的文档列表,以及相对于每个文档的得分。这个得分反映了关键字被提到的次数和文档的长度。文档列表返回时按得分多少排序,最相关的文档被排在第一位。为了高效快捷地查询,服务器可以对其上的所有文档按内容进行全面检索。可以通过 WAIS 协议客户机访问WAIS服务器或用Web浏览器访问提供HTTP-WAIS网关的站点。
4.Archie
Archie是因特网的一项服务,用来查找匿名FTP服务器上的文件名的目录索引。Archie服务器通常用Telnet和E-mail提供服务,此外,还有专用Archie客户机。使用专用Archie客户机不会给服务器带来沉重的负担。与WAIS一样,Archie也可通过提供HTTP-Archie网关的站点访问Web浏览器。全世界大约只有20个Archie服务器,一个原因是因为运行Archie服务器需要大量资源,另一个原因是它要按一定的规则在网上做大量查询才能得到可用的FTP文件。
与HTTP和Gopher相比,WAIS和Archie很少受到干扰,因为它们不返回任意类型的数据。运行服务器是有风险的,执行这些协议的服务器,包括WAIS和Archie,它们可接收任何查询信息,必须确信它们不会产生不良后果。
1.6.5 DNS服务
DNS服务是将域名和IP地址相互映射到一个分布式数据库,能够使人更方便地访问因特网,而不用去记住能够被机器直接读取的IP数字串。在因特网早期阶段,网上的每个站点都能保留一个主机列表,其中列有相关的每个机器的名字和IP地址。随着联网的主机的增加,使每个站点都保留一份主机列表就不现实了,也很少有站点能够那样做。一方面是如果这样做的话,主机列表会非常大,另一方面是当其他机器改变名字和地址的对应时,主机列表不能及时修改,这两方面的原因都导致主机列表不易修改。取而代之的是使用域名服务(DNS),DNS允许每个站点保留自己的主机信息,也能查询其他站点的信息。DNS本质上不是一个用户级服务,但它是SMTP、FTP和Telnet的基础,实际上其他的服务都用到它,因为用户愿意使用名字而不是那些难记的IP数字。而许多匿名FTP服务器还要进行名字和地址的双重验证,否则不允许从客户机登录。
一般来说,一个企业网都必须使用和提供名字服务,以便加入因特网。然而,提供DNS服务的主要风险是可能泄露内部机器信息。在DNS的数据库文件中往往会包含一些主机信息的记录,这些信息如果不加以保护是很容易被外界知道的,也很容易给攻击者提供一些有用信息,如机器所用的操作系统等。
对那些建立了伪DNS服务器的入侵者,可以通过以下两种方法组合来解决。
(1)使用IP地址(而不是主机名)来认证所需的更安全的服务(防止名字欺骗技术)。
(2)为保证最安全的服务,要认证用户而不是主机名,因为IP地址也不可靠(防止IP欺骗技术)。
1.6.6 网络管理服务
有许多种服务软件用来管理和维护网络,然而大多数用户并不直接使用这些服务软件,但对网络管理员来说,这些软件是很重要的工具。这里并不介绍专用的网络管理系统,只是介绍一些 Unix操作系统本身带有的一些网络管理命令。
ping和traceroute是两种常用的网络管理工具。它们以前是在Unix上执行的,但现在却在几乎所有与因特网连接的平台上执行。它们没有自己的协议,只使用因特网控制信息协议(ICMP)。
ping 只用于测试主机的连通性,它判断能否对一个给定的主机收发数据包,通常还得到一些附加信息,如收发数据包的往返时间有多长。运行命令“ping ns.cnc.ac.cn”可以得到下面的信息:
PING ns.cnc.ac.cn:(159.226.l.l):56 data bytes
64 bytes from 159.226.1.1:icmp_seq=0 ttl=252 time=11 ms
64 bytes from 159.226.1.1:icmp_seq=1 ttl=252 time=3 ms
64 bytes from 159.226.1.1:icmp_seq=2 ttl=252 time=5 ms
64 bytes from 159.226.1.1:icmp_seq=3 ttl=252 time=3 ms
这些信息表明本地和 ns.cnc.ac.cn 这台机器是连通的,并且连接时间的大概范围也给出了(如11ms,3ms,5ms)。
traceroute不仅判别是否能与一个给定的主机建立联系(以及它能否应答),而且还给出收发数据包的路径,这对分析和排除本站点与目标站点之间的故障是很有用的。如运行命令“traceroute ns.cnc.ac.cn”会得到下面的结果:
traceroute to ns.cnc.ac.cn(159.226.1.1), 30 hops max, 40 byte packets
(159.226.41.190) 1 ms 1 ms 1 ms
159.226.41.62 (159.226.41.62) 2 ms 2 ms 6 ms
159.226.250.4 (159.226.250.4) 6 ms 6 ms 6 ms
ns.cnc.ac.cn (159.226.1.1) 3 ms * 6 ms
上面的显示结果表明从本地到ns.cnc.ac.cn途中要经历3个站点:159.226.41.190,159.226.41.62和159.226.250.4。
ping 和 traceroute 不需要专用的服务程序(即守护进程),可以使用数据包过滤器防止在站点上收发数据包,但通常是不必要的,使用ping或traceroute出站没有风险,入站风险也不大。危险的是,它们能被用来确定内部网上有哪些主机,可作为侵袭的第一步。因此,许多站点阻止或限制相关的数据包入站。
简单网络管理协议(SNMP)是为集中管理网络设备(路由器、网桥、集中器、集线器及其一些扩展设备甚至主机)而设计的一种协议,SNMP管理站可用SNMP从网络设备上查询信息,也可用来控制网络设备的某些功能(启动或关闭某个接口或设置参数等)。同时利用SNMP,网络设备也可以向 SNMP 管理站提供紧急信息(例如,掉线信息,某条网线出现大量错误等)。使用 SNMP 的主要安全问题是别人可能控制并重新配置网络设备以达到他们的目的。