天天看點

Linux常用的安全工具

linux常用的安全工具

“工欲善其事,必先利其器”。作為一個合格的系統管理者,要應對可能發生的安全事件,掌握linux下各種必須的安全工具是首要大事。本文主要介紹linux上常用的安全工具,例如,nmap、snort、nesseu等安裝、使用和維護知識。通過這些工具管理人員能夠了解其系統目前存在的安全隐患、入侵者可能利用的漏洞,及時發現入侵,并構造一個堅固的防禦體系将入侵拒之門外。

一、安全資訊收集軟體

對于系統管理者來說,了解和掌握系統目前的安全狀态是做到“知己”的第一個步驟。安全資訊收集軟體就是用來收集目前系統安全狀态的有力工具。端口掃描軟體和漏洞掃描軟體是常用的資訊收集軟體。入侵者通常通過端口掃描軟體來掌握系統開放端口,運作伺服器軟體版本和作業系統版本等相關資訊。而對于管理人員,通過這些軟體可以讓管理人員從入侵者的角度來審視系統,并且能夠根據這些資訊進行相應的配置和修改來迷惑入侵者。漏洞掃描軟體能夠獲得具體的漏洞資訊,利用這些漏洞資訊,入侵者能夠輕易地通路系統、獲得非授權資訊,甚至是獲得整個系統的控制權限。而對于管理人員,通過漏洞掃描軟體獲得的資訊能夠幫助自己及時對系統進行加強和防禦,讓入侵者無機可乘。

1、nmap

nmap是一個網絡探測和安全掃描程式,使用這個軟體可以掃描大型的網絡,以擷取那台主機正在運作及提供什麼服務等資訊。nmap支援很多掃描技術,例如udp、tcpconnect()、tcpsyn(半開掃描)、ftp代理(bounce攻擊)、反向标志、icmp、fin、ack掃描、聖誕樹(xmastree)、syn掃描和null掃描。nmap還提供了一些進階的特征,例如,通過tcp/ip協定棧特征探測作業系統類型、秘密掃描、動态延時、重傳計算和并行掃描,通過并行ping掃描探測關閉的主機、誘餌掃描,避開端口過濾檢測,直接rpc掃描(無須端口影射)、碎片掃描,以及靈活的目标和端口設定。

(1)安裝

nmap的安裝很簡單,linux各發行版本上通常都已經安裝了namp。這裡首先用“nmap-v”檢視目前系統所安裝的nmap版本号:

#nmap-v

……

#bzip2–cdnmap-5.5.tar.bz2∣tarxvf-

該指令将nmap源代碼解壓縮至目錄nmap-5.5。

進入該目錄進行配置:

#./configure

配置結束後用make指令進行編譯:

#make

編譯結束後用makeinstall進行安裝:

#makeinstall

(2)使用

◆各種掃描模式與參數

首先需要輸入要探測的主機ip位址作為參數。假設一個lan中有兩個節點:192.168.12.1和192.168.12.2

#nmap192.168.12.1

startingnmap5.5(http://www.insecure.org/nmap/)at2010-01-2415:24cst

interestingportson192.168.12.1:(the1651portsscannedbutnotshownbelowareinstate:closed)

portstateservice

25/tcpopensmtp

80/tcpopenhttp

135/tcpopenmsrpc

139/tcpopennetbios-ssn

443/tcpopenhttps

445/tcpopenmicrosoft-ds

1025/tcpopennfs-or-iis

1033/tcpopennetinfo

1521/tcpopenoracle

2030/tcpopendevice2

3372/tcpopenmsdtc

8080/tcpopenhttp-proxy

macaddress:00:e0:4c:12:fa:4b(realteksemiconductor)

nmapruncompleted–1ipaddress(1hostup)

scannedin22.882seconds

上面是對目标主機進行全面tcp掃描的結果,顯示了監聽端口的服務情況,這一基本操作不需要任何參數。但是,由于在掃描過程中建立了完整的tcp連接配接,主機可以很容易地監測到這類掃描。該指令是參數開關-st的預設。

-ss選項可以進行更加隐蔽地掃描,并防止被目标主機檢測到,但此方式需要使用者擁有root權限。-sf、-sx和-sn則可以進行一些超常的掃描。假如目标主機安裝了過濾和日志軟體來檢測同步空閑字元syn,那麼-ss的隐蔽作用就失效了,此時可以采用-sf(隐蔽fin)、-sx(xmastree)及-sn(null)方式掃描。

這裡需要注意的是,由于微軟的實作方式不同,對于運作win2003,vista等nt的機器fin、xmas或null的掃描結果都是将端口關閉,由此可作為推斷目标主機運作windows作業系統的一種方法。以上指令都需要有root權限。-su選項是監聽目标主機的udp,而不是預設的tcp端口。盡管在linux機器上有時慢一些,比如,輸入上面的例子:

#nmap-su192.168.12.1

startingnmap5.5(http://www.insecure.org/nmap/)at2010-01-2415:28cst

interestingportson192.168.12.1:

(the1472portsscannedbutnotshownbelowareinstate:closed)

135/udpopenmsrpc

137/udpopen∣filterednetbios-ns

138/udpopen∣filterednetbios-dgm

445/udpopen∣filteredmicrosoft-ds

500/udpopen∣filteredisakmp

3456/udpopen∣filterediisrpc-or-vat

macaddress:00:e0:4c:12:fa:44(realteksemiconductor)

nmapruncompleted–1ipaddress(1hostup)scannedin4.381seconds

◆作業系統探測

使用-o選項可推斷目标主機的作業系統,既可與上述的指令參數聯合使用,也可單獨調用。nmap利用tcp/ip“指紋”技術來推測目标主機的作業系統。還使用前面的例子:

#nmap-o192.168.12.1

startingnmap5.5(http://www.insecure.org/nmap/)at2010-01-2416:03cst

(the1651portsscannedbutnotshownbelowareinstate:closed)

devicetype:generalpurpose

running:microsoftwindows95/98/me∣nt/2k/xp

osdetails:microsoftwindowsmillenniumedition(me),windows2000prooradvancedserver,orwindowsxp

nmapruncompleted–1ipaddress(1hostup)scannedin3.398seconds

nmap提供了一個os資料庫,上例中檢測到了該主機運作的作業系統為windows系列作業系統,可能為windows98、windows2000pro,或者為windewsvista/windows7等。

◆更進一步的應用

除了一次隻掃描一個目标主機外,還可以同時掃描一個主機群,比如“nmap–st–o203.187.1.1-50”就可以同時掃描并探測ip位址在203.187.1.1到203.187.1.50之間的每一台主機。當然這需要更多的時間,耗費更多的系統資源和網絡帶寬,輸出結果也可能很長。是以,可以使用下面指令将結果重定向輸送到一個檔案中:

#nmap-st-o-ontest.txt202.96.1.1-50

另外的一些指令參數選項如下:

-i進行tcp反向使用者認證掃描,可以透露掃描使用者資訊;

-ir進行随機主機掃描;

-p掃描特定的端口範圍;

-v長資料顯示,“-v-v”是最長資料顯示;

-h快捷幫助。

下面給一個綜合了上述參數的例子:

#nmap-ss-p23,80-onftphttpscan.txt203.187.53.50-100

◆nmap圖形使用者界面

nmap有一些圖形使用者前端,比如,nmapfe(gtk界面)網址為

http://codebox.net/nmapfe.html;kmap(qt/kde前端)網址為

http://www.edotorg.org/kde/kmap/;knmap(kde前端)網址為

http://pages.infinit.net/rewind/。

2.nessus

nessus是一個功能強大而又易于使用的遠端安全掃描器,它有免費版本和收費版本,而且更新很快,幾乎适應所有常見作業系統。安全掃描器的功能是對指定網絡進行安全檢査,找出該網絡是否存在有導緻對手攻擊的安全漏洞。該系統被設計為client/sever模式,伺服器端負責進行安全檢查,用戶端用來配置管理伺服器端。在服務端還采用了plug-in的體系,允許使用者加入執行特定功能的插件,該插件可以進行更快速和更複雜的安全檢查。在nessus中還采用了一個共享的資訊接口,稱之知識庫,其中儲存了前面進行檢査的結果。檢查的結果可以html、純文字、latex(一種文本檔案格式)等幾種格式儲存。在未來的新版本中,nessus将會支援速度更快的安全檢查,而且這種檢查将會占用更少的帶寬,其中可能會用到叢集的技術以提高系統的運作效率。

nessus的主要優點在于其采用了基于多種安全漏洞的掃描,避免了掃描不完整的情況;它是免費的,比起商業的安全掃描工具,如iss具有價格優勢;擴充性強、容易使用、功能強大,可以掃描出多種安全漏洞。

nessus的安全檢查完全是由plug-ins的插件完成的。目前nessus提供的安全檢查插件已達18類多800d個,而且這個數量還會增加。比如,在uselessservices類中,echoportopen和chargen插件用來測試主機是否易受到已知的echo-chargen攻擊;在backdoors類中,pcanywhere插件用來檢查主機是否運作了bo、pcanywhere等背景程式。更可喜的是,其中包括了對最近肆虐一時的codered及其變種的檢測。

在nessus首頁中不但詳細介紹了各種插件的功能,還提供了解決問題的相關方案。有關plug-in的詳細說明,請參看http://cgi.nessus.org/plugins/dump.php3?viewby=family。

除了這些插件外,nessus還為使用者提供了描述攻擊類型的腳本語言,進行附加的安全測試,這種語言稱為nessus攻擊腳本語言(nssl),用它來完成插件的編寫。在用戶端,使用者可以指定運作nessus服務的機器、使用的端口掃描器、測試的内容及測試的ip位址範圍。nessus本身是工作在多線程基礎上的,是以使用者還可以設定系統同時工作的線程數。這樣使用者在遠端就可以設定nessus的工作配置。安全檢測完成後,服務端将檢測結果傳回到用戶端,用戶端生成直覺的報告。在這個過程當中,由于伺服器向用戶端傳送的内容是系統的安全弱點,為了防止通信内容受到監聽,其傳輸過程還可以選擇加密。

(1)安裝軟體

nessus由用戶端和伺服器端兩部分組成。首先看伺服器端的安裝。安裝時注意由于屏蔽了我國ip,是以下載下傳界面會跳到注冊頁面中,無法現在,大家要使用隻要跳過這層就可以,你懂得。然後還需要激活碼(激活碼:6c1a-f33b-60a0-5000-4001)注冊成功後方可使用。

◆建立使用者

nessus服務端有自己的使用者資料庫,其中對每個使用者都做了限制。使用者可以在整個網絡範圍内通過nessusd服務端進行安全掃描。用nessus-adduser指令建立使用者,根據指令提示建立使用者。

nessus-adduser是nessusd的附帶工具,安裝完畢後,在安裝目錄下會産生這個程式。

◆配置nessus服務端程式nessusd

nessusd的配置檔案為nessusd.conf,位于/usr/local/etc/nessus/目錄下,一般情況下不需要改動。這裡還需要運作nessus-mkcert來生成伺服器證書,可以按照預設設定。

◆啟動nessusd

在上面的準備工作完成後,以root使用者身份用下面的指令啟動服務端:

#netssusd–d

loadingtheplugins...3570(outof5830)

載入完所有插件後将以系統服務程序的身份運作。

按照上面的方法啟動nessus的服務程序後,就可以執行用戶端程式進行安全掃描了。

首先提示登入到nessus伺服器,在nessushost後面輸入nessus伺服器所在的linux機器ip位址,端口号及加密方式不需要做改動。輸入使用者名,單擊“login”登入。系統會詢問是否接受伺服器證書,選擇第一項,然後單擊“yes”接受證書。

一旦登入成功,“login”按鈕會變為“logout”,對話框的旁邊還會有connected的提示。登入後就可以進行相應的漏洞掃描了。下面通過選擇plug-in插件來進行相應的安全掃描。下面是插件所能檢査的攻擊方法,單擊每個攻擊方法會彈出一個對話框介紹它的危害性及解決方法。然後選擇掃描的目标主機,單擊“targetselection”,在視窗中輸入目标位址,如上面所輸入的192.168.12.2。這裡作者用的是一個内部位址,還可以用192.168.6.0/24的方式指定掃描192.168.6.1到192.168.6.255整個網段。

設定完畢後,單擊“startscan”開始進行掃描。根據選擇的插件數量、掃描的範圍掃描時間不等。掃描結束後會有掃描結果。

在視窗的中列出了所有被掃描的網絡、主機和主機相應的端口,nessus給出了安全漏洞的嚴重等級、問題的産生原因及解決方法。最後,掃描結果還能夠以xml、ascⅡ、html、nsr等多種格式存盤,做為參考資料供以後使用。

入侵檢測系統(ids)

1、原理

入侵檢測系統(intrusiondetectionsystem,ids)是一種主動保護自己免受攻擊的一種網絡安全技術。作為防火牆的合理補充,入侵檢測技術能夠幫助系統監測攻擊行為,擴充了系統管理者的安全管理能力(包括安全審計、監視、攻擊識别和響應),提高了資訊安全基礎結構的完整性。它從計算機網絡系統中的若幹關鍵點收集資訊,并分析這些資訊。入侵檢測被認為是防火牆之後的第二道安全閘門,能夠在不影響網絡性能的情況下能對網絡進行監測,防止或減輕上述的網絡威脅。

入侵檢測系統有很多種,從部署的位置可以分為以下幾種:

◆基于網絡的系統,它放置于網絡之上,靠近被檢測的系統,它們監測網絡流量并判斷是否正常。

◆基于主機的系統,其經常運作在被監測的系統之上,用以監測系統上正在運作的程序是否合法。

◆最近出現的一種系統,位于作業系統的核心之中,并監測系統的最底層行為。

從檢測的技術手段上可以分為以下兩種:

◆誤用檢測是将收集到的資料與預先确定的特征知識庫裡的各種攻擊模式進行比較,如果發現有攻擊特征,則判斷有攻擊。特征知識庫是将己知的攻擊方法和技術的特征提取出來建立的一個知識庫。

◆異常檢測則是對收集到的資料進行統計分析。它首先假定所有的攻擊行為與正常行為不同,這樣發現與正常行為有不同時,則判斷存在攻擊。它需要建立正常行為的标準,如登入時錯誤次數為多少時視為正常。

相比而言,誤用檢測的原理簡單,很容易配置,特征知識庫也容易擴充。但它存在一個緻命的弱點――隻能檢測到已知的攻擊方法和技術。異常檢測可以檢測出已知的和未知的攻擊方法和技術,但是其問題在于正常行為标準隻能采用人工智能、機器學習算法等來生成,并且需要大量的資料和時間,同時,由于現在人工智能和機器學習算法仍處于研究階段。是以現在的入侵檢測系統大多采用誤用檢測的分析方法。

下面給介紹的snort就是一個基于網絡的、采用誤用分析技術的入侵檢測系統。

2.snort的安裝、配置和使用

snort是一個開放源碼的網絡入侵檢測系統。snort的功能包括采用libpcap捕獲資料鍊路層的分組,并進行協定棧分析(tcp/ip協定)。snort在内部使用misused檢測模型進行入侵檢測,即通過一個完整的入侵規則庫來實時比對,并探測入侵行為。這個規則庫非常全面,包含了探測緩沖區溢出、端口掃描、cgi攻擊等,并處于不斷更新當中。snort可以輕易發現使用nmap或trin00等進行的攻擊。snort也允許使用者友善地編寫和加人自己的規則。日志可以存儲成tcpdump二進制格式、ascⅡ格式或資料庫格式(包括mysql、postgresql),甚至xml格式。

(1)安裝

在http://www.snort.org/可以下載下傳最新版本的snort,目前最新穩定版本是2.8.0,下載下傳檔案為snort-2.8.0rc2.tar.gz。安裝的方法同上面介紹的幾個軟體類似。依次經過解壓縮後運作“./configure”、“make”和“makeinstall”。要注意的是,snort需要libpcap庫支援,如果尚未安裝可以到http://www.tcpdump.org/下載下傳libpcap源代碼進行安裝,目前最新版本為0.8.3。

執行檔案安裝完畢後還需要下載下傳最新的規則檔案。snort采用基于誤用的檢測技術,需要按照預先定義好的規則同網絡當中的流量進行比對,特征一緻時認為有入侵事件發生,進而釆取相應動作,是以保持最新的特征庫對snort來說尤其重要。将下載下傳到的規則檔案解壓縮,得到rules目錄,其内容為按照攻擊類型和攻擊目标劃分為不同規則檔案。

(2)配置

snort依靠指令啟動時指定的配置檔案進行配置,通常是/etc/snort.conf,可以編輯snort配置檔案源檔案所在目錄下/etc/snort.conf來進行配置。

#vi/root/snort/snort-2.8.0rc2/etc/

其中需要修改的地方如下:

varhome_netyournetwork

varrule_path/etc/snort/rules

preprocessorhttp_inspect:global\

此外還可以根據需要選擇規則集合當中的規則檔案,例如:

iis_unicode_map/etc/snort/rules/unicode.map1252

include/etc/snort/rules/reference.config

include/etc/snort/rules/classification.config

yournetwork即為所釆用的ip位址段,規則檔案所在目錄為剛才下載下傳規則檔案解壓縮所在目錄。

(3)使用

輸入下面代碼:

#snort–d–c/root/snort/snort-2.8.0rc2/etc/snort.conf

其中,-d參數表明snort以背景程序方式運作,-c指名所釆用的配置檔案位置。啟動之後可以檢視/var/log/snort/alert内容來檢査結果。

#vialert

[**][1:469:3]icmppingnmap[**]

[classification:attemptedinformationleak][priority:2]

01/28-17:30:33.813923192.168.100.122->202.12.37.7

icmpttl:50tos:0x0id:36381iplen:20dgmlen:28

type:8code:0id:51597seq:14292echo

[xref=>http://www.whitehats.com/info/ids162]

[**][122:1:0](portscan)tcpportscan[**]

01/28-17:30:33.916752192.168.12.1->202.12.37.7

proto255ttl:0tos:0x0id:0iplen:20dgmlen:182df

由上可以看到,告警檔案中記錄了網絡當中一次nmap端口掃描的行為。

防火牆系統

1、基本原理

防火牆适用于使用者網絡系統的邊界,屬于使用者網絡邊界的安全保護裝置。所謂網絡邊界即是釆用不同安全政策的兩個網絡連接配接處,比如使用者網絡和網際網路之間連接配接、跟其它業務往來機關的網絡連接配接及使用者内網不同部門之間的連接配接等。防火牆的目的就是在網絡連接配接之間建立一個安全控制點,通過允許、拒絕或重新定向經過防火牆的資料流,實作對進、出内部網絡的服務和通路的審計和控制。

目前,有很多廠商提供各種類型的防火牆平台,通常有幾種常用的分類方法:

按照産品形式可分為硬體防火牆和軟體防火牆;

按照性能可以分為百兆級和千兆級防火牆;

按照操作模式可分為透明模式、路由模式和net(網絡位址轉換);

按照部署位置可分為邊界防火牆和主機/個人防火牆;

l按照osi模型層次可分為包過濾防火牆、狀态檢測防火牆和應用代理防火牆。

其中包過濾防火牆是最基本的防火牆,由一些基本路由裝置通過内部的網絡通路控制規則實作。它一般是工作在網絡層,但在現代網絡結構中,為了實作負載均衡/高可用性,也可能在網絡第二層實作。包過濾防火牆的通路控制功能由一套規則集組成,這些規則集是基于網絡封包的以下資訊實作的源位址、目的位址、流量類型、網絡會話特征或實體端口。

下面介紹的iptables就是一款優秀的網絡層防火牆用他能很容易建構一個功能強大、性能優異的防火牆系統。

2.iptables的安裝、配置和使用

netfilter/iptablesip資料包過濾系統是一個功能強大的工具,可用于添加、編輯和除去規則,這些規則是在做資料包過濾決策時防火牆所遵循群組成的規則。這些規則存儲在專用的資料包過濾表中,而這些表則內建在linux核心中。linux2.4核心提供的防火牆系統實際上由netfilter和iptables組成。netfilter元件是核心的一部分,由一些資料包過濾表組成、這些表包含核心用來控制資料包過濾處理的規則集。iptables元件是一種工具,運作在使用者空間,它用來維護存儲在核心中的資料包過濾表中的規則。通過iptalbes可以友善地修改、添加和删除規則,也可以建構自己的定制規則。核心根據規則來決定,對來自某些源、前往某些目的地或具有某些協定類型的資料處理,可以是accept(允許該資料包通過)、drop(丢棄該資料包),或者是reject(阻塞資料包)。

根據規則處理的資料包類型,可以将規則分組在不同鍊中。處理入站資料包的規則被添加到input鍊中;處理出站資料包的規則被添加到output鍊中;處理正在轉發的資料包的規則被添加到forward鍊中。這三個鍊是基本資料包過濾表中内置的預設主鍊。

此外,還有其它許多可用鍊類型,如prerouting和postrouting,以及提供使用者定義的鍊。每個鍊都可以有一個政策,它定義“預設目标”,也就是要執行的預設操作,當資料包與鍊中的任何規則都不比對時,執行此操作。

建立規則并将鍊放在适當的位置之後,就可以開始進行真正的資料包過濾工作。這時核心空間從使用者空間接管工作。當資料包到達防火牆時,核心先檢查資料包的頭資訊,尤其是資料包的目的地,這個過程稱為路由。

如果資料包源自外界并前往系統,而且防火牆是打開的,那麼核心将它傳遞到核心空間資料包過濾表的input鍊。如果資料包源自系統内部或系統所連接配接的内部網上的其它源,并且此資料包要前往另一個外部系統,那麼資料包被傳遞到output鍊。類似的,源自外部系統并前往外部系統的資料包被傳遞到forward鍊。接下來,将資料包的頭資訊與它所傳遞到的鍊中的每條規則進行比較,看它是否與某條規則全比對,如果資料包與某條規則比對,那麼核心就對該資料包執行由該規則的目标指定的操作。但是,如果資料包與這條規則不比對,那麼它将與鍊中的下一條規則進行比較。最後,如果資料包與鍊中的任何規則都不比對,那麼核心将參考該鍊的政策來決定如何處理該資料包。

通常的linux發行版本都支援iptalbes,很多情況下它已經随着作業系統而被安裝。如果在安裝作業系統時沒有選擇防火牆支援,那麼需要重新編譯核心才能使用iptables。對于如何重新編譯核心,這裡就不再贅述。關于iptables的安裝可以參看iptables使用手冊,或者相應how-to文檔http://www.linuxguruz.com/iptables/howto/iptables-howto.html

下面介紹iptalbes的常用參數。

◆對規則的操作

加入(append)一個新規則到一個鍊(-a)的最後。

在鍊内某個位置插入(insert)一個新規則(-i),通常是插在最前面。

在鍊内某個位置替換(replace)一條規則(-r)。

在鍊内某個位置删除(delete)一條規則(-d)。

删除(delete)鍊内第一條規則(-d)。

◆指定源位址和目的位址

通過“――source/--src/-s”可以指定源位址(這裡的/表示或者的意思,下同),通過“—destination/--dst/-s”可以指定目的位址。有四種方法可以指定ip位址:使用完整的域名,如www.buaa.educn;使用ip位址,如192.168.1.1;用x.x.x.x/x.x.x.x指定一個網絡位址,如192.168.1.0/255.255.255.0;

用x.x.x.x/x指定一個網絡位址,如192.168.1.0/24,這裡的24表明了子網路遮罩的有效位數。

◆指定網絡接口

使用”—in-interface/-i”或“—out-interface/-o”來指定網絡接口。

◆指定協定及端口

通過“――protocol/-p”選項來指定協定,如果是udp和tcp協定,還可使用“—source-port/--sport”和“—destination-port/--dport”來指明端口。

關于防火牆的具體應用,這裡限于篇幅就不詳細介紹,在以後的文章中會以一個具體的例子來說明如何利用iptables的防火牆和網絡位址轉換(nat)功能來提供一個安全、穩定、可靠的internet接入。

小結

linux系統以其強大的功能和開放的平台,為許多安全工具提供支援。除了以上列舉到的nmap、nessue、snort、iptables等軟體,将這些軟體都內建在一起的工具包有bt4/5 以及後續我給大家介紹的ossim平台。但掌握這些工具的原理、配置和使用對使用ossim這個工具非常重要。

繼續閱讀