Web服務器安全完全指南
更新時間:2007年08月02日 22:13:14 作者:
在計算機網絡日益普及的今天,計算機安全不但要求防治計算機病毒,而且要提高系統(tǒng)抵抗黑客非法入侵的能力,還要提高對遠程數(shù)據傳輸?shù)谋C苄裕苊庠趥鬏斖局性馐芊欠ǜ`取。本文僅僅討論在構造Web服務器時可能出現(xiàn)的一些情況,希望能引起重視。
一. 安全漏洞
Web服務器上的漏洞可以從以下幾方面考慮:
1.在Web服務器上你不讓人訪問的秘密文件、目錄或重要數(shù)據。
2.從遠程用戶向服務器發(fā)送信息時,特別是信用卡之類東西時,中途遭不法分子非法攔截。
3.Web服務器本身存在一些漏洞,使得一些人能侵入到主機系統(tǒng),破壞一些重要的數(shù)據,甚至造成系統(tǒng)癱瘓。
4.CGI安全方面的漏洞有:
(1)有意或無意在主機系統(tǒng)中遺漏Bugs給非法黑客創(chuàng)造條件。
(2)用CGI腳本編寫的程序當涉及到遠程用戶從瀏覽器中輸入表格(Form),并進行檢索(Search index),或form-mail之類在主機上直接操作命令時,或許會給Web主機系統(tǒng)造成危險。
5.還有一些簡單的從網上下載的Web服務器,沒有過多考慮到一些安全因素,不能用作商業(yè)應用。
因此,不管是配置服務器,還是在編寫CGI程序時都要注意系統(tǒng)的安全性。盡量堵住任何存在的漏洞,創(chuàng)造安全的環(huán)境。
二. 提高系統(tǒng)安全性和穩(wěn)定性
Web服務器安全預防措施:
1.限制在Web服務器開賬戶,定期刪除一些斷進程的用戶。
2.對在Web服務器上開的賬戶,在口令長度及定期更改方面作出要求,防止被盜用。
3.盡量使FTP、MAIL等服務器與之分開,去掉ftp,sendmail,tftp,NIS, NFS,finger,netstat等一些無關的應用。
4.在Web服務器上去掉一些絕對不用的如SHELL之類的解釋器,即當在你的CGI的程序中沒用到PERL時,就盡量把PERL在系統(tǒng)解釋器中刪除掉。
5.定期查看服務器中的日志logs文件,分析一切可疑事件。在errorlog中出現(xiàn)rm, login, /bin/perl, /bin/sh等之類記錄時,你的服務器可能已經受到了一些非法用戶的入侵。
6.設置好Web服務器上系統(tǒng)文件的權限和屬性,對可讓人訪問的文檔分配一個公用的組,如WWW,并只分配它只讀的權利。把所有的HTML文件歸屬WWW組,由Web管理員管理WWW組。對于Web的配置文件僅對Web管理員有寫的權利。
7.有些Web服務器把Web的文檔目錄與FTP目錄指在同一目錄時,應該注意不要把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》
這樣只能是以域名為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的代碼程序自動調用的解釋文件,即使現(xiàn)在也只能把perl.exe文件存放在CGI-BIN目錄之下。執(zhí)行如:/cgi-bin/perl.exe?&my_script.pl。但是這就
給任何人都有執(zhí)行PERL的可能,當有些人在其瀏覽器的URL中加上如:/cgi-bin/perl.exe?&-e+unlink+%3C*%3E時,有可能造成刪除服務器當前目錄下文件的危險。但是,其他如:O′Reilly WebSite或Purveyor都不存在這種漏洞。
CGI執(zhí)行批處理文件的漏洞:
文件test.bat的內容如下:
@echo off
echo Content-type: text/plain
echo
echo Hello World!
如果客戶瀏覽器的URL為:/cgi-bin/test.bat?&dir,則執(zhí)行調用命令解釋器完成DIR列表。這就讓訪問者有執(zhí)行其他命令可能性。
(2)O′Reilly WebSite server for Windows NT/95
在WebSite1.1B以前的版本中使用批處理文件存在著與Netscape同樣的漏洞,但是,新版關閉了.bat在CGI中的作用。支持PERL,新版將VB和C作為CGI開發(fā)工具。
(3)Microsoft′s IIS Web Server
1996年3月5日前的IIS在NT下的BUG嚴重,可以任意使用command命令。但之后已修補了該漏洞,你可檢查你的可執(zhí)行文件的建立日期。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()之類函數(shù)。
另外,對于數(shù)據的加密與傳輸,目前有SSL、SHTTP、SHEN等協(xié)議供大家研究。
四. 防火墻(Firewall)
1.防火墻的概念
防火墻(Firewall)是指一個由軟件或由軟件和硬件設備組合而成,處于企業(yè)或網絡群體計算機與外界通道(Internet)之間,限制外界用戶對內部網絡的訪問及管理內部用戶訪問外界網絡的權限。
2.防火墻的措施
(1)代理(Proxy)主機"內部網絡--代理網關(Proxy Gateway)--Internet"
這種方式是內部網絡與Internet不直接通訊。就是內部網絡計算機用戶與代理網關采用一種通訊方式,即提供內部網絡協(xié)議(Netbios、TCP/IP等),而網關與Internet之間采取的是標準TCP/IP網絡通訊協(xié)議。這樣使得網絡數(shù)據包不能直接在內外網絡之間進行。內部計算機必須通過代理網關訪問Internet,這樣容易在代理服務器上對內部網絡計算機訪問外界計算機進行限制。另外,由于代理服務器兩端采用不同協(xié)議標準也可以直接阻止外界非法入侵。還有,代理服務器的網關可對數(shù)據封包進行驗證和對密碼進行確認等安全管制。這樣,能較好地控制管理兩端的用戶,起到防火墻作用。
因為這種防火墻措施是采用透過代理服務器進行,在聯(lián)機用戶多時,效率必然受到影響,代理服務器負擔很重,所以許多訪問Internet的客戶軟件在內部網絡計算機中可能無法正常訪問Internet。
(2)路由器加過濾器完成
"內部網絡--過濾器(Filter)--路由器(Router)--Internet"
這種結構由路由器和過濾器共同完成從IP地址或域名上對外界計算機訪問內部網絡的限制,也可以指定或限制內部網絡訪問Internet。路由器僅對主機上特定的PORT上的數(shù)據通訊加以路由,而過濾器則執(zhí)行篩選、過濾、驗證及其安全監(jiān)控,這樣可以很大程度上隔斷內外網絡間的不正常的訪問登錄。
一. 安全漏洞
Web服務器上的漏洞可以從以下幾方面考慮:
1.在Web服務器上你不讓人訪問的秘密文件、目錄或重要數(shù)據。
2.從遠程用戶向服務器發(fā)送信息時,特別是信用卡之類東西時,中途遭不法分子非法攔截。
3.Web服務器本身存在一些漏洞,使得一些人能侵入到主機系統(tǒng),破壞一些重要的數(shù)據,甚至造成系統(tǒng)癱瘓。
4.CGI安全方面的漏洞有:
(1)有意或無意在主機系統(tǒng)中遺漏Bugs給非法黑客創(chuàng)造條件。
(2)用CGI腳本編寫的程序當涉及到遠程用戶從瀏覽器中輸入表格(Form),并進行檢索(Search index),或form-mail之類在主機上直接操作命令時,或許會給Web主機系統(tǒng)造成危險。
5.還有一些簡單的從網上下載的Web服務器,沒有過多考慮到一些安全因素,不能用作商業(yè)應用。
因此,不管是配置服務器,還是在編寫CGI程序時都要注意系統(tǒng)的安全性。盡量堵住任何存在的漏洞,創(chuàng)造安全的環(huán)境。
二. 提高系統(tǒng)安全性和穩(wěn)定性
Web服務器安全預防措施:
1.限制在Web服務器開賬戶,定期刪除一些斷進程的用戶。
2.對在Web服務器上開的賬戶,在口令長度及定期更改方面作出要求,防止被盜用。
3.盡量使FTP、MAIL等服務器與之分開,去掉ftp,sendmail,tftp,NIS, NFS,finger,netstat等一些無關的應用。
4.在Web服務器上去掉一些絕對不用的如SHELL之類的解釋器,即當在你的CGI的程序中沒用到PERL時,就盡量把PERL在系統(tǒng)解釋器中刪除掉。
5.定期查看服務器中的日志logs文件,分析一切可疑事件。在errorlog中出現(xiàn)rm, login, /bin/perl, /bin/sh等之類記錄時,你的服務器可能已經受到了一些非法用戶的入侵。
6.設置好Web服務器上系統(tǒng)文件的權限和屬性,對可讓人訪問的文檔分配一個公用的組,如WWW,并只分配它只讀的權利。把所有的HTML文件歸屬WWW組,由Web管理員管理WWW組。對于Web的配置文件僅對Web管理員有寫的權利。
7.有些Web服務器把Web的文檔目錄與FTP目錄指在同一目錄時,應該注意不要把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》
這樣只能是以域名為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的代碼程序自動調用的解釋文件,即使現(xiàn)在也只能把perl.exe文件存放在CGI-BIN目錄之下。執(zhí)行如:/cgi-bin/perl.exe?&my_script.pl。但是這就
給任何人都有執(zhí)行PERL的可能,當有些人在其瀏覽器的URL中加上如:/cgi-bin/perl.exe?&-e+unlink+%3C*%3E時,有可能造成刪除服務器當前目錄下文件的危險。但是,其他如:O′Reilly WebSite或Purveyor都不存在這種漏洞。
CGI執(zhí)行批處理文件的漏洞:
文件test.bat的內容如下:
@echo off
echo Content-type: text/plain
echo
echo Hello World!
如果客戶瀏覽器的URL為:/cgi-bin/test.bat?&dir,則執(zhí)行調用命令解釋器完成DIR列表。這就讓訪問者有執(zhí)行其他命令可能性。
(2)O′Reilly WebSite server for Windows NT/95
在WebSite1.1B以前的版本中使用批處理文件存在著與Netscape同樣的漏洞,但是,新版關閉了.bat在CGI中的作用。支持PERL,新版將VB和C作為CGI開發(fā)工具。
(3)Microsoft′s IIS Web Server
1996年3月5日前的IIS在NT下的BUG嚴重,可以任意使用command命令。但之后已修補了該漏洞,你可檢查你的可執(zhí)行文件的建立日期。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()之類函數(shù)。
另外,對于數(shù)據的加密與傳輸,目前有SSL、SHTTP、SHEN等協(xié)議供大家研究。
四. 防火墻(Firewall)
1.防火墻的概念
防火墻(Firewall)是指一個由軟件或由軟件和硬件設備組合而成,處于企業(yè)或網絡群體計算機與外界通道(Internet)之間,限制外界用戶對內部網絡的訪問及管理內部用戶訪問外界網絡的權限。
2.防火墻的措施
(1)代理(Proxy)主機"內部網絡--代理網關(Proxy Gateway)--Internet"
這種方式是內部網絡與Internet不直接通訊。就是內部網絡計算機用戶與代理網關采用一種通訊方式,即提供內部網絡協(xié)議(Netbios、TCP/IP等),而網關與Internet之間采取的是標準TCP/IP網絡通訊協(xié)議。這樣使得網絡數(shù)據包不能直接在內外網絡之間進行。內部計算機必須通過代理網關訪問Internet,這樣容易在代理服務器上對內部網絡計算機訪問外界計算機進行限制。另外,由于代理服務器兩端采用不同協(xié)議標準也可以直接阻止外界非法入侵。還有,代理服務器的網關可對數(shù)據封包進行驗證和對密碼進行確認等安全管制。這樣,能較好地控制管理兩端的用戶,起到防火墻作用。
因為這種防火墻措施是采用透過代理服務器進行,在聯(lián)機用戶多時,效率必然受到影響,代理服務器負擔很重,所以許多訪問Internet的客戶軟件在內部網絡計算機中可能無法正常訪問Internet。
(2)路由器加過濾器完成
"內部網絡--過濾器(Filter)--路由器(Router)--Internet"
這種結構由路由器和過濾器共同完成從IP地址或域名上對外界計算機訪問內部網絡的限制,也可以指定或限制內部網絡訪問Internet。路由器僅對主機上特定的PORT上的數(shù)據通訊加以路由,而過濾器則執(zhí)行篩選、過濾、驗證及其安全監(jiān)控,這樣可以很大程度上隔斷內外網絡間的不正常的訪問登錄。
相關文章
詳細的Mysql安裝 圖解win2003+iis6+php+gd2+mysql安裝配置
詳細的Mysql安裝 圖解win2003+iis6+php+gd2+mysql安裝配置...2007-05-05HTTP 錯誤 403.1 - 禁止訪問:執(zhí)行訪問被拒絕。 解決方法該頁無法顯示
HTTP 錯誤 403.1 - 禁止訪問:執(zhí)行訪問被拒絕。 解決方法該頁無法顯示,您試圖從目錄中執(zhí)行 CGI、ISAPI 或其他可執(zhí)行程序,但該目錄不允許執(zhí)行程序2007-07-07