帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
Linux-based Web Server之網路安全探討
 

【作者: 呂俊良】   2000年07月01日 星期六

瀏覽人次:【5125】

前言

自今年初以來發生了許多病毒攻擊的事件,諸如︰CIH、Melissa與ILOVEYOU等,病毒似乎防不勝防。筆者記得就讀大學二年級時碰到的第一隻病毒是C_BRAIN,當時要防止病毒的肆虐是輕而易舉、相當容易─就是不要隨便執行來路不明的檔案。幾曾何時,這個定律在Internet時代已不再成立。Internet雖然帶來了便利,產生了許多商機,但也萌生了許多安全問題。如何維護網路的安全,不僅重要,而且複雜。當然病毒只是網路安全的一部份,也不是本文討論的重點。網路安全性這個問題的範圍相當大,可以從內部/外部、人為/軟硬體、使用者資訊安全教育、電腦/網路安全管理、重要資料備份/完整備份管理政策,以及機房進出管制等方面來討論。


Internet普及,為公司架設一個WWW伺服器,製作漂亮的Homepage已成為各大公司必備工作。稍具規模的公司甚至擁有兩個以上的網站。再加上許多網路公司年輕員工一夕致富的例子,吸引許多人紛紛投入這個行業。以筆者服務的公司而言,尋求一位Programmer所收到的網路履歷表中,100封網路求職信大概有75封是應徵網頁設計,這些人又以非資訊科系及社會新鮮人佔大多數。即使是資訊科系畢業生,問起他們是否懂得C/C++程式設計,通常得到的答案為「學校修過,但精通Dreamweaver、Frontpage及ASP」。你很難想像在日益複雜的網路時代,這會有多大的弊端產生。因此,本文試著從Linux-based Web Server的安全建置作個粗淺的討論。文中所討論的係以Apache為主,但也會比較到一切其他的Web Server。


Linux-based Web Server的優缺點

Netscape的技術總監Eric Hahn在其Heresy Document中曾提到Linux的五大優點:免費、技術優異、原始碼開放、有較多的開發者及能提供較佳支援。以筆者所用的Linux為例,1200元新台幣的盒裝版內附9片光碟與兩本說明書,還加送一隻可愛的企鵝,其中包含了眾多功能強大的Server軟體如︰Apache Server、Mail Sever、Ftp Server、Firewall + Proxy and Commercial Database,可說物超所值。而Linux當中所附的Apache Server是Internet中使用最廣的Web Server,我們從Apache與微軟IIS的比較(表一),以及Apache的規格說明(表二)可以得到一些概念。



《表一 June 1999 Market Penetration》
《表一 June 1999 Market Penetration》

《表二 Apache規格說明》
《表二 Apache規格說明》

由表一與表二可以看出免費並不代表功能不完整或不實用。當然,除了Apache Server外,Linux上還有許多Web Server,且各有各的優點。不同於Windows NT,由於Microsoft的強勢Marketing策略,配合完整的發展工具,因此Microsoft的IIS幾乎成為Windows NT的唯一選擇。但反觀Linux,於Linux上的Web Server可以說是蓬勃發展,而且大多免費且為Open Source。以下列舉常用的Web Server︰


●AOLserver a full-featured web server from AOL


●Apache HTTP Server a public domain HTTP server for UNIX and Linux


●Apache-SSL secure webserver, based on Apache and SSLeay


●Boa a fast, lightweight web server for unix-alike computers


●Hawkeye a complete, highly extensible Internet/Intranet server suite


●NCSA httpd Server web server from the developers of Mosaic


●Roxen a modularised, object oriented World Wide Web server


●Stronghold commercial version of Apache web-server which uses SSL


●XS-HTTPD 2.3 very small and fast UNIX WWW server


●W3C (CERN) httpd web server from the World Wide Web Consortium (CERN)


眾所皆知,Linux的特點為開放原始碼(Open Source Code),平心而論,Open Source是武器也是罩門,對許多使用Open Source的WWW Server之機構而言,系統管理者可以迅速找到程式的漏洞而加以補救,但這也意味著入侵者可以檢視原始碼而尋找後門。


有一個相當有名的小故事,Netscape於釋出Mozilla時,曾小心翼翼地將程式中有關於加密技術的模組拿掉,原因很簡單,因為美國政府基於安全理由,不允許此類的技術輸出美國本土。但就在Mozilla釋出不到15個小時,有個名為Mozilla Crypto Group的團體在Netscape的模組中,以SSLeay為基礎,提供了美國政府所不允許的全功能加密編碼系統。這個團體有12個成員,其中9個在澳洲,3個在英國。藉由網路團體的支援和其他的Open Source,在短短的15個小時中解掉一個重大的安全問題。但你可以想像相同的情況在Window NT4.0 + IIS4.0的狀況了。以下列舉一些提供加密技術的網站︰


●SSLeay︰http://www2.psy.uq.edu.au/~ftp/Crypto


●OpenSSL︰http://www.openssl.org


●Apatch-SSL︰http://www.apache-ssl.com/


相同的,Open Source的缺點也為業界所熟知,最有名的就是發生在1988年,被一位名叫Robert T. Morris的人利用的finger臭蟲。原來的fingerd程式有下列幾行:




char line[512];


line[0]='\0';


gets(line);


程式似乎很簡單,但Morris利用get()函數不檢查文字行長度的漏洞,寫了一段程式讓fingerd執行shell程式,再加上fingerd通常以root執行,等於讓入侵者取得所有控制權。


Open Source的開發者來自全球各地是不爭的事實,但即使如此,是否能提供較佳的技術支援,筆者認為這是見仁見智的問題。其實提供較佳的支援與Open Source是相輔相成的,由表一亦可以看出國外對Apache的評價,但國內使用者經常將Free Software的Free範圍擴大到技術支援,也因此造成國內從事Linux Service廠商的困擾。其實以Open Source所省下的軟硬體費用(Linux+Apache所需的硬體需求較小),可以買到物超所值的技術支援,更何況NT所需的技術支援費用更加昂貴且無效率。


建置安全的Linux-based Web Server

在爭奇鬥艷的網路環境中,如何製作一個又炫又酷的Home Page往往反而比起網路安全更令公司所重視。在電子交易還未普及之際,或許看不出問題,但當電子交易成為企業的必須時,安全其實是第一要務。有些建置安全Web Server的問題是經常被忽視的:


CGI的安全問題

Home Page因有Web Server的支援而功能更佳,但也因此而對Client Users和WWW Server產生安全漏洞,例如原本WWW Server只允許存取某些特定的資料夾,但沒有安全概念的CGI Script或Program卻可能無意破壞其他目錄的檔案。無經驗的Web Programmer所寫的CGI Script可能包含某些安全漏洞而被入侵者拿來執行Server上的任何程式。


單純的環境

由於Linux有眾多的網路資源,使其成為相當優秀的網路伺服器,您可以使用Linux來執行Ftp、Telnet、Printer Server、File Server與Mail Server等。但越多的Service在同一台機器上執行,代表可能的漏洞越多,也越容易讓入侵者得逞。


不要以root執行Web Server

在Apache之config檔httpd.conf中有一段設定:




# User/Group: The name (or #number) of the user/group to run httpd as.


# On SCO (ODT 3) use User nouser and Group nogroup


# On HPUX you may not be able to use shared memory as nobody, and the


# suggested workaround is to create a user www and use that user.


# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)


# when the value of (unsigned)Group is above 60000;


# don't use Group nobody on these systems!


User nobody


Group nobody


這代表無論Http Service要用什麼使用者來啟動它,千萬不要將其設為root,雖然這會有些小小的不便,但您可以想像所有的CGI Script都以root權力執行的後果。


正確的設定存取權

許多使用者並沒有注意到正確的設定存取權,以CGI執行的目錄而言,如果我們將其存取權設定為:




drwx-x--x 5 root www 1024 Aug 8 00:01 cgi-bin/


則httpd可以執行其底下的CGI程式,但除非以root登入,否則無法對其進行修改或觀看。同樣的道理,Apache Server 以httpd.conf來控制伺服器的組態、檔案的讀取權及伺服器資源表(早期的Apache將其分為三個檔案httpd.conf、access.conf與srm.conf)。如果入侵者知道這個檔案的內容,將可以輕易地找出伺服器組態的漏洞。若我們將其存取權設定為:




-rw------ 1 root www 1024 Aug 8 00:01 httpd.conf


則可限制只有root能對其修改及觀看。


正確的設定伺服器組態

在Apache Server的httpd.conf中,有些組態是必須小心設定的。如


Automatic directory listing, Symbolic-link following, Server-side including。你必須了解這些設定的意義並且小心地使用,例如將Automatic directory listing設定為ON,則當瀏覽器Browser到一個沒有index.htm的目錄時,使用者可以清楚的看到伺服器的檔案組態,這是多麼危險的一件事。


別假設上網的人都是無惡意的

別認為使用者都會遵守規則,惡意的入侵者會想盡一切辦法破壞規則,因此網頁設計者要確實檢查如Selection List 傳回值,使用者直接執行CGI程式或使用者故意傳回不合法的Cookie。


預防竊聽

為了預防入侵者竊聽網路資訊(在TCP/IP的環境中是輕而易舉的),通常你必須對你的資料加密,一種方法是直接加密檔案本身,一種是Client/Server使用相同的加密技術對IP Package進行加密。無論如何,別低估Internet的開放性。


適時的升級Linux Kernel

Linux核心至2.2.15以前的版本﹐都含有一個嚴重的臭蟲,以讓一般使用者取得root權限。2.2.15系列的使用者只要升級到最新的Linux 2.2.16版核心,就可以解決。這個漏洞只要系統裡有setuid root的程式,可能被利用。主要問題發生在一個少有說明的函式-setcap,etcap函式可以讓使用者獲得任意setuid程式的能力,進而入侵系統。因此適時的升級Linux Kernel是必要的。系統管理者應經常注意這方面的資訊,必要時也要自行編譯Kernel以防止漏洞。


結語

由於版面的因素,許多問題都只能點到為止,以CGI為例,可以討論的安全問題就可以寫一本書,有興趣的讀者可以上百資網站(http://www.linpus.com.tw)。筆者會在上面發表一系列文章。倒是對於許多急於學習網頁設計的新鮮人而言,筆者倒是建議多了解一些系統架構及安全問題。筆者其實可以大膽預測,由於開發工具的進步,未來製作網頁將有如使用Word打文件一般,是必須的技能而非工作的專長,反而是網路安全專家奇貨可居。


相關文章
強化轉型核心動力 打造更強數位韌性
數位轉型下的工具機發展趨勢
OLED與Mini LED爭逐主流PC顯示技術
企業迎向數位創新的關鍵思考
USB 4實現更高傳輸速度
comments powered by Disqus
相關討論
  相關新聞
» 微軟啟動「AI+ Taiwan」計畫 在台資料中心正式啟用
» 工研院通訊大賽獲獎名單出爐 AI創新應用助2025年通訊業產值破兆
» Ansys、台積電和微軟合作 提升矽光子元件模擬分析速度達10倍
» 微軟全新自主agents賦能團隊實現更多拓展性
» 報告:2024年軟體漏洞評級見五大趨勢


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.172.70.127.237
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: [email protected]