引子 在金庸先生的《天龍八部》中,六脈神劍是古代大理王國皇家祖?zhèn)魃窆?,分別是少商劍、商陽劍、中沖劍、關沖劍、少沖劍、少澤劍 。六脈神劍惺惺相依又各有千秋 。運劍于無形,劍招雖少卻獨步武林,以指力化做劍氣,有質(zhì)無形,殺人與無影之中…… 本文主要為Linux技術人員提供一些基本的技術指導,并非解決Linux安全的詳細手冊 。【連載:六脈神劍捍衛(wèi)企業(yè) Linux系統(tǒng)】開篇 Linux操作系統(tǒng)是大多數(shù)現(xiàn)代企業(yè)計算環(huán)境的基礎 。企業(yè)級Linux發(fā)行版本,如Red Hat, SUSE, Ubuntu等,其功能、靈活性、穩(wěn)定性是有口皆碑的 。不幸的是,Linux的靈活性和強大功能還有另外一面:Linux系統(tǒng)可以支持大多數(shù)著名的網(wǎng)絡協(xié)議和服務,如果不正確的配置和部署,這會為安全攻擊提供極大的空間 。現(xiàn)代企業(yè)對基于Web的交互性和面向互聯(lián)網(wǎng)應用程序的依賴性,以及運行環(huán)境對網(wǎng)絡架構(gòu)提出了越來越多的要求 。大量的數(shù)據(jù)要求和新的網(wǎng)絡服務意味著有更多的設備和數(shù)據(jù)在網(wǎng)絡上必須時刻可用,這種持續(xù)的可用性是一個現(xiàn)代企業(yè)的重要基礎,不幸的是,其可用性不只限于那些授權用戶 。同樣的系統(tǒng)對那些聯(lián)機的入侵者和惡意用戶也總是可用的 。大多數(shù)現(xiàn)代計算機系統(tǒng)必定要產(chǎn)生日益廣泛的網(wǎng)絡檔案文件,但也不過是檔案文件 。大多數(shù)企業(yè)Linux發(fā)行版本在發(fā)布時已將大多數(shù)網(wǎng)絡端口和服務禁用,因此在使用時服務必須打開而不是關閉 。不管怎么說,仔細的檢查系統(tǒng)的網(wǎng)絡和安全配置的基本方面可以大幅度地提高網(wǎng)絡系統(tǒng)的安全性 。注意 不同的Linux發(fā)行版本提供了不同的管理工具,本文將著重討論那些可在任何Linux發(fā)行版本中可用的命令行工具 。少商劍─確認打開的網(wǎng)絡端口及相關的進程 系統(tǒng)中任何一個打開的網(wǎng)絡端口指明了一個潛在的進入點 。在這種情況下,一個打開的網(wǎng)絡端口即是某個服務程序正在監(jiān)聽并對請求響應的端口 。在進入系統(tǒng)的情況下,兩種通用的列示某計算機的打開端口的方法是使用Isof和Netstat命令 。Lsof命令列示Linux系統(tǒng)中所有打開的文件 。其-i選項告訴Lsof命令列示所有的與IP協(xié)議相關的文件,而-n選項禁止將建立連接的任何IP地址映射為主機名 。我們可以將輸出結(jié)果傳遞給egrep命令,而且只列示包含COMMAND、TCP(一個使用TCP協(xié)議監(jiān)聽的進程)、UDP(一個使用UDP協(xié)議監(jiān)聽的進程)的結(jié)果 。下面是Lsof命令在Red Hat Enterprise Linux系統(tǒng)中的一個例子展示: 輸出結(jié)果顯示運行在本系統(tǒng)中的進程有portmap(RPC端口映射器)、rpc.statd(RPC狀態(tài)監(jiān)視器)、sshd(安全外殼)、Ntpd(網(wǎng)絡計時協(xié)議)、sendmail(郵件服務程序)、cupsd(CUPS打印監(jiān)控程序) 。此外,、xinetd互聯(lián)網(wǎng)服務監(jiān)控程序正運行著auth(遠程識別監(jiān)控程序)、telnet(網(wǎng)絡終端)和vnc(虛擬網(wǎng)絡計算)等服務器程序 。當運行在相同的系統(tǒng)上時,Netstat 命令提供與lsof輸出相似的結(jié)果 。其-t選項產(chǎn)生所有的TCP/IP端口的輸出,-u選項生成所有的UDP端口的輸出,-l選項限制只輸出那些正在積極地監(jiān)聽連接的端口 。-p選項顯示擁有網(wǎng)絡連接的程序和進程的ID 。下面是Netstat命令在Red Hat Enterprise Linux系統(tǒng)中顯示輸出的一個例子: 此處列示的信息稍微詳細一些,但顯示了與lsof命令相同的開放端口和相關服務 。一臺計算機所提供服務的內(nèi)部視圖應與外部計算機所看到的匹配 。為了驗證這一點,可以在另一臺計算機上使用nmap(網(wǎng)絡映射)命令 。其-sT選項實施了一個TCP端口掃描,而-sU選項進行的是UDP端口的掃描 。從另一臺計算機上掃描相同的計算機會輸出如下的結(jié)果: 雖然nmap命令不能識別與631和795端口相關的服務,但前面展示的lsof和nmap命令在本地計算機的輸出卻分別將其確定為打印端口監(jiān)控程序和rpc.statd命令 。如果所有的輸出一致的話,下一步便是分析可用的服務來決定其是否必需,如果是非必需的,應怎樣處理: 首先,在netstat和lsof中輸出的cupsd(打?。┖蛃endmail(郵件服務器)這兩個進程在nmap的輸出中是不可見的 。netstat 和 lsof的輸出確認了它們只是在監(jiān)聽本地的回路接口,因此對于外部的計算機來說是不可見的,并且不會引安全問題 。如果性能是你要分析的計算機的一個問題的話,sendmail對于本地郵件傳輸是有用的;但如果并沒有人正在本機上打印的話,你可能會終止CUPS進程 。Ssh(安全外殼)對于遠程登錄提供了安全機制并支持加密通信,這是好事情 。Telnet進程代表了一個用于建立遠程連接的較早的協(xié)議,它使用了非加密的通信 。一些telnet的較新版本支持安全的認證和通信機制,如支持Kerberos;但不管怎么說,這是一個非必需的服務,因為已經(jīng)提供了SSH,所以必須關閉這個進程 。Rpcbind (端口映射程序) and rpc.statd (795端口)進程僅在NFS環(huán)境中有用 。如果我們正在分析的不是一個NFS客戶端,就應該關閉它 。Auth進程對于分析網(wǎng)絡客戶端的問題是有用的,但可會為入侵者提供系統(tǒng)用戶的信息 。然而,一些FTP和其它的網(wǎng)絡客戶卻必須使用它 。因此我們要么禁用它,要么用-n選項啟用它 。-n使其只顯示數(shù)字的用戶ID而非用戶名 。Ntp(網(wǎng)絡時間協(xié)議)進程用于使網(wǎng)絡上的計算機時鐘同步,但在過去常被某些人用于查找漏洞等 。我們可以在啟動時運行ntp q命令,這樣就可以查詢并同步時間服務,然后再退出 。在32768端口上的omad進程可能令人困惑,但反復檢查lsof 和netstat的輸出,會發(fā)現(xiàn)32768實際上正被用于rpc.statd查詢,因此應該通過關閉rpc.statd進程來終止它 。這是一個被nmap錯誤識別的進程 。此過程的下一步就是到我們正在分析的計算機那里來決定在什么地方及什么時間這些進程被啟動,因此可以終止我們確認為非必要的任何進程(cupsd, portmap,rpc.statd, telnet, vnc),并改變我們想要改變的任何進程的行為 。
推薦閱讀
- 連載之三 我和Nokia2600不得不說的故事
- 連載之四 我和Nokia2600不得不說的故事
- 91 FreeBSD連載:提升靜態(tài)網(wǎng)頁服務能力的綜合方式
- 89 FreeBSD連載:CGI和SSI的安全性
- 93 FreeBSD連載:反向代理負載均衡
- 86 FreeBSD連載:對IP地址和域名的控制
- 48 FreeBSD連載:X Window的基本概念
- 54 FreeBSD連載:配置文件XF86Config
- 43 FreeBSD連載:NFS服務器
- 38 FreeBSD連載:配置緩沖或轉(zhuǎn)發(fā)方式的named
