Web服務器的安全和攻擊防范

字號:

分析一下最近幾個月信用卡號碼被盜和網(wǎng)站被黑所顯示的種種安全問題,可以很清楚地看出,許多Web應用都是湊合著運行,很少有人關注其安全問題或作出安全規(guī)劃。那么,造成服務器缺乏安全保障的常見原因有哪些?如何防范這些不安全因素?作為客戶或者最終用戶,如何才能信任某個服務器符合了基本的安全需求?
    對于以往安全事故的分析表明,大多數(shù)安全問題都屬于下面三種類型之一:
    服務器向公眾提供了不應該提供的服務。
    服務器把本應私有的數(shù)據(jù)放到了可公開訪問的區(qū)域。
    服務器信賴了來自不可信賴數(shù)據(jù)源的數(shù)據(jù)。
    提供不應該提供的服務
    顯然,許多服務器管理員從來沒有從另一個角度來看看他們的服務器,例如使用端口掃描程序。如果他們曾經(jīng)這樣做了,就不會在自己的系統(tǒng)上運行那么多的服務,而這些服務原本無需在正式提供Web服務的機器上運行,或者這些服務原本無需面向公眾開放。
    與這種錯誤經(jīng)常相伴的是,為了進行維護而運行某些不安全的、可用于竊取信息的協(xié)議。例如,有些Web服務器常常為了收集訂單而提供POP3服務,或者為了上載新的頁面內容而提供FTP服務甚至數(shù)據(jù)庫服務。在某些地方這些協(xié)議可能提供安全認證(比如APOP)甚至安全傳輸(比如POP或者FTP的SSL版本),但更多的時候,人們使用的是這些協(xié)議的非安全版本。有些協(xié)議,比如msql數(shù)據(jù)庫服務,則幾乎沒有提供任何驗證機制。
    從公司外面訪問自己的網(wǎng)絡,完整地檢測、模擬攻擊自己的網(wǎng)站看看會發(fā)生些什么,這對于Web管理者來說是一個很好的建議。有些服務在機器安裝之后的默認配置中已經(jīng)啟動,或者由于安裝以及初始設置的需要而啟動了某些服務,這些服務可能還沒有正確地關閉。例如,有些系統(tǒng)提供的Web服務器會在非標準的端口上提供編程示范以及系統(tǒng)手冊,它們往往包含錯誤的程序代碼并成為安全隱患所在。正式運行的、可從Internet訪問的Web服務器不應該運行這些服務,請務必關閉這些服務。
    另外一種攻擊者經(jīng)常利用的資源是SNMP協(xié)議(簡單網(wǎng)絡管理協(xié)議,Simple Network Management Protocol)。它可能為攻擊者提供有關系統(tǒng)和網(wǎng)絡布局的極其詳細和寶貴的信息。由于SNMP是一種UDP服務,比較簡單的安全檢查不會發(fā)現(xiàn)它。
    當然,需要保護的不僅僅是Web服務器,在防火墻外面的所有其他機器更必須遵從同樣的安全標準。
    nmap可以從http://www.insecure.org/nmap/獲得。
    # nmap -sS -T Agressive -p 1-10000 www.example.server | grep open
    Port  State    Protocol Service
    21   open    tcp    ftp
    22   open    tcp    ssh
    25   open    tcp    smtp
    80   open    tcp    http
    111   open    tcp    sunrpc
    119   open    tcp    nntp
    3306  open    tcp    mysql
    4333  open    tcp    msql