編者按:新的一年,“高手論技”繼續(xù)伴隨大家前行,身處一線的你,就那些技術上最常遇到的故障、最需要解決的難題、最成熟的應用……都可以在此暢所欲言,各抒己見。是繼續(xù)圍觀還是現(xiàn)身說法,新浪微群http://q.t.sina.com.cn/264976,期待您的共同參與。
網(wǎng)絡四通八達,為我們帶來便利的同時,也潛伏著諸多不安定因素。作為校園網(wǎng)絡守護者,如何清醒地認識當前的網(wǎng)絡環(huán)境,如何有效地守護服務器的安全──主持人和嘉賓將分兩期就此做一探討和分析。
● 楔子:危機四伏的網(wǎng)絡
現(xiàn)在大部分學校都有自己的校園網(wǎng)站,學校利用校園網(wǎng)站對外可以樹立自己的形象,起到窗口的作用;對內可以促進師師、師生、生生及社會與學校間的有效交流、互動,極好地彌補了其他交互方式的有限性;在資源共享、信息傳達、引導學生教師成長等各方面,校園網(wǎng)站也起著不可替代的作用。
但是,目前的網(wǎng)絡環(huán)境卻讓人相當擔心。不法分子編制各種各樣的流氓軟件和電腦木馬,通過各種途徑,或是引誘人們下載,或是非法入侵,以達到非法控制服務器或者個人電腦為其牟利的目的。而學校和一般中小企業(yè)缺少專業(yè)的服務器維護人員,缺乏網(wǎng)絡安全意識,使得這些服務器更容易成為黑客“青睞”的目標。稍有不慎,學?;ㄖ亟鸾⑵饋淼姆掌鳎陀锌赡艹蔀椤叭怆u”、“僵尸”,為犯罪分子的活動提供便利。因此,計算機安全越來越成為影響人們生活的重要課題。
現(xiàn)在越來越多的黑客組織專業(yè)從事網(wǎng)絡犯罪,他們除了入侵金融系統(tǒng)盜取銀行的貨幣,入侵個人電腦盜取個人網(wǎng)銀、在線支付等交易賬號外,最典型的是構建僵尸網(wǎng)絡(Botnet),肆意攻擊自己的競爭對手、雇主的競爭對手,令被攻擊者無法正常開展業(yè)務,甚至對在行業(yè)內影響較大的網(wǎng)站進行敲詐勒索,達到非法獲利的目的。
除了大型網(wǎng)站防護比較嚴密很難入侵成功外,中小型網(wǎng)站大多都能被不法分子輕而易舉地入侵,并且有大量的網(wǎng)站被隱蔽地掛上木馬和病毒,雖然大部分的木馬程序都能被殺毒軟件成功攔截,但是每天都不斷有新的木馬程序以及它們的變種產(chǎn)生,所以還是有很多的木馬未能被成功攔截。
● 曝光:常見的入侵方式
服務器提供的服務是面向整個互聯(lián)網(wǎng)上的全體人員,因此網(wǎng)絡服務器可能遭到來自四面八方的攻擊,網(wǎng)絡服務器安全維護人員的防護工作所需要經(jīng)受的考驗也更為嚴格。要做好入侵防護,我們有必要了解一下目前比較慣用的幾種入侵服務器的手法。
1.利用漏洞進行SQL注入
因為動態(tài)網(wǎng)頁基本上都使用數(shù)據(jù)庫作為查詢后臺,如果網(wǎng)頁程序員疏忽,沒有對所有的輸入數(shù)據(jù)進行嚴格過濾,就會給人以可乘之機,即通過注入工具可逐步拿下控制權限,直至掌控服務器的最高權限。
2.利用上傳漏洞上傳各種網(wǎng)頁木馬
拿較有名的海陽頂端網(wǎng)ASP木馬來說,其工作環(huán)境是Windows Server操作系統(tǒng)和IIS Web服務器上的ASP動態(tài)網(wǎng)頁運行環(huán)境,由專業(yè)的黑客團隊不斷優(yōu)化改進后,功能非常強大,一旦被上傳到網(wǎng)站,如果權限限制不嚴,Windwos Server服務器管理員最高權限能夠被輕松獲得。
3.利用一些常用軟件漏洞
例如,國內的Windows Server服務器上最流行的FTP服務軟件Serv-U,它本身
經(jīng)常被曝出漏洞。另外,因為這是一款收費軟件,還有不法分子打著“破解版”的旗號,修改其安裝文件,在里面添加自己的補丁,然后放在網(wǎng)絡上讓別人下載使用。雖然“破解”后能讓你免費使用這款軟件,但這款軟件被“破解”的同時也植入了木馬,一旦你在服務器上安裝這款被做了手腳的軟件,你的服務器就為黑客敞開了一扇大門,成為一只隨時待宰的羔羊。
4.利用開源的源碼
有時源碼里面本來就存在的漏洞會被利用,有時則會在官方源碼里面再添加漏洞,一旦用戶未加審查就直接使用了這些有漏洞的源碼,后果將不堪設想。
5.Cookies詐騙
如果你的網(wǎng)站使用了某些開源的網(wǎng)頁程序,當其中有漏洞時(如有的網(wǎng)頁程序為了盡量減少數(shù)據(jù)庫查詢壓力,驗證用戶身份時僅僅是憑借用戶本地的Cookies信息,而沒有去數(shù)據(jù)庫中提取相關數(shù)據(jù)進行身份比對),入侵者就有可乘之機了。他們利用一些本地Cookies編輯工具,將自己的個人信息修改成“管理員”身份,然后打開網(wǎng)站,網(wǎng)站程序便會誤以為這是管理員,而開放一些管理權限,他便可以在數(shù)據(jù)庫里面寫入“一句話木馬”,然后執(zhí)行數(shù)據(jù)庫備份等操作,將數(shù)據(jù)庫備份成ASP等可執(zhí)行文件類型,然后再利用“一句話木馬”寫入海陽頂端等功能更全面的木馬程序,完成入侵目的。
說明:著名的“一句話木馬”只有一條語句:execute request("a"),即執(zhí)行外部輸入變量a的內容,這條語句可以放在可執(zhí)行程序里面的任何一個地方,不攻擊的時候對原程序功能沒有任何影響,想要攻擊的時候可以在外部指定變量a的內容,然后再提交到含有該木馬的程序中,不管他指定了a為何內容,其內容都能得到執(zhí)行,所以該木馬雖然只有一句話,但是其攻擊威力卻是非??膳碌?。
6.暴力破解
雖然成功的概率和所花的時間效率都不高,但是一直有人在使用,因為這個方法非常簡單易行,他只要24小時不停掛機攻擊就行了,并不需要人工值守。
● 實戰(zhàn):建構安全長城
俗話說,“明槍易躲,暗箭難防”。防護是被動的,入侵是主動的;防護需要全面做到不能有短板,而攻擊只需要一個點有漏洞就能侵入了。大概了解了常用入侵手段后,我們該如何做好防護工作呢?
1.防止出現(xiàn)上傳漏洞
上傳漏洞入侵方式比較多,也是黑客最喜歡使用的方法之一。要做到從根本上杜絕利用上傳漏洞,其實是有辦法的。我們只要做好下面的策略就可以了。
①上傳文件夾和執(zhí)行文件夾必須分離。凡是可以運行動態(tài)網(wǎng)頁程序所在的目錄一律要禁止網(wǎng)站運行用戶的寫入權限(Windows IIS服務器的默認運行網(wǎng)站的用戶是IUSER***,可以手工修改,Unix/Linux的Web服務器運行網(wǎng)站的用戶通常是www,也可以手工另外指定)。凡是需要上傳文件寫入的目錄,一律要禁止執(zhí)行權限。因為文件夾權限是操作系統(tǒng)級別的,黑客很難繞過操作系統(tǒng)權限認證,所以就算網(wǎng)站有上傳漏洞,但是根本無法成功往目錄里面寫入木馬。另外,上傳目錄是允許寫入文件的,但這些目錄都被禁止了執(zhí)行權限,所以雖然能成功寫入木馬程序,但是卻無法得到運行,寫入權限和執(zhí)行權限必須同時具備才能運行木馬程序。網(wǎng)站防護工作只要做到了這一點,完全可以杜絕上傳漏洞,相對于禁用或者改名FSO(File System Object)等策略來說,這個屬于釜底抽薪的防護策略,可以從根本上杜絕上傳木馬攻擊。禁用或者改名FSO之類的策略在強大的黑客工具面前基本上不堪一擊,輕而易舉就能被啟用,如果是被改名了,它能從注冊表迅速讀取到你更改的新名稱。
防護案例1:有兩個小公司的主頁,長期給人掛馬,只要打開網(wǎng)頁,立即彈出一大推垃圾廣告。技術人員用備份恢復后,過不了幾個鐘頭,又被掛上了,技術人員不勝其煩。求助于我。我首先判斷網(wǎng)站肯定是有上傳漏洞的,但是因為牽涉的網(wǎng)頁程序較多,全面審查網(wǎng)站程序所花時間和精力太多,也很難找出其中的上傳漏洞,所以就幫他做了嚴格的執(zhí)行/寫入權限分離,所有程序目錄一律禁止寫入權限,然后再給上傳目錄全部禁止執(zhí)行權限,從此清清靜靜,再也沒有煩心的惡俗廣告來滋擾了。
?、诓皇褂脕砺凡幻鞯能浖σ恍┤粘J褂玫能浖?,一定要從官方站點下載,不要輕易使用一些被“破解”、“閹割”過的軟件。這方面的軟件有很多可能本身就被種植了木馬或被開辟了后門,使用它們很可能造成用戶名和密碼泄漏。
防護案例2:我曾經(jīng)收到一個朋友介紹過來的求助,那是注冊用戶達到了100萬左右的一個中型網(wǎng)站屢次被入侵奪取最高權限。其管理員稱不管如何重裝系統(tǒng),而且清查過了網(wǎng)站程序中的所有木馬,但仍被屢屢入侵,更離譜的是有時網(wǎng)站還在整理階段未正式開放時就被入侵了。我研究后發(fā)現(xiàn),其網(wǎng)站各層目錄下面都被上傳了大量的ASP木馬,就算是設置了嚴格的寫入權限后仍然不能避免這種情況的發(fā)生,很顯然這些文件不是以Web瀏覽方式寫入的。那么入侵者到底是如何寫入木馬的呢?我在檢查相關技術人員部署網(wǎng)站環(huán)境的過程中,發(fā)現(xiàn)他們采用的FTP服務器軟件Serv-U是破解版,當時就懷疑這個軟件攜帶了黑客木馬。為了驗證猜測,我將它的日志功能加上去(默認是不帶日志記錄功能的),并且將網(wǎng)站下面的全部ASP木馬清除。而轉瞬間該管理員報告說木馬又都產(chǎn)生了。我跟蹤FTP上傳日志,發(fā)現(xiàn)有陌生IP上傳文件到網(wǎng)站的記錄。于是我就將他們使用的這款Serv-U安裝包放在安裝有殺毒軟件的電腦上運行,殺毒軟件立即彈出窗口提示此軟件有木馬,懷疑果然得到了驗證。于是改用另外一款開源FTP服務器軟件,網(wǎng)站從此安寧無事。
由此可見,用戶應該養(yǎng)成良好的習慣,不要使用來路不明的軟件,盡量使用正版軟件,包括自己個人電腦上使用的軟件也是如此,否則賬號和密碼很容易被盜或者是被后門主動外泄。
2.防范SQL注入
日常防范SQL注入比較困難,最有效的防范是在編程的時候留意,將所有的輸入都進行相關的過濾檢查。目前注入工具使用得最多的是明小子用Delphi編寫的一個旁注工具Domain,最新版本已經(jīng)更新到了4.x,其源代碼可以在程序員聯(lián)合開發(fā)網(wǎng)(www.pudn.com)找到。SQL注入入侵主要針對的注入數(shù)據(jù)庫系統(tǒng)是SQL Server,因為微軟在該款產(chǎn)品與Windows操作系統(tǒng)做了太多的關聯(lián),如果權限設置不當,基本上攻下數(shù)據(jù)庫系統(tǒng)就等于攻下了操作系統(tǒng)。而另兩款流行的數(shù)據(jù)庫系統(tǒng)MySQL和Oracle,都屬于平臺無關軟件系統(tǒng),所以不太容易從數(shù)據(jù)庫系統(tǒng)切入到操作系統(tǒng)。如果你的系統(tǒng)正好使用了Windows操作系統(tǒng)和SQL Server數(shù)據(jù)庫系統(tǒng)的話,那么你就要格外小心SQL注入方式入侵了。
為了在被注入成功后,損失減到最小,我們應該做到幾點。
①將SQL Server運行用戶權限減到最小,新建一個Windows用戶sqlrunner,將它的權限賦到最低,然后設置它為SQL Server的運行用戶(如圖1),這樣就算入侵者控制了SQL Server,也無法突破sqlrunner的權限限制從而去執(zhí)行一些系統(tǒng)功能。
?、谙拗芐QL Server內部賬戶的相關權限。例如,不讓它訪問不需要用到的數(shù)據(jù)庫;讀、寫權限賬號分離;不開設多余的閑置用戶賬號等;加強數(shù)據(jù)備份,萬一數(shù)據(jù)遭到破壞,要有恢復預案。
③在Windows防火墻里面指定連接SQL Server運行端口(1433)和Windows遠程桌面運行端口(3389)的IP,不要讓任何人都能連接這兩個敏感服務。這個操作并不為很多人所了解和掌握,設置步驟為:“開始”菜單→設置→控制面板→Windows防火墻,選擇遠程桌面,點擊“編輯”,在彈出的對話框中單擊“更改范圍”按鈕,填寫指定的IP(如下頁圖2),這樣就只有你指定的IP能夠遠程連接桌面了,同樣的辦法再設置一下SQL Server的連接IP。這樣就算SQL Server被注入成功,入侵者也無法從外部直接連接你的數(shù)據(jù)庫服務器;萬一被入侵者掌握了系統(tǒng)管理員賬號和密碼,黑客也無法遠程登錄并操作你的服務器。
3.慎用開源代碼
如果必須使用,一定要從其官方網(wǎng)站下載,并且經(jīng)常留意官網(wǎng)公布的漏洞和補丁,很多上傳漏洞和Cookies欺騙漏洞都來自于開源代碼。用戶應該意識到,開源是對所有人開放的,因為代碼不是自己開發(fā)的,我們很難對其中的每一行代碼進行審查,而黑客們?yōu)榱四芄ハ莞嗟姆掌?,成天都挖空心思去尋找開源系統(tǒng)中隱含的那些一般人不會留意的漏洞。尤其當你的代碼不是來自官網(wǎng)的時候,很可能該代碼被人“處理”過了,里面可能隱藏了可以利用的后門。如果我們不得不使用,只能下載官網(wǎng)的代碼,因為官網(wǎng)上的代碼一般都經(jīng)過了很多的人推敲,漏洞相對比較少,如果有漏洞被找到,基本上也能在第一時間發(fā)布公告和提供修復補丁。例如,國內流行的動網(wǎng)論壇、Discuz論壇提供的開源代碼,經(jīng)常有一些漏洞會被利用,必須要加強防范。很多專業(yè)黑客還開發(fā)了一些功能非常強大的工具(像桂林老兵Cookies欺騙工具、上傳工具等),這些工具功能非常完善,可以輕易突破手工處理非常難以利用的漏洞,網(wǎng)上也很容易找到相關的入侵教程,輕易達到入侵毫無防范的網(wǎng)站的目的。
4.防止暴力破解密碼
暴力破解盡管很困難,但仍然是一些沒有技術含量的黑客經(jīng)常采用的入侵方式。黑客尤其喜歡暴力破解的是SSH遠程登錄密碼和FTP登錄密碼。只要你的服務器接入了因特網(wǎng),基本上天天都會有人來掃你的密碼。雖然我們也可以設置復雜的密碼,并定期更改自己的密碼來防止別人攻破密碼,但這些都不是最好的解決辦法,因為不停地驗證別人輸入的密碼也在一定程度上消耗了系統(tǒng)的資源。另外,由于非法驗證的操作會被記入訪問日志,如果掃描的人較多,而攻擊者都是使用24小時不間斷掛機的方式來暴我們的登錄密碼,所以服務訪問日志會暴增(兩三天就可以達到幾個G),給我們的日志監(jiān)控維護工作帶來非常大的麻煩。如果你的系統(tǒng)是Unix/Linux,有一款非常好用的開源軟件叫做Fail2ban,它是專門對付暴力破解的。Fail2ban是使用Python語言編寫的一款基于防火墻和服務訪問日志正則表達式語法識別的優(yōu)秀開源軟件,它的工作原理是根據(jù)用戶編寫的配置文件,每隔一段時間就去讀一次相關日志文件,如果發(fā)現(xiàn)有多次登錄密碼錯誤現(xiàn)象,就添加防火墻規(guī)則,封鎖該登錄者的IP,禁止其連接本服務器。我們通常可以設定每3次登錄錯誤就封鎖該IP30分鐘,這樣暴力攻擊者的密碼枚舉就不能奏效了。
Fail2ban的主配置文件是jail.conf,安裝后需要對這個配置文件進行相關設置。下面以Unix上流行的FTP服務器Vsftpd的監(jiān)控為例做個配置說明,假定采用的防火墻軟件是IPFW。
[vsftpd-ipfw]
enabled = true
filter = vsftpd
action = ipfw[name=VSF