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