萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 連載:六脈神劍捍衛企業 Linux系統

連載:六脈神劍捍衛企業 Linux系統

class="152925">

引子

在金庸先生的《天龍八部》中,六脈神劍是古代大理王國皇家祖傳神功,分別是少商劍、商陽劍、中沖劍、關沖劍、少沖劍、少澤劍。六脈神劍惺惺相依又各有千秋。運劍於無形,劍招雖少卻獨步武林,以指力化做劍氣,有質無形,殺人與無影之中……

本文主要為Linux技術人員提供一些基本的技術指導,並非解決Linux安全的詳細手冊。

開篇

Linux操作系統是大多數現代企業計算環境的基礎。企業級Linux發行版本,如Red Hat, SUSE, Ubuntu等,其功能、靈活性、穩定性是有口皆碑的。不幸的是,Linux的靈活性和強大功能還有另外一面:Linux系統可以支持大多數著名的網絡協議和服務,如果不正確的配置和部署,這會為安全攻擊提供極大的空間。

現代企業對基於Web的交互性和面向互聯網應用程序的依賴性,以及運行環境對網絡架構提出了越來越多的要求。大量的數據要求和新的網絡服務意味著有更多的設備和數據在網絡上必須時刻可用,這種持續的可用性是一個現代企業的重要基礎,不幸的是,其可用性不只限於那些授權用戶。同樣的系統對那些聯機的入侵者和惡意用戶也總是可用的。

大多數現代計算機系統必定要產生日益廣泛的網絡檔案文件,但也不過是檔案文件。大多數企業Linux發行版本在發布時已將大多數網絡端口和服務禁用,因此在使用時服務必須打開而不是關閉。不管怎麼說,仔細的檢查系統的網絡和安全配置的基本方面可以大幅度地提高網絡系統的安全性。

注意

不同的Linux發行版本提供了不同的管理工具,本文將著重討論那些可在任何Linux發行版本中可用的命令行工具。

少商劍─確認打開的網絡端口及相關的進程

系統中任何一個打開的網絡端口指明了一個潛在的進入點。在這種情況下,一個打開的網絡端口即是某個服務程序正在監聽並對請求響應的端口。在進入系統的情況下,兩種通用的列示某計算機的打開端口的方法是使用Isof和Netstat命令。

Lsof命令列示Linux系統中所有打開的文件。其-i選項告訴Lsof命令列示所有的與IP協議相關的文件,而-n選項禁止將建立連接的任何IP地址映射為主機名。我們可以將輸出結果傳遞給egrep命令,而且只列示包含COMMAND、TCP(一個使用TCP協議監聽的進程)、UDP(一個使用UDP協議監聽的進程)的結果。下面是Lsof命令在Red Hat Enterprise Linux系統中的一個例子展示:

輸出結果顯示運行在本系統中的進程有portmap(RPC端口映射器)、rpc.statd(RPC狀態監視器)、sshd(安全外殼)、Ntpd(網絡計時協議)、sendmail(郵件服務程序)、cupsd(CUPS打印監控程序)。此外,、xinetd互聯網服務監控程序正運行著auth(遠程識別監控程序)、telnet(網絡終端)和vnc(虛擬網絡計算)等服務器程序。

當運行在相同的系統上時,Netstat 命令提供與lsof輸出相似的結果。其-t選項產生所有的TCP/IP端口的輸出,-u選項生成所有的UDP端口的輸出,-l選項限制只輸出那些正在積極地監聽連接的端口。-p選項顯示擁有網絡連接的程序和進程的ID。下面是Netstat命令在Red Hat Enterprise Linux系統中顯示輸出的一個例子:

此處列示的信息稍微詳細一些,但顯示了與lsof命令相同的開放端口和相關服務。一台計算機所提供服務的內部視圖應與外部計算機所看到的匹配。為了驗證這一點,可以在另一台計算機上使用nmap(網絡映射)命令。其-sT選項實施了一個TCP端口掃描,而-sU選項進行的是UDP端口的掃描。從另一台計算機上掃描相同的計算機會輸出如下的結果:

雖然nmap命令不能識別與631和795端口相關的服務,但前面展示的lsof和nmap命令在本地計算機的輸出卻分別將其確定為打印端口監控程序和rpc.statd命令。

如果所有的輸出一致的話,下一步便是分析可用的服務來決定其是否必需,如果是非必需的,應怎樣處理:

首先,在netstat和lsof中輸出的cupsd(打印)和sendmail(郵件服務器)這兩個進程在nmap的輸出中是不可見的。netstat 和 lsof的輸出確認了它們只是在監聽本地的回路接口,因此對於外部的計算機來說是不可見的,並且不會引安全問題。如果性能是你要分析的計算機的一個問題的話,sendmail對於本地郵件傳輸是有用的;但如果並沒有人正在本機上打印的話,你可能會終止CUPS進程。

Ssh(安全外殼)對於遠程登錄提供了安全機制並支持加密通信,這是好事情。

Telnet進程代表了一個用於建立遠程連接的較早的協議,它使用了非加密的通信。一些telnet的較新版本支持安全的認證和通信機制,如支持Kerberos;但不管怎麼說,這是一個非必需的服務,因為已經提供了SSH,所以必須關閉這個進程。

Rpcbind (端口映射程序) and rpc.statd (795端口)進程僅在NFS環境中有用。如果我們正在分析的不是一個NFS客戶端,就應該關閉它。

Auth進程對於分析網絡客戶端的問題是有用的,但可會為入侵者提供系統用戶的信息。然而,一些FTP和其它的網絡客戶卻必須使用它。因此我們要麼禁用它,要麼用-n選項啟用它。-n使其只顯示數字的用戶ID而非用戶名。

Ntp(網絡時間協議)進程用於使網絡上的計算機時鐘同步,但在過去常被某些人用於查找漏洞等。我們可以在啟動時運行ntp q命令,這樣就可以查詢並同步時間服務,然後再退出。

在32768端口上的omad進程可能令人困惑,但反復檢查lsof 和netstat的輸出,會發現32768實際上正被用於rpc.statd查詢,因此應該通過關閉rpc.statd進程來終止它。這是一個被nmap錯誤識別的進程。

此過程的下一步就是到我們正在分析的計算機那裡來決定在什麼地方及什麼時間這些進程被啟動,因此可以終止我們確認為非必要的任何進程(cupsd, portmap,rpc.statd, telnet, vnc),並改變我們想要改變的任何進程的行為。

copyright © 萬盛學電腦網 all rights reserved