網(wǎng)絡(luò)上的計(jì)算機(jī)很容易被黑客利用工具或其它手段進(jìn)行掃描,以尋找系統(tǒng)中的漏洞,然后再針對(duì)漏洞進(jìn)行攻擊。通過(guò)偽裝Linux系統(tǒng),給黑客設(shè)置系統(tǒng)假象,可以加大黑客對(duì)系統(tǒng)的分析難度,引誘他們步入歧途,從而進(jìn)一步提高計(jì)算機(jī)系統(tǒng)的安全性。下面以 Red Hat Linux為例,針對(duì)幾種黑客常用的途徑介紹一些常用的Linux系統(tǒng)偽裝的方法。
針對(duì)HTTP服務(wù)
通過(guò)分析Web服務(wù)器的類型,大致可以推測(cè)出操作系統(tǒng)的類型,比如,Windows 使用IIS來(lái)提供HTTP服務(wù),而Linux中最常見的是Apache。默認(rèn)的Apache配置里沒(méi)有任何信息保護(hù)機(jī)制,并且允許目錄瀏覽。通過(guò)目錄瀏覽,通常可以獲得類似 “Apache/2.0.49 (Unix) PHP/4.3.8”的信息。通過(guò)修改配置文件中的ServerTokens參數(shù),可以將Apache的相關(guān)信息隱藏起來(lái)。但是,Red Hat Linux運(yùn)行的Apache是編譯好的程序,提示信息被編譯在程序里,要隱藏這些信息需要修改Apache的源代碼,然后,重新編譯安裝程序,以實(shí)現(xiàn)替換里面的提示內(nèi)容。
以Apache 2.0.50為例,編輯ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \ "Apache\"”為“#defineAP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”。編輯 os/unix/os.h文件,修改“#define PLATFORM \"Unix\"”為“#define PLATFORM \"Win32\ 。修改完畢后,重新編譯、安裝Apache。Apache安裝完成后,修改httpd.conf配置文件,將“ServerTokens Full”改為 “ServerTokens Prod”;將“ServerSignature On”改為“ServerSignature Off”,然后存盤退出。重新啟動(dòng)Apache后,用工具進(jìn)行掃描,發(fā)現(xiàn)提示信息中已經(jīng)顯示操作系統(tǒng)為Windows。
針對(duì)FTP服務(wù)
通過(guò)FTP服務(wù),也可以推測(cè)操作系統(tǒng)的類型,比如,Windows下的FTP服務(wù)多是Serv-U,而Linux下常用vsftpd、proftpd和pureftpd等軟件。
以proftpd為例,修改配置文件proftpd.conf,添加如下內(nèi)容:
|
存盤退出后,重新啟動(dòng)proftpd服務(wù),登錄到修改了提示信息的FTP服務(wù)器進(jìn)行測(cè)試:
|
針對(duì)TTL返回值
可以用ping命令去探測(cè)一個(gè)主機(jī),根據(jù)TTL基數(shù)可以推測(cè)操作系統(tǒng)的類型。對(duì)于一個(gè)沒(méi)有經(jīng)過(guò)任何網(wǎng)關(guān)和路由的網(wǎng)絡(luò),直接ping對(duì)方系統(tǒng)得到的 TTL值,被叫做“TTL基數(shù)”。網(wǎng)絡(luò)中,數(shù)據(jù)包每經(jīng)過(guò)一個(gè)路由器,TTL就會(huì)減1,當(dāng)TTL為0時(shí),這個(gè)數(shù)據(jù)包就會(huì)被丟棄。
通常情況下,Windows的TTL的基數(shù)是128,而早期的Red Hat Linux和Solaris的TTL基數(shù)是255,F(xiàn)reeBSD和新版本的Red Hat Linux的TTL基數(shù)是64。比如,ping一個(gè)Red Hat系統(tǒng),顯示如下:
用以下命令修改Red Hat Linux的TTL基數(shù)為128(本來(lái)為64):
|
若想使設(shè)置永久生效,可以修改/etc/sysctl.conf配置文件,添加如下一行:
|
保存退出后,再ping 192.168.0.1,TTL基數(shù)就變?yōu)?28了。
針對(duì)3389端口和22端口
有時(shí)通過(guò)掃描3389端口和22端口,也可以推測(cè)操作系統(tǒng)的類型。Windows下一般利用TCP協(xié)議的3389端口進(jìn)行遠(yuǎn)程控制,而Linux可能會(huì)用TCP協(xié)議的22端口,提供帶有加密傳輸?shù)腟SH服務(wù)。
為了安全,可以利用iptables來(lái)限制22端口的SSH登錄,讓非授權(quán)的IP掃描不到TCP 22端口的存在:
|
利用iptables,將本機(jī)的TCP 3389端口轉(zhuǎn)移到其它開有3389端口的計(jì)算機(jī)上,給Linux系統(tǒng)偽裝出一個(gè)提供服務(wù)的TCP 3389端口。命令如下:
| #echo 1 > /proc/sys/net/ipv4/ip_forward #iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to xx.xx.xx.xx #iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j MASQUERADE |
第一條命令表示允許數(shù)據(jù)包轉(zhuǎn)發(fā);第二條命令表示轉(zhuǎn)發(fā)TCP 3389到xx.xx.xx.xx;第三條命令表示使轉(zhuǎn)發(fā)數(shù)據(jù)包實(shí)現(xiàn)“雙向通路”,給數(shù)據(jù)包設(shè)置一個(gè)正確的返回通道。若想使轉(zhuǎn)發(fā)永久生效,可以把以上命令添加到/etc/rc.local文件中。這樣,當(dāng)黑客掃描服務(wù)器所開端口的時(shí)候,就找不到22號(hào)端口,而是看到一個(gè)偽裝的3389端口,從而不能正確判斷出操作系統(tǒng)的類型。
針對(duì)Netcraft
Netcraft是一個(gè)很厲害的掃描引擎,它通過(guò)簡(jiǎn)單的TCP 80,就可以知道所測(cè)服務(wù)器的操作系統(tǒng)、Web服務(wù)程序和服務(wù)器開機(jī)時(shí)間(Uptime)等信息。上面介紹的幾種方法對(duì)netcraft來(lái)說(shuō),均不奏效。針對(duì)netcraft,可利用iptables進(jìn)行系統(tǒng)偽裝,使netcraft錯(cuò)誤判斷操作系統(tǒng):
|
由于通過(guò)抓包發(fā)現(xiàn),netcraft的服務(wù)器不止一臺(tái),所以需要對(duì)它所在網(wǎng)段進(jìn)行轉(zhuǎn)發(fā)欺騙處理。


