淺談網站伺服器安全維護技巧
伺服器的維護至關重要,稍有閃失即會使整個網路陷入癱瘓。目前,惡意的網路攻擊行為包括兩類:一是惡意的攻擊行為,如拒絕服務攻擊、網路病毒等,這些行為消耗大量的伺服器資源,影響伺服器的執行速度和正常工作,甚至使伺服器所在的網路癱瘓;另外一類是惡意的入侵行為,這種行為會導致伺服器敏感資訊洩露,入侵者更是可以為所欲為,肆意破壞伺服器。要保障網路伺服器的安全就要儘量使網路伺服器避免受這兩種行為的影響。本文以基於Windows2003作業系統的伺服器為例,介紹一些網站伺服器安全維護的技巧。
1.轉換角色,模擬可能的攻擊
多數時候,我們若只是站在網站維護員的位置上思考問題,可能很難發覺網站伺服器的漏洞。相反,維護員若能換個角度,把自身當作可能的攻擊者,從他們的角色出發,揣測他們可能會運用哪些手段對哪些網站伺服器的漏洞進行攻擊,或許就可以發現網站伺服器可能存在的安全漏洞,從而先行一步,修補漏洞,避免被木馬或者病毒攻擊,防患於未然。
從外網訪問自身的網站伺服器,執行完整的檢測,然後模擬攻擊者攻擊自身的站點,看會有什麼結果。這對於網站的安全性來說,無疑是一種很好的檢測方法。自己充當攻擊者,運用適當的掃描工具對網站伺服器執行掃描,有些東西日常可能不會引起重視,但是運用黑客常用的工具執行掃描,就會發覺一些可能會被他們呼叫的服務或者漏洞。如在網站伺服器安裝的時候,作業系統會預設安裝並啟動一些不需要的服務,或者在伺服器配置的時候,需要啟動一些服務,但是事後沒有及時關上,從而給不法攻擊者留下攻擊的機會。常見的如SNMP服務(基本網路維護協議),這個服務在系統安裝完畢後預設是開啟的。但是,這個服務可以為攻擊者提供伺服器系統的詳細資訊,如網站伺服器採用了什麼作業系統,開啟了什麼服務與對應的埠等重要資訊,攻擊者只要清楚這些基本的資訊就能開展攻擊。安全維護人員在日常工作中可能不會發覺這個問題,若藉助黑客的掃描工具,就能發現問題所在。因此,在必要的時候可以換個角度,從攻擊者的角度出發,猜測他們會採用什麼攻擊手段,防止出現當局者迷的情況。
2.合理的許可權維護
大多時候,一臺伺服器不僅運行了網站的應用,而且還會執行諸如FTP伺服器和流媒體伺服器之類的網路服務。在同一臺伺服器上使用多種網路服務很可能造成服務之間的相互感染。也就是說,攻擊者只要攻擊一種服務,就可以運用相關的技能攻陷其他使用。因為攻擊者只需要攻破其中一種服務,就可以運用這個服務平臺從內部攻擊其他服務,通常來說,從內部執行攻擊要比外部執行攻擊方便得多。
或許有人會說,不同的服務採用不同伺服器就可以了。當然可以,但這樣浪費很大,因為從效能上講,在伺服器上同時部署Web服務與FTP服務及流媒體服務的話,是完全可行的。為此,從成本考慮,我們使用一個伺服器同時執行三種服務:一個是傳統的網站服務;二是FTP服務;三是流媒體服務,因為該服務是mms模式的,網際網路上也可以直接訪問流媒體伺服器,所以也就部署同一臺伺服器上。由於選用的伺服器配置比較高,所以,執行這三個服務沒有太大問題,效能也不會受到影響。但是這給網站安全維護者出了一個難題:兩種、甚至兩種以上的服務同時部署在一臺伺服器上,怎麼才能保障安全、防止彼此相互感染呢?
通常採用的檔案系統是FAT或者FAT32。NTFS是微軟WindowsNT核心的系列作業系統支援的、一個特別為網路和磁碟配額、檔案加密等管理安全特性設計的磁碟格式。在NTFS檔案系統裡可以為任何一個磁碟分割槽單獨設定訪問許可權,把敏感資訊和服務資訊分別放在不同的磁碟分割槽。這樣,即使黑客通過某些方法獲得服務檔案所在磁碟分割槽的訪問許可權,還需要想方設法突破系統的安全設定才能進一步訪問儲存在其他磁碟上的敏感資訊。我們採用Windows2003伺服器,為了實現這個安全需求,把伺服器中所有的硬碟都轉換為NTFS分割槽。通常來說,NTFS分割槽比FAT分割槽安全性高很多。運用NTFS分割槽自帶的功能,合理為它們分配相關的許可權。如為這三個服務配置不同的維護員賬戶,不同的賬戶只能對特定的分割槽與目錄執行訪問。如此一來,即使某個維護員賬戶失竊,攻擊者也只能訪問某個服務的儲存空間,而不能訪問其他服務的。例如把網站服務裝在分割槽D,而把FTP服務放在分割槽E。若FTP的賬戶資訊洩露而被攻擊,但是因為FTP賬戶沒有對分割槽D具有讀寫的權利,所以,不會對網站伺服器上的內容執行任何的讀寫操作。這樣可以保障即使黑客攻陷FTP伺服器後,也不會對網站伺服器產生不良的影響。
此外,依員工上班時間來限定使用者登入網路的許可權也是一個不錯的方法。例如,上白天班的員工不該有許可權在三更半夜登入網路。
3.指令碼安全維護
實際工作中,許多網站伺服器因為被攻擊而癱瘓都是由於不良的指令碼造成的。攻擊者特別喜歡針對CGI程式或者PHP指令碼實施攻擊。
通常來說,使用網站需要傳遞一些必要的引數,才能夠正常訪問。這個引數可以分為兩類,一個是值得信任的引數,另外一類是不值得信任的引數。某單位是自身維護網站伺服器,而不是託管,把伺服器放置在單位防火牆內部,以提高網站伺服器的安全性。所以一般來說,來自防火牆內部的引數都是可靠的,值得信任的,而來自外部的引數基本上是不值得信任的。但是,並不是說不值得信任的引數或者來自防火牆外部的引數網站伺服器都不採用,而是說,在網站伺服器設計的時候,需要格外留心,採用這些不值得信任的引數的時候需要執行檢驗,看其是否正當,而不能向來自網站內部的引數那樣照收不誤。這會給網站伺服器的安全帶來隱患,例如,攻擊者運用TELNET連線到80埠,就可以向CGL指令碼傳遞不安全的引數。所以,在CGI程式編寫或者PHP指令碼編輯的時候,我們要留心,不能讓其隨便接受陌生人的引數。在接受引數之前,要先檢驗提供引數的人或者引數本身的正當性。在程式或者指令碼編寫的時候,可以預先參加一些判斷條件。當伺服器認為提供的引數不準確的時候,及時通知維護員。這也可以幫助我們儘早發覺可能存在的攻擊者,並及時採取相應的防禦措施。
4.做好系統備份
常言道,“有備無患”,雖然大家都不希望系統突然遭到破壞,但是做好準備是必須的。作好伺服器系統備份,萬一遭破壞的時候也可以及時恢復。
5.安裝軟體防火牆、防毒軟體
雖然我們已經有了一套硬體的防禦系統,但是多一些保障會更好。關於防火牆、防毒軟體的論述已經很多,這裡不再贅述。
6.開啟事件日誌
開啟日誌服務雖然對阻止黑客的入侵併沒有直接的作用,但是它可以記錄黑客的行蹤,維護員可以分析入侵者在系統上做過什麼手腳,在系統上留了哪些後門,給系統造成了哪些破壞及隱患,伺服器到底還存在哪些安全漏洞等,以便有針對性地實施維護。
1.轉換角色,模擬可能的攻擊
多數時候,我們若只是站在網站維護員的位置上思考問題,可能很難發覺網站伺服器的漏洞。相反,維護員若能換個角度,把自身當作可能的攻擊者,從他們的角色出發,揣測他們可能會運用哪些手段對哪些網站伺服器的漏洞進行攻擊,或許就可以發現網站伺服器可能存在的安全漏洞,從而先行一步,修補漏洞,避免被木馬或者病毒攻擊,防患於未然。
從外網訪問自身的網站伺服器,執行完整的檢測,然後模擬攻擊者攻擊自身的站點,看會有什麼結果。這對於網站的安全性來說,無疑是一種很好的檢測方法。自己充當攻擊者,運用適當的掃描工具對網站伺服器執行掃描,有些東西日常可能不會引起重視,但是運用黑客常用的工具執行掃描,就會發覺一些可能會被他們呼叫的服務或者漏洞。如在網站伺服器安裝的時候,作業系統會預設安裝並啟動一些不需要的服務,或者在伺服器配置的時候,需要啟動一些服務,但是事後沒有及時關上,從而給不法攻擊者留下攻擊的機會。常見的如SNMP服務(基本網路維護協議),這個服務在系統安裝完畢後預設是開啟的。但是,這個服務可以為攻擊者提供伺服器系統的詳細資訊,如網站伺服器採用了什麼作業系統,開啟了什麼服務與對應的埠等重要資訊,攻擊者只要清楚這些基本的資訊就能開展攻擊。安全維護人員在日常工作中可能不會發覺這個問題,若藉助黑客的掃描工具,就能發現問題所在。因此,在必要的時候可以換個角度,從攻擊者的角度出發,猜測他們會採用什麼攻擊手段,防止出現當局者迷的情況。
大多時候,一臺伺服器不僅運行了網站的應用,而且還會執行諸如FTP伺服器和流媒體伺服器之類的網路服務。在同一臺伺服器上使用多種網路服務很可能造成服務之間的相互感染。也就是說,攻擊者只要攻擊一種服務,就可以運用相關的技能攻陷其他使用。因為攻擊者只需要攻破其中一種服務,就可以運用這個服務平臺從內部攻擊其他服務,通常來說,從內部執行攻擊要比外部執行攻擊方便得多。
或許有人會說,不同的服務採用不同伺服器就可以了。當然可以,但這樣浪費很大,因為從效能上講,在伺服器上同時部署Web服務與FTP服務及流媒體服務的話,是完全可行的。為此,從成本考慮,我們使用一個伺服器同時執行三種服務:一個是傳統的網站服務;二是FTP服務;三是流媒體服務,因為該服務是mms模式的,網際網路上也可以直接訪問流媒體伺服器,所以也就部署同一臺伺服器上。由於選用的伺服器配置比較高,所以,執行這三個服務沒有太大問題,效能也不會受到影響。但是這給網站安全維護者出了一個難題:兩種、甚至兩種以上的服務同時部署在一臺伺服器上,怎麼才能保障安全、防止彼此相互感染呢?
此外,依員工上班時間來限定使用者登入網路的許可權也是一個不錯的方法。例如,上白天班的員工不該有許可權在三更半夜登入網路。
3.指令碼安全維護
實際工作中,許多網站伺服器因為被攻擊而癱瘓都是由於不良的指令碼造成的。攻擊者特別喜歡針對CGI程式或者PHP指令碼實施攻擊。
通常來說,使用網站需要傳遞一些必要的引數,才能夠正常訪問。這個引數可以分為兩類,一個是值得信任的引數,另外一類是不值得信任的引數。某單位是自身維護網站伺服器,而不是託管,把伺服器放置在單位防火牆內部,以提高網站伺服器的安全性。所以一般來說,來自防火牆內部的引數都是可靠的,值得信任的,而來自外部的引數基本上是不值得信任的。但是,並不是說不值得信任的引數或者來自防火牆外部的引數網站伺服器都不採用,而是說,在網站伺服器設計的時候,需要格外留心,採用這些不值得信任的引數的時候需要執行檢驗,看其是否正當,而不能向來自網站內部的引數那樣照收不誤。這會給網站伺服器的安全帶來隱患,例如,攻擊者運用TELNET連線到80埠,就可以向CGL指令碼傳遞不安全的引數。所以,在CGI程式編寫或者PHP指令碼編輯的時候,我們要留心,不能讓其隨便接受陌生人的引數。在接受引數之前,要先檢驗提供引數的人或者引數本身的正當性。在程式或者指令碼編寫的時候,可以預先參加一些判斷條件。當伺服器認為提供的引數不準確的時候,及時通知維護員。這也可以幫助我們儘早發覺可能存在的攻擊者,並及時採取相應的防禦措施。
4.做好系統備份
常言道,“有備無患”,雖然大家都不希望系統突然遭到破壞,但是做好準備是必須的。作好伺服器系統備份,萬一遭破壞的時候也可以及時恢復。
5.安裝軟體防火牆、防毒軟體
雖然我們已經有了一套硬體的防禦系統,但是多一些保障會更好。關於防火牆、防毒軟體的論述已經很多,這裡不再贅述。
6.開啟事件日誌
開啟日誌服務雖然對阻止黑客的入侵併沒有直接的作用,但是它可以記錄黑客的行蹤,維護員可以分析入侵者在系統上做過什麼手腳,在系統上留了哪些後門,給系統造成了哪些破壞及隱患,伺服器到底還存在哪些安全漏洞等,以便有針對性地實施維護。