在電腦網路日益普及的今天,電腦安全不僅要求防治電腦病毒,而且要提高系統抵抗駭客非法入侵的能力,還要提高對遠端資料傳輸的保密性,避免在傳輸途中遭受非法竊取。本文僅討論建構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或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
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 <*>時,有可能造成刪除伺服器目前目錄下檔案的危險。但是,其他如: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伺服器本身都存在一些安全上的漏洞,都是在版本升級過程中被不斷更新了,在此就不一一列舉了。
[Cut-Page]
三. 從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,這樣容易在代理伺服器上對內部網路電腦存取外界電腦進行限制。另外,由於代理伺服器兩端採用不同協定標準也可以直接阻止外界非法入侵。還有,代理伺服器的網關可對資料封包進行驗證和對密碼進行確認等安全管制。這樣,能較好地控制管理兩端的用戶,並起到防火牆作用。
因為這種防火牆措施是採用透過代理伺服器進行,在線上用戶多時,效率必然受到影響,代理伺服器負擔很重,所以許多存取網路的客戶軟體在內部網路電腦中可能無法正常存取網路。
(2)路由器加過濾器完成
“內部網路--過濾器(Filter)--路由器(Router)--Internet”
這種結構由路由器和過濾器共同完成從IP位址或網域名稱上對外界電腦存取內部網路的限制,也可以指定或限制內部網路存取Internet。路由器僅對主機上特定的PORT上的資料通訊加以路由,而過濾器則執行篩選、過濾、驗證及其安全監控,這樣可以很大程度上隔間內外網路間的不正常的存取登入。
[Cut-Page]三. 從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,這樣容易在代理伺服器上對內部網路電腦存取外界電腦進行限制。另外,由於代理伺服器兩端採用不同協定標準也可以直接阻止外界非法入侵。還有,代理伺服器的網關可對資料封包進行驗證和對密碼進行確認等安全管制。這樣,能較好地控制管理兩端的用戶,並起到防火牆作用。
因為這種防火牆措施是採用透過代理伺服器進行,在線上用戶多時,效率必然受到影響,代理伺服器負擔很重,所以許多存取網路的客戶軟體在內部網路電腦中可能無法正常存取網路。
(2)路由器加過濾器完成
“內部網路--過濾器(Filter)--路由器(Router)--Internet”
這種結構由路由器和過濾器共同完成從IP位址或網域名稱上對外界電腦存取內部網路的限制,也可以指定或限制內部網路存取Internet。路由器僅對主機上特定的PORT上的資料通訊加以路由,而過濾器則執行篩選、過濾、驗證及其安全監控,這樣可以很大程度上隔間內外網路間的不正常的存取登入。