測試的伺服器:redhat7.0,redhat7.1,mandrake7.1
本文主要讨論linux伺服器的僞裝,對于Sun、hp等可以查找相關資料,本文隻提供思路。
前言:為什麼要僞裝?
動物僞裝,為了逃避天敵,或為了更好的擷取獵物。
人僞裝,使你不知他的底細。
伺服器僞裝,目的是要使攻擊者很難搜集到伺服器真正的資訊,使他的進一步攻擊造成難度,進而起到一定的保護作用,當然還有更深的用法,等着你去發現。
聲明:
本文隻是本人研究的總結,是為了大家的學習研讨,請不要用到非法用途。
本人才疏學淺,不足及錯誤的地方請指出,mail位址:[email protected]。
正文:
1. Telnet資訊僞裝
首先看一次telnet過程:
[yxg@localhost yxg]$ telnet xx.xx.xx.xx
Trying xx.xx.xx.xx...
Connected to xxxx.
Escape character is ^].
Red Hat Linux release 7.1 (Seawolf)
Kernel 2.4.2-2 on an i686
login:
從中可以看到作業系統為Red Hat Linux release 7.1,核心版本2.4.2-2,計算機為:intel686。攻擊者得到這些資訊就可以用相應的攻擊程式。是以我們不能告訴他們真正的情況。
telnet資訊存放于/etc/issue.net
[root@database /etc]# cat issue.net
修改它成為你想要的任何字元,甚至什麼也不要。
我的改為Sun的提示:
[yxg@localhost yxg]$ cat /etc/issue.net
SunOS 8.0
要注意必要的空行,改完和僞裝的對象比較,直到一模一樣才行。
對于本機的使用者,提示資訊在/etc/issue,改不改随你。
注意:如果你想重新開機後issue.net内容不變,修改/etc/rc.local,在這些行前加#
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
# echo "" > /etc/issue
# echo "$R" >> /etc/issue
# echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue
# cp -f /etc/issue /etc/issue.net
# echo >> /etc/issue
2. ftp資訊僞裝
現在有很多對于wu-ftp的攻擊程式,是以我就拿wu-ftp作例子。
先看一下ftp的過程:
[yxg@localhost yxg]$ ftp xx.xx.xx.xx
220 database FTP server (Version wu-2.6.1-16) ready.
如果想要不顯示出wu-ftp,可以有多種方法。
其一:
察看in.ftpd就能發現版本号寫在了程式中
[root@database /root]# strings /usr/sbin/in.ftpd
………………….
/var/log/lastlog
Could not write %.100s: %.100s
Version wu-2.6.1-16
你可以用16進制編輯器修改版本的字元串,改為proftp什麼的,保準有人會上當。
其二:
/etc/ftpaccess裡有兩個參數
訓示參數:greeting full | brief | terse
greeting text
允許控制遠端使用者登陸進來以後,給使用者多少資訊及資訊内容。
banner
banner消息是在使用者名和密碼以前顯示給使用者的。
3. 修改telnet和ftp的預設端口号
有很多掃描器并不是逐個端口掃描的,是以來個乾坤大挪移來使掃描失效。
具體是修改/etc/services 或者是/etc/inetd.conf。
4. 作業系統指紋僞裝
nmap等掃描器能通過作業系統指紋判斷作業系統類型,是以我們要采取一些政策保護自己。現在有一些工具可以修改作業系統指紋,像fpf等,fpf可以在www.xfocus.org下載下傳,它是一個lkm,加載到核心中,可以模拟很多作業系統。當然你可能要對源程式進行修改,也可以加入一些新的功能,如自動隐藏等。
5. 改裝uname
如果不幸被一個攻擊者闖入,它可以用uname來擷取真正的作業系統資訊,然後來個本地溢出,你就哭吧。
是以我們要修改uname的源程式,使它顯示我們想要它顯示的内容。
打開uname.c,找到如下行:
print_element (PRINT_SYSNAME, name.sysname);//作業系統名如linux
print_element (PRINT_NODENAME, name.nodename);//主機名
print_element (PRINT_RELEASE, name.release);//發行版本,如:2.2.16-22
print_element (PRINT_VERSION, name.version);//
print_element (PRINT_MACHINE, name.machine);//機器類型,如i686
print_element (PRINT_PROCESSOR, processor);//處理器類型
知道怎麼改吧,不知道?提示一下,如果要顯示作業系統為SunOS,替換第一行為:
print_element(PRINT_SYSNAME,"SunOS");
編譯後,運作./uname –s,就會顯示SunOS
當然你應該把每一項都進行修改,使人看不出破綻。
最後把改好的uname拷到/bin目錄。
我在修改時還加了一個-Y的參數,目的是顯示真正的資訊,給自己看的。預設顯示修改過的資訊。
6. 其他一些雜項
建議你盡量關掉不必要的服務,對于開放的其他服務要仔細檢查,使它不至于有洩密的資訊。
不同作業系統的shell提示符也不太一樣,盡量修改的和僞裝目标一緻。
結束語:
當然,要想保證伺服器安全,這一點是遠遠不夠的,它隻能減小被攻擊成功的機率。
如果更深一些,僞裝成一個蜜罐子,來誘捕黑客,則不在本文的讨論範圍之内。