在计算机网络日益普及的今天,计算机安全不但要求防治计算机病毒,而且要提高系统抵抗黑客非法入侵的能力,还要提高对远程数据传输的保密性,避免在传输途中遭受非法窃取。本文仅仅讨论在构造
Web 服务器时可能出现的一些情况,希望能引起重视。
一 .
安全漏洞
Web 服务器上的漏洞可以从以下几方面考虑:
1. 在 Web 服务器上你不让人访问的秘密文件、目录或重要数据。
2. 从远程用户向服务器发送信息时,特别是信用卡之类东西时,中途遭不法分子非法拦截。
3.Web 服务器本身存在一些漏洞,使得一些人能侵入到主机系统,破坏一些重要的数据,甚至造成系统瘫痪。
4.CGI 安全方面的漏洞有:
(1) 有意或无意在主机系统中遗漏 Bugs 给非法黑客创造条件。
(2) 用 CGI 脚本编写的程序当涉及到远程用户从浏览器中输入表格 (Form) ,并进行检索
(Search index) ,或 form-mail 之类在主机上直接操作命令时,或许会给 Web 主机系统造成危险。
5. 还有一些简单的从网上下载的 Web 服务器,没有过多考虑到一些安全因素,不能用作商业应用。
因此,不管是配置服务器,还是在编写 CGI
程序时都要注意系统的安全性。尽量堵住任何存在的漏洞,创造安全的环境。
二 .
提高系统安全性和稳定性
Web 服务器安全预防措施:
1. 限制在 Web 服务器开账户,定期删除一些断进程的用户。
2. 对在 Web 服务器上开的账户,在口令长度及定期更改方面作出要求,防止被盗用。
3. 尽量使 FTP 、 MAIL 等服务器与之分开,去掉 ftp,sendmail,tftp,NIS,
NFS , finger,netstat 等一些无关的应用。
4. 在 Web 服务器上去掉一些绝对不用的如 SHELL 之类的解释器,即当在你的 CGI
的程序中没用到 PERL 时,就尽量把 PERL 在系统解释器中删除掉。
5. 定期查看服务器中的日志 logs 文件,分析一切可疑事件。在 errorlog 中出现 rm,
login, /bin/perl, /bin/sh 等之类记录时,你的服务器可能已经受到了一些非法用户的入侵。
6. 设置好 Web 服务器上系统文件的权限和属性,对可让人访问的文档分配一个公用的组,如 WWW
,并只分配它只读的权利。把所有的 HTML 文件归属 WWW 组,由 Web 管理员管理 WWW 组。对于 Web 的配置文件仅对
Web 管理员有写的权利。
7. 有些 Web 服务器把 Web 的文档目录与 FTP 目录指在同一目录时,应该注意不要把 FTP
的目录与 CGI-BIN 指定在一个目录之下。这样是为了防止一些用户通过 FTP 上载一些如 PERL 或 SH 之类程序,并用
Web 的 CGI-BIN 去执行,造成不良后果。
8. 通过限制许可访问用户 IP 或 DNS ,如在 NCSA 中的 access.conf 中加上:
《 Directory /full/path/to/directory 》
《 Limit GET POST 》
order mutual-failure
deny from all
allow from 168.160.142. abc.net.cn
《 /Limit 》
《 /Directory 》
这样只能是以域名为 abc.net.cn 或 IP 属于 168.160.142 的客户访问该
Web 服务器。
对于 CERN 或 W 3C 服务器可以这样在 httpd.conf 中加上:
Protection LOCAL-USERS {
GetMask @(*.capricorn.com, *.zoo.org, 18.157.0.5)
}
Protect /relative/path/to/directory/* LOCAL-USERS
9.WINDOWS 下 HTTPD
(1)Netscape Communications Server for NT
PERL 解释器的漏洞:
Netscape Communications Server 中无法识别 CGI-BIN
下的扩展名及其应用关系,如 .pl 文件是 PERL 的代码程序自动调用的解释文件,即使现在也只能把 perl.exe 文件存放在
CGI-BIN 目录之下。执行如: /cgi-bin/perl.exe?&my_script.pl 。但是这就
给任何人都有执行 PERL 的可能,当有些人在其浏览器的 URL 中加上如:
/cgi-bin/perl.exe?-e+unlink+% 3C *%3E
时,有可能造成删除服务器当前目录下文件的危险。但是,其他如: O′Reilly WebSite 或 Purveyor
都不存在这种漏洞。
CGI 执行批处理文件的漏洞 :
文件 test.bat 的内容如下:
@echo off
echo Content-type: text/plain
echo
echo Hello World!
如果客户浏览器的 URL 为: /cgi-bin/test.bat?&dir
,则执行调用命令解释器完成 DIR 列表。这就让访问者有执行其他命令可能性。
(2)O′Reilly WebSite server for Windows NT/95
在 WebSite1.1B 以前的版本中使用批处理文件存在着与 Netscape
同样的漏洞,但是,新版关闭了 .bat 在 CGI 中的作用。支持 PERL ,新版将 VB 和 C 作为 CGI 开发工具。
(3)Microsoft′s IIS Web Server
1996 年 3 月 5 日前 的 IIS 在 NT 下的 BUG 严重,可以任意使用 command
命令。但之后已修补了该漏洞,你可检查你的可执行文件的建立日期。 IIS3.0 还存在一些安全 BUG ,主要是 CGI-BIN
下的覆给权利。另外,许多 Web 服务器本身都存在一些安全上的漏洞,都是在版本升级过程中被不断更新了,在此就不一一列举了。
三 . 从
CGI 编程角度考虑安全
1. 采用编译语言比解释语言会更安全些 , 并且 CGI 程序应放在独立于 HTML 存放目录之外的
CGI-BIN 下 , 这是为了防止一些非法访问者从浏览器端取得解释性语言的原代码后从中寻找漏洞。
2. 在用 C 来编写 CGI 程序时应尽量少用 popen() 、 system() 、所有涉及
/bin/sh 的 SHELL 命令以及在 PERL 中的 system() 、 exec() 、 open() 、 eval()
等 exec 或 eval 之类命令。
在由用户填写的 form 还回 CGI 时,不要直接调用 system() 之类函数。
另外,对于数据的加密与传输,目前有 SSL 、 SHTTP 、 SHEN 等协议供大家研究。
四 . 防火墙
(Firewall)
1. 防火墙的概念
防火墙 (Firewall)
是指一个由软件或由软件和硬件设备组合而成,处于企业或网络群体计算机与外界通道 (Internet)
之间,限制外界用户对内部网络的访问及管理内部用户访问外界网络的权限。
2. 防火墙的措施
(1) 代理 (Proxy) 主机
“ 内部网络 -- 代理网关 (Proxy
Gateway)--Internet”
这种方式是内部网络与 Internet
不直接通讯。就是内部网络计算机用户与代理网关采用一种通讯方式,即提供内部网络协议 (Netbios 、 TCP/IP 等 )
,而网关与 Internet 之间采取的是标准 TCP/IP
网络通讯协议。这样使得网络数据包不能直接在内外网络之间进行。内部计算机必须通过代理网关访问 Internet
,这样容易在代理服务器上对内部网络计算机访问外界计算机进行限制。另外,由于代理服务器两端采用不同协议标准也可以直接阻止外界非法入侵。还有,代理服务器的网关可对数据封包进行验证和对密码进行确认等安全管制。这样,能较好地控制管理两端的用户,起到防火墙作用。
因为这种防火墙措施是采用透过代理服务器进行,在联机用户多时,效率必然受到影响,代理服务器负担很重,所以许多访问
Internet 的客户软件在内部网络计算机中可能无法正常访问 Internet 。
(2) 路由器加过滤器完成
“ 内部网络 -- 过滤器 (Filter)-- 路由器 (Router)--Internet”
这种结构由路由器和过滤器共同完成从 IP
地址或域名上对外界计算机访问内部网络的限制,也可以指定或限制内部网络访问 Internet 。路由器仅对主机上特定的 PORT
上的数据通讯加以路由,而过滤器则执行筛选、过滤、验证及其安全监控,这样可以很大程度上隔断内外网络间的不正常的访问登录。
【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。