computer 版 (精华区)
发信人: Aug (如风), 信区: network
标 题: CGI的安全<转载> (5)
发信站: 听涛站 (Tue Mar 14 15:58:03 2000), 转信
1-2-3.增强你的Unix服务器的安全
一个安全的Unix系统对于Web文件服务来说是个非常优秀的平台。然而,在
加强服务器安全和正确配置Unix的Web服务器的过程中伴随着很多复杂的问题。
你应该做的第一件事就是确定你的机器已经尽可能的安全了。
将你不需要的网络服务关掉,不管对你而言他们是多么没有害处。任何人未
必能使用finger协议侵入你的系统,举个例子,它提供了一些用户的信息,然
而,finger可以提供给hacker关于你的系统的有用的信息。
加强你的系统的内部安全。如果hacker设法破解了一个用户帐号,要确定这
个hacker不会获得额外的权限。安全shadow型的password文件和去除设定用户
权限的脚本(脚本以所有者的身份运行,即使是由其他用户调用时)是很有用的。
加强Unix机器的安全是一个复杂的课题,超出了本书的范围。我强烈建议你
购买一本这方面的书,阅读Internet上这方面的资源,如果有必要的话,甚至
可以雇佣一个咨询顾问。不要低估加强你的机器安全的重要性。
另外,分配隔离的空间给你的Web服务器和文件。你的文件目录的用途是将这
些文件提供给其他人使用,可能是整个Internet,因此你不要将你别人知道的
任何东西放到这些目录里。你的服务器目录包含重要的日志和配置信息,并且
你要尽可能的不要让你的内部用户看到或修改它。
要明智的设置你的目录和服务器的所有权和使用权。为Web相关的目录建立一
个新的用户和组是通常的一个方法。确定非特权用户不能更改服务器或文件目
录。
你的服务器千万不要以root身份运行(running as root)。在Unix系统中,
只有root能够访问小于1234的端口。因为缺省的Web服务器运行于端口80,你需
要是root来启动一个Web服务器。然而,在一个Web服务器以root身份运行以后,
它可以修改自身进程的所有权,或者改变它用以处理连接的子进程的所有权。
其中任何一种方法都需要服务器以非root身份运行。确定配置你的Web服务器
使其以非root身份运行,最好是以一个完全不存在的用户如nobody。这样,如
果在你的Web服务器或CGI程序中有漏洞时,它可以降低潜在的危害。
禁止所有你不需要的服务器特性。如果你开始禁止了一个特性,而后来又决
定使用它时,你总是可以将其改回来的。像SSI和SSL都是你可能需要禁止的。
如果你的用户不需要通过你的服务器将他们个人的Web文件用于服务,就需要
使Web目录无效。这样一来,你就可以完全地控制你的机器中用于服务的所有文
件,这对于通常的维护和安全是很重要的。
如果你的用户需要将他们个人文件用于服务(例如,如果你是一个
IAP(Internet Access Provider),确信他们不能超越你的主范围。认真考虑一
下用户是否需要在他们的个人目录里运行CGI程序的权力。前面我们已经提到,
最好将所有的CGI放到一个集中的位置。
--------------------------------------------------------------------
CGIWRAP:
在Web上一个流行的软件包是cgiwrap,由Nathan Neulinger(nneul@umr.edu)
编写。这个软件包允许用户作为程序的拥有者运行他们自己的CGI程序,而不是
作为服务器的所有者。
不清楚仅仅允许所有人运行他们自己的未包装的CGI程序是更否更有益。一方
面,一个糟糕的CGI脚本由nobody拥有比起由一个实际存在的用户拥有来说,前
者可能造成的危害更小。另一方面,如果CGI程序以nobody运行对系统造成了破
坏,那么责任在于系统管理员,相反,如果只是一个特定的用户文件被破坏了,
那么责任终将是用户的。
我的建议是不要赋予用户运行个人CGI的权力,如果这样不可能,那么你最终
使用cgiwrap还是一个简单的程序取决于你想责任出在哪里。
---------------------------------------------------------------------
最后,你可能需要考虑你的Web文件建立一个chroot环境。在Unix系统中,你
可以通过使用chroot来保护目录。当server运行在一个chroot的目录中时,它看
不到这个目录之外的任何东西。在一个chroot环境中,如果有人想侵入你的Web
服务器,他们只会破坏这个目录里的文件。
注意,一个chroot环境仅适用于当Web服务器提供单独的文件资源。如果你的
Web服务器将用于服务的用户文件存放在多个目录中时,想建立一个有效的
chroot环境几乎是不可能的。另外,解释器(例如Perl或者一个shell)的存在也
会降低chroot环境的性能。在一个没有任何shell和解释器的chroot环境中,侵
入系统的人最坏情况下能改变和破坏你的文件,如果存在解释器,潜在的危害
会上升。
--
※ 修改:.Aug 于 Mar 14 16:00:07 修改本文.[FROM: 匿名天使的家]
※ 来源:.听涛站 cces.net.[FROM: 匿名天使的家]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:0.826毫秒