BackTrack及其工具保護(hù)企業(yè)環(huán)境免遭遠(yuǎn)程入侵
譯文攻擊者通常尋找遠(yuǎn)程安全漏洞,目的是為了對(duì)你網(wǎng)絡(luò)上的資源搞破壞。BackTrack Linux是一款用于測(cè)試安全的發(fā)行版,可幫助你檢查自己的網(wǎng)絡(luò)和服務(wù)器,查找遠(yuǎn)程安全薄弱環(huán)節(jié)和潛在的安全漏洞。
BackTrack基于Ubuntu,捆綁了滲透測(cè)試和安全審計(jì)所必不可少的各種工具。你其實(shí)沒(méi)必要運(yùn)行BackTrack就可以使用它提供的工具,但是啟動(dòng)BackTrack自生系統(tǒng)光盤(live CD)讓你可以馬上開始入手。
在你開始入手之前有必要提醒一下:掃描網(wǎng)絡(luò)可能會(huì)耗用系統(tǒng)和網(wǎng)絡(luò)資源。所以,確保在貴公司內(nèi)部全面協(xié)調(diào)你的掃描工作,并告知管理班子。
利用Nmap探測(cè)網(wǎng)絡(luò)環(huán)境
你最先想試用的工具之一是Nmap,這是一款功能強(qiáng)大的智能化命令行網(wǎng)絡(luò)掃描工具。實(shí)際上,Nmap顯示了開啟的端口以及偵聽這些端口的服務(wù)方面的一些信息。
Nmap隨帶許多有用的選項(xiàng),這些選項(xiàng)在默認(rèn)情況下已啟用。比如說(shuō),你在探測(cè)網(wǎng)絡(luò)時(shí),端口隨機(jī)化(掃描端口順序隨機(jī)化)可防止簡(jiǎn)單的入侵檢測(cè)和預(yù)防系統(tǒng)檢測(cè)和阻止你。另外一些有用的選項(xiàng)包括:
·--script--在一套腳本的幫助下執(zhí)行掃描。Nmap自身捆綁了根據(jù)用途分類的幾套腳本,比如用于檢測(cè)拒絕服務(wù)攻擊(DOS)、蠻力攻擊及其他薄弱環(huán)節(jié)。你可以在Nmap腳本引擎的主頁(yè)(http://nmap.org/nsedoc/)上找到完整列表。如果你心里沒(méi)底,不知道該用什么腳本,那就選擇默認(rèn)值:與其他一些選項(xiàng)相比,默認(rèn)值更穩(wěn)當(dāng),干擾更小。
·-p--指定你對(duì)哪些端口有興趣。就UDP和TCP這兩種協(xié)議而言,大多數(shù)合法服務(wù)在1:10000這個(gè)端口范圍里面運(yùn)行。掃描更大范圍的端口需要耗用更多的時(shí)間和資源。
·-sV--顯示了開啟端口的服務(wù)和版本信息。這很有用,可以表明某項(xiàng)服務(wù)是否在偵聽非默認(rèn)端口,比如偵聽TCP端口8080的Apache;而版本信息可能表明過(guò)時(shí)的軟件和潛在的安全漏洞。如果你借助Nmap檢測(cè)到這類過(guò)時(shí)的應(yīng)用程序,就要確保盡快給它們打上補(bǔ)丁。
·target--把目標(biāo)主機(jī)或網(wǎng)絡(luò)定義為Nmap命令的最后實(shí)參。
把上述選項(xiàng)組合起來(lái),你就能得到這樣的一個(gè)命令:
nmap --script=default -p U:1-10000,T:1-10000 -sV 192.168.1.0/24
在這個(gè)例子中,目標(biāo)是一個(gè)內(nèi)部專用網(wǎng)絡(luò)(192.168.1.0/24)。如果你在尋找真正遠(yuǎn)程的安全漏洞,應(yīng)該從本地網(wǎng)絡(luò)外面執(zhí)行掃描。不過(guò),內(nèi)部掃描也很有用,可以顯示沒(méi)必要暴露的服務(wù),這始終是個(gè)安全風(fēng)險(xiǎn)。
這個(gè)實(shí)例的輸出類似:
...
Nmap scan report for example.org (192.168.1.102)
Host is up (0.0017s latency).
Not shown: 9997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 3 (protocol 2.0)
...
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-methods: No Allow or Public header in OPTIONS response (status code 200)
...
3306/tcp open mysql MySQL 5.5.28-1
...
來(lái)自Nmap輸出的上述片段顯示了在192.168.1.102上運(yùn)行的SSH、HTTP和MySQL等服務(wù)的信息。它清楚地顯示了每個(gè)軟件的名稱和版本:OpenSSH 6.0p1、Apache httpd 2.2.22和MySQL 5.5.28-1。#p#
限制網(wǎng)絡(luò)暴露程度
針對(duì)每一項(xiàng)暴露的服務(wù),你應(yīng)該確定該服務(wù)是不是果真有必要暴露。若沒(méi)有必要暴露,一個(gè)辦法就是,確保該服務(wù)只偵聽本地回送接口(127.0.0.1)。當(dāng)MySQL服務(wù)只服務(wù)本地請(qǐng)求時(shí),這對(duì)該服務(wù)來(lái)說(shuō)是個(gè)好辦法。為此,就MySQL服務(wù)而言,編輯my.cnf文件。當(dāng)MySQL偵聽所有接口時(shí), bind-address命令看起來(lái)像這樣:bind-address = 0.0.0.0。想讓它只偵聽本地接口,將它更改成bind-address = 127.0.0.1。
此外,MySQL讓你可以明確限制允許用戶連接的遠(yuǎn)程主機(jī),連接遠(yuǎn)程主機(jī)是MySQL的連接驗(yàn)證過(guò)程的一部分。這樣一種額外的安全限制有助于防范蠻力攻擊,但是通常對(duì)防范遠(yuǎn)程軟件安全漏洞無(wú)濟(jì)于事。
你還可以使用防火墻來(lái)限制對(duì)服務(wù)的訪問(wèn)。如果配置得當(dāng),防火墻可以只允許某些主機(jī)連接至某項(xiàng)特定服務(wù)。MySQL的一個(gè)示例iptables命令看起來(lái)像這樣:iptables -I INPUT -s 192.168.1.1 -p TCP --dport 3306 -j ACCEPT; iptables -I INPUT -p TCP --dport 3306 -j DROP。這個(gè)示例命令只允許從IP地址192.168.1.1進(jìn)行MySQL連接。
作為最后一招,你可以決定為某項(xiàng)服務(wù)更改默認(rèn)端口。這通常適用于必須仍然保持相對(duì)隱藏,但從外面仍可以完全訪問(wèn)的敏感服務(wù)。當(dāng)系統(tǒng)管理員想從任何地方獲得訪問(wèn)權(quán)時(shí),SSH常常是這種情況。你可以把SSH端口更改成通常掃描的范圍(1-10000)之上的一個(gè)端口。比如說(shuō),如果你設(shè)置SSH守護(hù)進(jìn)程,以便偵聽端口19999,它不大可能被檢測(cè)出來(lái),但是你仍能夠從任何地方訪問(wèn)該服務(wù),只要你知道這個(gè)端口。想更改SSH端口,編輯文件/etc/ssh/sshd_config 中的命令Port,然后重啟服務(wù)。當(dāng)以后用你的SSH客戶端進(jìn)行連接時(shí),別忘了指定該端口(Linux外殼中的ssh -p)。
這些是限制遠(yuǎn)程連接、防范外部攻擊的幾個(gè)最簡(jiǎn)單的方法。如果你有興趣想了解更高級(jí)的手段,可以考慮采用端口碰撞(port knocking)這個(gè)值得關(guān)注的理念和辦法。
限制暴露的信息
通過(guò)我們的實(shí)例處理SSH和MySQL服務(wù)后,只有Web服務(wù)仍暴露著。按理說(shuō),外界通過(guò)標(biāo)準(zhǔn)的HTTP TCP端口80,完全可以訪問(wèn)該服務(wù);我們無(wú)法把該服務(wù)隱藏在一個(gè)不同的端口后面,也無(wú)法限制對(duì)該服務(wù)的訪問(wèn)。我們唯一的選擇就是,關(guān)于它的信息盡量少透露。
按照上一個(gè)實(shí)例,Apache版本是Apache httpd 2.2.22((Debian))。這為攻擊者提供了大量的信息:Web服務(wù)器名稱、版本、甚至還有操作系統(tǒng)。你可以限制這些信息,只需更改Apache配置,并且將服務(wù)器權(quán)標(biāo)設(shè)置為ServerTokens ProductOnly。之后,當(dāng)你再次運(yùn)行掃描時(shí),你會(huì)看到版本信息只有Apache httpd。
就算我們使用那個(gè)基本的Nmap實(shí)例,也能獲得除版本之外的更多信息。就Apache而言,Nmap還顯示了OPTIONS報(bào)頭被允許;http方法方面沒(méi)有什么限制 :|_http-methods: No Allow or Public header in OPTIONS response (status code 200)。從安全的角度來(lái)看,將允許的HTTP方法限制在你網(wǎng)站真正需要的幾種方法很重要,因而為攻擊者提供了較少的辦法。
比如說(shuō),TRACE HTTP方法回應(yīng)用戶輸入。很顯然,這項(xiàng)特性適用于調(diào)試,但是在生產(chǎn)環(huán)境的Web服務(wù)器中不需要。TRACE方法被某些攻擊所采用,因?yàn)榭梢栽试S訪問(wèn)敏感信息,所以它應(yīng)該幾乎總是被禁用。實(shí)際上,大多數(shù)普通的Web服務(wù)器應(yīng)該只支持兩種HTTP方法:GET和POST。為了禁止其余方法,請(qǐng)使用Apache命令limitexcept,就像這樣:
Order deny,allow
Deny from all
隱藏服務(wù)器權(quán)標(biāo),并禁止不需要的聯(lián)系方法,這開了個(gè)好頭,但還遠(yuǎn)遠(yuǎn)不夠。還需要應(yīng)用防火墻,這種防火墻提供了更全面深入的保護(hù)。幾乎所有可以公共訪問(wèn)的服務(wù)都有這樣一種防火墻解決方案。以Apache為例,請(qǐng)查閱文章《如何借助ModSecurity保護(hù)你的Web服務(wù)器》(http://www.openlogic.com/wazi/bid/188075/)。
仔細(xì)檢查Nmap的輸出,對(duì)任何公共暴露的服務(wù)進(jìn)行類似的處理。你應(yīng)該能夠挫敗通常的一般性的非針對(duì)性攻擊,這類攻擊隨機(jī)地掃描互聯(lián)網(wǎng),查找過(guò)時(shí)或配置不當(dāng)?shù)能浖?p#
借助Nessus,更深入地分析滲透測(cè)試
Nmap功能強(qiáng)大,讓你可以對(duì)自己的環(huán)境進(jìn)行一番嚴(yán)格的滲透測(cè)試,但是用起來(lái)不如一些更高級(jí)的安全漏洞掃描工具來(lái)得容易,功能也不如它們?nèi)?。比如說(shuō),Nessus是一款商用安全漏洞掃描工具,允許家庭用戶有限地免費(fèi)使用。想在BackTrack中開始使用它,你得先注冊(cè)領(lǐng)取一個(gè)許可證密鑰,按照官方的Nessus on BackTrack指南(http://www.tenable.com/blog/enabling-nessus-on-backtrack-5-the-official-guide)里面描述的幾個(gè)預(yù)備步驟即可。
一旦你在BackTrack中讓Nessus設(shè)置并運(yùn)行起來(lái),可以通過(guò)能夠在https://localhost:8834訪問(wèn)的直觀的Web界面來(lái)控制它。Web界面讓你很容易配置滲透測(cè)試;一旦配置完畢,可以生成界面專業(yè)的報(bào)告。
Nessus可以檢測(cè)所有暴露層面上的50000余個(gè)安全漏洞,這些暴露層面從配置不當(dāng)?shù)姆?wù),到過(guò)時(shí)軟件,不一而足。一旦它檢測(cè)出了安全漏洞,就會(huì)報(bào)告所有的相關(guān)信息;最為重要的是,還會(huì)建議采用什么樣的解決辦法。這為你節(jié)省了時(shí)間,確保你遵守解決問(wèn)題的最佳實(shí)踐,并確保你符合最高的安全標(biāo)準(zhǔn)。
Nessus是企業(yè)用戶最青睞的滲透測(cè)試解決方案。不過(guò),Nmap依然是網(wǎng)絡(luò)掃描領(lǐng)域的瑞士軍刀,因?yàn)樗鼮樘綔y(cè)網(wǎng)絡(luò)環(huán)境提供了一條最快捷、最簡(jiǎn)單的路徑,又不必束縛于許可證、花費(fèi)大量資金。
無(wú)論你選擇哪個(gè)應(yīng)用程序,最重要的事情就是明白遠(yuǎn)程安全這個(gè)概念。不要暴露沒(méi)必要的服務(wù),也不要暴露沒(méi)有明確要求的任何信息。這應(yīng)該可以確保你不會(huì)吸引可能利用零日漏洞的四處橫行的安全威脅。
原文地址:http://www.openlogic.com/wazi/bid/271899/BackTrack-and-its-tools-can-protect-your-environment-from-remote-intrusions