萬盛學電腦網

 萬盛學電腦網 >> 應用技巧 >> Web服務器的安全和攻擊防范(一)

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

分析一下最近幾個月信用卡號碼被盜和網站被黑所顯示的種種安全問題,可以很清楚地看出,許多Web應用都是湊合著運行,很少有人關注其安全問題或作出安全規劃。那麼,造成服務器缺乏安全保障的常見原因有哪些?如何防范這些不安全因素?作為客戶或者最終用戶,如何才能信任某個服務器符合了基本的安全需求?   
對於以往安全事故的分析表明,大多數安全問題都屬於下面三種類型之一:
服務器向公眾提供了不應該提供的服務。
服務器把本應私有的數據放到了可公開訪問的區域。
服務器信賴了來自不可信賴數據源的數據。   
提供不應該提供的服務

顯然,許多服務器管理員從來沒有從另一個角度來看看他們的服務器,例如使用端口掃描程序。如果他們曾經這樣做了,就不會在自己的系統上運行那麼多的服務,而這些服務原本無需在正式提供Web服務的機器上運行,或者這些服務原本無需面向公眾開放。

與這種錯誤經常相伴的是,為了進行維護而運行某些不安全的、可用於竊取信息的協議。例如,有些Web服務器常常為了收集訂單而提供POP3服務,或者為了上載新的頁面內容而提供FTP服務甚至數據庫服務。在某些地方這些協議可能提供安全認證(比如APOP)甚至安全傳輸(比如POP或者FTP的SSL版本),但更多的時候,人們使用的是這些協議的非安全版本。有些協議,比如msql數據庫服務,則幾乎沒有提供任何驗證機制。

從公司外面訪問自己的網絡,完整地檢測、模擬攻擊自己的網站看看會發生些什麼,這對於Web管理者來說是一個很好的建議。有些服務在機器安裝之後的默認配置中已經啟動,或者由於安裝以及初始設置的需要而啟動了某些服務,這些服務可能還沒有正確地關閉。例如,有些系統提供的Web服務器會在非標准的端口上提供編程示范以及系統手冊,它們往往包含錯誤的程序代碼並成為安全隱患所在。正式運行的、可從Internet訪問的Web服務器不應該運行這些服務,請務必關閉這些服務。

另外一種攻擊者經常利用的資源是SNMP協議(簡單網絡管理協議,Simple Network Management Protocol)。它可能為攻擊者提供有關系統和網絡布局的極其詳細和寶貴的信息。由於SNMP是一種UDP服務,比較簡單的安全檢查不會發現它。當然,需要保護的不僅僅是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 myspl
4333 open tcp mspl
www.example.server作為WWW和FTP服務器使用。此外,該服務器還提供了ssh、smtp、sunrpc、nntp、mysql和msql服務。   
在這些服務中,ssh是一種帶有完善加密和認證機制的協議,如果服務器上運行的ssh是最新版本,那麼使用它應該是安全的。   
http、ftp、smtp和nntp是www.example.server服務器實際提供的服務,這些服務是必須運行的。只要FTP只用於匿名服務,網絡上也不會因此出現以明文形式傳送的密碼。所有其他文件傳輸都應該用scp工具和ssh協議完成。   
sunrpc、mysql和msql服務沒有必要從防火牆外面的機器訪問,而且也沒有必要被所有的IP地址訪問。這些端口應該用防火牆或者包過濾器阻隔。

對於所有向公眾開放的服務,你應該密切關注其程序的最新版本和安全信息,應該做好一旦發現與這些程序有關的安全問題就立即升級軟件的准備。例如,某些版本的ssh會出現問題,在一些特殊的情形下服務器可能被騙並以非加密方式運行。對於有些FTP服務器、早期的sendmail以及某些版本的INN,已知的安全問題包括緩存溢出等。
有些時候端口掃描程序找到了一個打開的端口,但我們卻不知道哪一個程序在操作這個端口,此時就要使用lsof之類的工具了。執行命令“lsof -P -n -i”即可顯示出所有本地打開的端口以及操作這些端口的程序。

# lsof -P -n -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xfstt 46 root 4u IPv4 30 TCP *:7100 (LISTEN)
httpd 199 root 19u IPv4 99 TCP 192.168.1.12:80 (LISTEN)
...
smbd 11741 root 5u IPv4 28694 UDP 127.0.0.1:1180
smbd 11741 root 6u IPv4 28689

TCP 192.168.1.3:139-< 192.168.1.2:1044 (ESTABLISHED)

增加額外的參數就可以掃描指定的協議和端口:
# lsof -P -n -i tcp:139
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
smbd 276 root 5u IPv4 175 TCP *:139 (LISTEN)
smbd 11741 root 6u IPv4 28689

TCP 192.168.1.3:139-< 192.168.1.2:1044 (ESTABLISHED)
運行nmap搜索整個網絡可以列出域之內所有已知服務器。另外,你還可以查看DNS,看看服務器管理員為這個域所設置的內容。   
再使用前面的example.server域:
# nslookup
< set type=ns
< www.example.server.
Server: ns.provider.net
Address: 10.4.3.1

example.server
origin = ns.example.server
mail addr = postmaster.ns.example.server
serial = 2000032201
refresh = 10800 (3H)
retry = 3600 (1H)
expire = 604800 (1W)
minimum ttl = 86400 (1D)

< server ns.example.server
Default Server: ns.example.server
Address: 192.168.129.37

< ls example.server.
[ns.example.server]
$ORIGIN example.server.
@1D IN A 192.168.240.131
wwwtest 1D IN A 192.168.240.135
news 1D IN A 192.168.240.136
localhost 1D IN A 127.0.0.1
listserv 1D IN A 192.168.240.136
...
igate 1D IN A 192.168.129.34

命令“set type=ns”(名稱服務器)告訴nslookup只查找域的名稱服務器信息,因此本例查詢“www.example.server”將返回該主機的所有名稱服務器。這裡的查找結果只有一個服務器“ns.example.server”。   

接下來我們用命令“server ns.example.server”把所有以後的查詢直接定向到該服務器。然後,我們用“ls example.server”命令查詢該服務器要求列出“example.server”區域的完整清單,結果就看到了example.server管理員所設定的所有主機名字和IP地址列表。   

如果一個域有多個名稱服務器,嘗試查詢所有的名稱服務器往往是值得的,這是因為雖然主名稱服務器往往有安全保護,其他名稱服務器卻往往沒有,很容易從這些服務器得到域主機和IP地址信息。   

注重安全的網絡管理員總是在另外的機器上運行內部DNS服務,而不是在直接接入Internet的機器上運行。沒有必要告訴整個世界自己的辦公室內運行著哪些機器、這些機器怎樣命名。把直接服務於Web網站的機器名字和地址發布出去已經完全足夠了。   

使用gnome程序Cheops(http://www.marko.net/cheops)可以生成一個網絡示意圖,清楚地顯示出機器類型和連接。另外這個程序也可以進行端口掃描,但功能不如nmap靈活和強大。

使用網絡監測器Ethereal(http://ethereal.zing.org/)可以分析網絡傳輸。Ethereal能夠跟蹤TCP流,對於獲知由telnet、ftp、pop3等協議傳輸的明文密碼很有用。   

使用rpcinfo和showmount(對於Linux的某些版本,還可以使用kshowmount),你可以查詢自己機器的sunrpc提供了哪些服務。如果NFS正在運行,就有可能從服務器獲得已導出文件系統的清單。

# rpcinfo -p www.example.server
PROGRAM USERS PROTO PORT
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
copyright © 萬盛學電腦網 all rights reserved