網(wǎng)絡(luò)上的計算機很容易被黑客利用工具或其它手段進行掃描,以尋找系統(tǒng)中的漏洞,然后再針對漏洞進行攻擊。
通過偽裝Linux系統(tǒng),給黑客設(shè)置系統(tǒng)假象,可以加大黑客對系統(tǒng)的分析難度,引誘他們步入歧途,從而進一步提高計算機系統(tǒng)的安全性。下面以Red Hat Linux為例,針對幾種黑客常用的途徑介紹一些常用的Linux系統(tǒng)偽裝的方法。
針對HTTP服務(wù)
通過分析Web服務(wù)器的類型,大致可以推測出操作系統(tǒng)的類型,比如,Windows使用IIS來提供HTTP服務(wù),而Linux中最常見的是Apache。
默認(rèn)的Apache配置里沒有任何信息保護機制,并且允許目錄瀏覽。通過目錄瀏覽,通常可以獲得類似“Apache/1.3.27 Server at apache.linuxforum.net Port 80”或“Apache/2.0.49 (Unix) PHP/4.3.8”的信息。
通過修改配置文件中的ServerTokens參數(shù),可以將Apache的相關(guān)信息隱藏起來。但是,Red Hat Linux運行的Apache是編譯好的程序,提示信息被編譯在程序里,要隱藏這些信息需要修改Apache的源代碼,然后,重新編譯安裝程序,以實現(xiàn)替換里面的提示內(nèi)容。
以Apache 2.0.50為例,編輯ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \"Apache\"”為“#define AP_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”,然后存盤退出。重新啟動Apache后,用工具進行掃描,發(fā)現(xiàn)提示信息中已經(jīng)顯示操作系統(tǒng)為Windows。
針對FTP服務(wù)
通過FTP服務(wù),也可以推測操作系統(tǒng)的類型,比如,Windows下的FTP服務(wù)多是Serv-U,而Linux下常用vsftpd、proftpd和pureftpd等軟件。
以proftpd為例,修改配置文件proftpd.conf,添加如下內(nèi)容:
ServerIdent on \"Serv-U FTP Server v5.0 for WinSock ready...\" |
C:\\>ftp 192.168.0.1 Connected to 192.168.0.1. 220 Serv-U FTP Server v5.0 for WinSock ready... User (192.168.0.1:(none)): 331 Password required for (none). Password: 530 Login incorrect. Login failed. ftp > quit 221 Goodbye. |
針對TTL返回值
可以用ping命令去探測一個主機,根據(jù)TTL基數(shù)可以推測操作系統(tǒng)的類型。對于一個沒有經(jīng)過任何網(wǎng)關(guān)和路由的網(wǎng)絡(luò),直接ping對方系統(tǒng)得到的TTL值,被叫做“TTL基數(shù)”。網(wǎng)絡(luò)中,數(shù)據(jù)包每經(jīng)過一個路由器,TTL就會減1,當(dāng)TTL為0時,這個數(shù)據(jù)包就會被丟棄。
通常情況下,Windows的TTL的基數(shù)是128,而早期的Red Hat Linux和Solaris的TTL基數(shù)是255,F(xiàn)reeBSD和新版本的Red Hat Linux的TTL基數(shù)是64。比如,ping一個Red Hat系統(tǒng),顯示如下:
Pinging 192.168.0.1 with 32 bytes of data: Reply from 192.168.0.1: bytes=32 time <10ms TTL=64 Reply from 192.168.0.1: bytes=32 time <10ms TTL=64 Reply from 192.168.0.1: bytes=32 time <10ms TTL=64 Reply from 192.168.0.1: bytes=32 time <10ms TTL=64 Ping statistics for 192.168.0.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms |
# echo 128 > /proc/sys/net/ipv4/ip_default_ttl |
net.ipv4.ip_default_ttl = 128 |
針對3389端口和22端口
有時通過掃描3389端口和22端口,也可以推測操作系統(tǒng)的類型。Windows下一般利用TCP協(xié)議的3389端口進行遠(yuǎn)程控制,而Linux可能會用TCP協(xié)議的22端口,提供帶有加密傳輸?shù)腟SH服務(wù)。
為了安全,可以利用iptables來限制22端口的SSH登錄,讓非授權(quán)的IP掃描不到TCP 22端口的存在:
#iptables -I INPUT -s ! xx.xx.xx.xx -p tcp --dport 22 -j DROP |
#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 |
這樣,當(dāng)黑客掃描服務(wù)器所開端口的時候,就找不到22號端口,而是看到一個偽裝的3389端口,從而不能正確判斷出操作系統(tǒng)的類型。
針對netcraft
netcraft是一個很厲害的掃描引擎,它通過簡單的TCP 80,就可以知道所測服務(wù)器的操作系統(tǒng)、Web服務(wù)程序和服務(wù)器開機時間(Uptime)等信息。
上面介紹的幾種方法對netcraft來說,均不奏效。針對netcraft,可利用iptables進行系統(tǒng)偽裝,使netcraft錯誤判斷操作系統(tǒng):
#iptables -t nat -I PREROUTING -s 195.92.95.0/24 -p tcp --dport 80 -j DNAT --to xx.xx.xx.xx #iptables -t nat -I POSTROUTING -s 195.92.95.0/24 -p tcp --dport 80 -j MASQUERADE |
小結(jié)
以上方法只能從某種角度上防止和阻撓黑客對系統(tǒng)漏洞的分析,在一定程度上可減少計算機被攻擊的可能性,但仍然是“防君子,不防小人”,僅是給大家提供一個活學(xué)活用的新思路。