天天看點

建立virtual honeynet

作者:Etsh911<[email protected]>

整理:[email protected]

日期:2002-06-19

介紹

    Virtual Honeynet所需要的費用較低,但功能強大、易于管理。這篇文檔将盡量清晰地對建立Virtual Honeynet的過程進行描述,在開始之前,我們需要了解下面一些内容:

   何謂DCAP與DCON

    DCAP(Data CAPture--資料搜集)工具是指我們用來捕獲網絡中的資料流或者主機上的動作的系列工具。這些工具可能放置在Honeynet中的任何地方,用來搜集攻擊者的所有舉動。

    DCON(Data CONtrol--資料控制)工具是指我們用來限制網絡資源活動的裝置、系統或程式。譬如一個防火牆可以限制主機外發連接配接的數量,這就是資料控制。

    在本文檔中,象SNARE就是作為資料搜集工具工作的,而fwbuilder,則是資料控制工具。

   什麼是IDS

    IDS(Intrusion Detection Systems--入侵檢測系統)是用來發現并且減少風險的工具。

Danny Rozenblum有一篇關于IDS的經典文檔<Understanding Intrusion Detection Syste

ms>,可以參見http://www.sans.org/infosecFAQ/intrusion/understand.htm。

   Honeynet及其與Honeypot的差別

    Honeynet模拟出一個真實的網絡環境來捕獲并且研究入侵者的行為。而Honeypot隻是一台運作着模拟和記錄程式的一台單獨裝置(例如一台伺服器上運作着嗅探器、鍵盤記錄工具并且僞裝出部份存在脆弱性的服務),Lance Spitzner<[email protected]>對此有一些深入的分析,可以參見http://www.enteract.com/~lspitz/honeypot.html。

   OpenSSH

    OpenSSH是SSH的自由軟體版本,用于替代網際網路上以明文方式進行連接配接管理的telnet、rlogin、rsh、ftp等程式的,它對包括密碼在内的所有的通信進行加密,可以消除網絡中嗅探、連接配接劫持的危險。

   User-Mode-Linux

    User-Mode-Linux是一種相當于在安全模式下(使用者空間)運作Linux應用程式的工具,在測試有bug的程式、測試新核心或者在你的Linux中瞎折騰時,可以使用它以保護你系統的軟、硬體不受損壞。

    可以從http://sourceforge.net/projects/user-mode-linux/或者http://www3.informatik.unierlangen.de/Research/Projects/UMLinux/umlinux.html獲得User-Mode-Linux的最新版本進行測試。在Linux Magazine有一篇介紹性文字,可以參見http://www.linux-mag.com/2001-04/user_mode_01.html。

   Honeynet的優缺點

    優點在于:

    如果你的Honeynet存在于你真實的生産環境中,那麼多數攻擊者在入侵到你的真實系統前,會被Honeynet所吸引。

    通過一段時期的監控,能夠幫助建立更為準确有效的安全政策。

    Honeynet有助于學習應急響應的技能。當一台Honeynet的機器被入侵後,你必須從中找出入侵者留下的痕迹,而所有這一切技能都不可能靠憑空想象得來的。

    許多攻擊者把入侵行為當成一種挑戰,是以你可以将你的真實網絡環境另外鏡像一份放到防火牆之外供人攻擊,以此來考驗你的網絡配置的堅固程度。

    或者,你也可以把Honeynet當成學習入侵者的攻擊政策、方法、技能和工具的一種手段。

    缺點在于:

    你必須将你的Honeynet的管理者權限拱手讓給入侵者,最危險的事情在于,入侵者有可能會将你的Honeynet作為攻擊他人的跳闆,進而給Honeynet帶來麻煩。

    你必須小心謹慎地配置你的網絡,以避免在你Honeynet主機上取得最高權限的入侵者,通過一些配置或者程式上的漏洞突破Honeynet進入生産網絡。

    Honeynet有可能使你獲得一些錯誤的資訊,反而危害你系統的安全。(比如通過對Honynet的研究你認識到telnet明文傳輸通信是不安全的,決定用ssh來替代它,但你安裝了ssh1服務——但某些版本的ssh1存在嚴重安全漏洞可能導緻最高權限的喪失)

   Honeynet的類型

    Honeynet可以分為多種類型,由于篇幅所限,這裡僅讨論主要的兩種:

    傳統的Honeynet:

    傳統的Honeynet中的每個點采用的都是真實的主機系統,但這種方式由于費用高昂和管理困難這兩個弱點,現在不被推薦使用。很多這種類型的Honeynet都是由于費用和管理上的問題,在開始一段時間後無力維持而夭折了。

    虛拟Honeynet:

    虛拟Honeynet則是采用虛拟環境(由各種虛拟機之類的工具)構造出一個模拟真實生産狀态下的網絡,這樣可以在不喪失傳統Honeynet優勢的基礎上使配置、管理和費用下降

。Honeynet Project<http://project.honeynet.org/>的成員MikeClark<mike@honeynet

.org>有一篇很好的關于虛拟Honeynet的文檔,可以參見http://www.securityfocus.com/

infocus/1506

   注意要點

    Honeynet中的系統必須是基本的、盡量少修改的環境(至少不能讓入侵者察覺這是一個陷阱)

    如前面所說的,Honeynet的一個危險之處是必須防止入侵者利用它攻擊第三方,這可能有很多種實作方式,比如你可以簡單限制從Honeynet系統外發的連接配接數量。

    你的Honeynet最好要遵守由honeynet research alliance(Honeynet研究聯盟)在文章http://project.honeynet.org/alliance/requirements.html裡所涉及的一些定義、需求和标準。

預備

    部份工具是本文檔描述的Honeynet設定時需要使用的,這些工具如下:

    MySQL<http://www.mysql.com/>

    Snort<http://www.snort.org/>

    Eyes On Exec<http://www.cs.uni-potsdam.de/homepages/students/linuxer/ok.ht

ml>

    FireWall Builder<http://www.fwbuilder.org/http://sourceforge.net/projects

/fwbuilder/>

    OpenSSH<http://www.openssh.org/>

    Modular Syslog<http://freshmeat.net/projects/msyslog/?highlight=modular+sy

slog>

    SNARE<http://www.intersectalliance.com/projects/Snare/index.html>

    本文檔描述的Honeynet網絡結構如下:

                            InterNet(Attackers)

                                  +

                                  |

                   ----------------

                   +

                   |

    Honeynet     Real-System

       +                             +

       |                             |

      -------------------------------      -------------

      +        +          +         +      +           +

      |        |   |     |      |           |

     DNS     SMTP       HTTP      HTTPS   /log  LogServ+Snort

                                    |      |

                                    +------+

    Honeynet:ACCEPT to /log;ACCEPT to Internet

    Internet:DENY to Real-System

    Real-System:DENY to Internet

   建立主機

    安裝主機,這台機器将充當網關、防火牆和路由裝置。

   設定防火牆(第一層的DCON)

    安裝:

    cd /usr/local/downloads

    tar -zxvf fwbuilder-0.9.7.tar.gz

    cd fwbuilder-0.9.7

    ./configure

    make

    make install

    環境:

    fwbuilder安裝完畢之後,用一個GUI界面,這時你可以在其中建立下面這些對象。出于簡單考慮,firewall、snort和syslog都放在同一台真實主機上。

--------------------------------------------------------------------------------

|Name     |Type        |IP or Group items         |Description                 |

|Firewall |Workstation |10.10.10.1                |honeynet administrator      |

|Roxen    |Workstation |10.10.10.80               |running the Roxen webserver |

|DNS      |Workstation |10.10.10.53               |This is our DNS server      |

|Sendmail |Workstation |10.10.10.110              |This is our mailserver      |

|Apache   |Workstation |10.10.10.81               |webserver, vulnerabiliable  |

|honeynet |Group       |Roxen+DNS+Sendmail+Apache |These are our honeypots     |

[注]:這個honeynet沒有說明故意留下了哪些漏洞,不過看來是通過Apache能夠給使用者一個nobody shell,再使用EOE防止普通使用者成為root,這樣限制了攻擊者所能做的事。

    政策:

    所有主機都可以通過ssh或MYSQL連通"firewall"

    所有主機都可以連接配接到honeynet這個組

    honeynet允許連接配接到任意主機

    除了以上之外,所有的通信都被攔截

    所有防火牆允許通過的資料都記錄

    是以政策可以有下面四條:

    Num Source   Destination   Service        Action   Log

    00  any      Firewall      ssh or MySQL   Accept   Log

    01  any      honeynet      any            accept   log

    02  honeynet any           any            accept   log

    03  any      any           any            drop     log

   配置遠端日志伺服器

    安裝MYSQL:

    cd /usr/local/download

    tar xzf mysql-3.23.28-gamma-pc-linux-gnu-i686.tar.gz

    ln -s mysql-3.23.28-gamma-pc-linux-gnu-i686 mysql

    cd mysql

    mysql_install_db

    運作:

    cd /usr/local/mysql

    bin/safe_mysqld &

    設定密碼:

    bin/mysqladmin -u root password mypass

    建立snort和ssyslog的使用者并分别給他們對各自資料庫的INSERT, DELETE, USAGE, SELECT權限:

    echo CREATE DATABASE snort; | mysql -u root -pmypass

    echo CREATE DATABASE ssyslog; | mysql -u root -pmypass

    mysql -u root -pmypass

    mysql> grant INSERT,SELECT on snort.* to root@*;

    mysql> grant INSERT,SELECT on ssyslog.* to root@*;

    mysql> quit

    安裝msyslog-pre_1.08f.tar.gz

    tar -zxvf msyslog-pre_1.08f.tar.gz

    cd msyslog-pre_1.08f

    将msyslogd安裝完畢,将syslog.mysql.conf拷貝覆寫syslog.conf,将logserver改為msyslogd。

   入侵檢測系統(第二層的DCON)

    作為一個Honeynet,有大量的資料需要手工分析,IDS在這裡可以起到很大的幫助。但我們要安裝什麼類型的IDS呢?

    分類:

    主機型入侵檢測系統往往以系統日志、應用程式日志等作為資料源,當然也可以通過其他手段(如監督系統調用)從所在的主機收集資訊進行分析。主機型入侵檢測系統保護的一般是所在的系統。網絡型入侵檢測系統的資料源則是網絡上的資料包。往往将一台機子的網卡設于混雜模式(promisc mode),監聽所有本網段内的資料包并進行判斷。一般網絡型入侵檢測系統擔負着保護整個網段的任務。

    選用:

    因為我們是一個Honeynet,從我們的目的考慮,我們需要捕獲網絡及主機上的所有資訊。從這個意義上考慮,這時主機IDS的必要性不是非常明顯,是以我考慮使用某些工具,隻要能夠阻止使用者執行shell或者成為超級使用者就可以了。網絡層我則考慮使用snort作為

入侵檢測的記錄工具。

    主機IDS:Eye on Exec

    如我們上面所說的,Eye on Exec就是一個阻止使用者執行shell或者成為超級使用者的微型HIDS,它可以在發現這樣的企圖後報警,并且發送mail給系統管理者。

    tar -zxvf eoe-2.51.tar.gz

    cd EoE

    安裝完Eye on Exec後,我們可以編輯eoe.pl這份配置文檔(主要修改email位址即可)。

    網絡IDS:Snort

    由于Snort的安裝配置描述需要比較長的篇幅,這裡我推薦閱讀Richard La Bella<[email protected]>的文檔<HOWTO Build a Snort/ACID Console on Red Hat Linux >,可以在http://www.sfhn.net/whites/snortacid.html擷取。(此處連結已不可得,從google上搜得,放在http://xfocus.net/honeynet/other/snort_acid.html)。

    建議将snort配置為記錄所有連接配接情況,HoneynetProject提供了一份他們的snort.conf檔案,可以參考http://project.honeynet.org/papers/honeynet/snort.conf。

    之是以這麼做,有兩個原因:一是用snort充當了嗅探器的作用,不用再加載一個sniffer,這樣可以減輕系統負載;二是一旦snort沒有發現攻擊特征,我們還可以通過連接配接記錄的情況來發現入侵企圖。

   安全的遠端登陸:OpenSSH

    準備:

    OpenSSH的安裝還依賴于兩個軟體包,OpenSSL<http://www.openssl.org/>和zlibtp://www.gzip.org/zlib/>,你可以直接安裝其二進制格式,或者直接下載下傳源代碼,然後

用./configure&&make&&make install安裝。

    rpm -Uvh zlib.rpm

    rpm -Uvh openssl-0.9.6c.rpm

    rpm -Uvh openssh-3.0.2p1.rpm

    這時用ssh -V察看,會顯示出:

    OpenSSH_3.0.2p1, SSH protocols 1.5/2.0, OpenSSL 0x0090601f

    可能會有版本上的不同,但這無關緊要。

    配置:

    編輯/etc/ssh/sshd_config,将"#Protocol 2,1"改為"Protocol 2",還可以配置是否允許RSA key等等。

配置Virtual Honeynet

    虛拟Honeynet通常依靠某些模拟軟體,在一個作業系統上同時運作幾個虛拟的系統,這樣的軟體有如vmware<http://www.vmware.com/> Bochs<http://bochs.sourceforge.n

et/>, Plex86<http://www.plex86.org/>等,它們都可以在你真實的作業系統上模拟出一個虛拟系統來。但在使用一段時間之後,我發現它們存在着不同程度的問題,比如資源占用嚴重。于是我希望尋找一個軟體來實作在Linux中運作Linux的功能,于是我找到了User-Mode-Linux。

   建立核心

    你可以直接下載下傳User-Mode-Linux的二進制版本,但是,使用源代碼編譯無疑能給你更大的自由度,你可以對核心進行一些修改以更适合你的需要。

    從http://www.kernel.org/下載下傳核心,使用UML的patch對核心進行更新檔。

    cd /usr/local/downloads/linux

    tar -zxvf linux-2.4.15.tar.gz

    cd linux-2.4.15

    wget http://prdownloads.sourceforge.net/user-mode-linux/uml-patch-2.4.16-2

.bz2

    cat uml-patch-2.4.16.bz2 | bunzip2 - |patch -p1

    然後你可以用你喜歡的方式編譯核心了,隻是記得加上"ARCH=um",比如你用make xconfig,現在就需要用make xfocus ARCH=um,然後"make dep ARCH=um" 、"make linux ARCH=um", 編譯完成後你會得到一個名為"linux"的可執行檔案。

    你還必須下載下傳或者自己建立root file system檔案,并以之作為UML的啟動參數。可以在http://sourceforge.net/project/showfiles.php?group_id=429&release_id=51115下載下傳。可以在一台真實的機器上用不同的root file system來啟動UML。

    "ubdx=file" 表示在/dev/ubx的虛拟磁盤,另外還需要建立一個swap區。

    "umn=address" 表示IP位址,如果你沒有輸入這一參數,則預設的IP位址是192.168.

0.253,預設的子網路遮罩是255.255.255.0, 你也可以用ifconfig指令來修改它。

    "eth0=mcast" 告訴真實(實體的)系統使用第一塊以太網卡作為多點傳播裝置。

    更多選項的意義可以參見User Mode Linux HOWTO<>。

    為了更好地使用UML的網絡性能,你可能還需要uml_switch和uml_net工具,也可以從UML的首頁擷取并編譯。

   啟動虛拟系統

    現在可以用如下指令啟動虛拟系統

    linux ubd0=root_fs.rh72.pristine.bz2 ubd1=swap eth0=mcast umn=10.10.10.50

    以root登陸系統,密碼為空,然後你可以對你的虛拟系統進行配置了。這裡并不打算探讨如何安裝配置Apache、DNS、Sendmail和Roxen,從它們的文檔中可以得到詳細的幫助。當然,作為honeynet,你可以将日志記錄等級設為最高。

    當然在虛拟系統中你可能會遇到一些問題,推薦閱讀UML的HOWTO文檔中networking部份。現在我們的整個Honeynet就算基本可以工作了。

陷阱

   Ssyslog

    前面我們提到過将syslog更改并且将日志發送到MYSQL中,現在我們再做一次同樣的工作,隻是這次我們是在虛拟的機器中這麼做,日志仍然發送到真實(實體的)機器上的MYSQL資料庫中。

   Snare

    Snare可以被看作是一個用來進行審計工作的核心級的HIDS,它有一個配置項,可以簡單地使你的計算機達到C2級的标準。

    rpm --install snare-core-0.8-1.i386.rpm snare-0.8-1.i386.rpm

    也可以從源代碼安裝,建議先閱讀snare的文檔http://www.intersectalliance.com/

projects/Snare/Documentation/index.html#SNARE_Installation。

    在UML下,沒有必要運作X,是以Snare的GUI界面可能用處不大,你可以簡單編輯 /et

c/audit/audit.conf檔案,http://www.intersectalliance.com/projects/Snare/Docume

ntation/index.html#AnnexC是Snare配置項的說明文字可供參考。

    你也可以配置Snare将日志存放于遠端伺服器上,這裡可以存放在我們的真實(實體的)機器上,或者我們可以設定嚴格的ACL來管理日志,或者隻允許日志以appen only形式存

在。http://www.grsecurity.net/有一個很好的ACL工具,但你必須在建立UML前先patch上。最後,必須用ln -s /etc/init.d/auditd /etc/rc.d/rc3/S90audit指令讓Snare在啟動時運作。

    Snare沒有記錄可加載核心子產品的加載,但可加載核心子產品可能帶來很大的安全風險,可以參見附件A,是以在附件B中有一個核心patch,能夠對子產品的加載進行記錄。

附件

   Appendix A: Situations - Loadable Kernel Modules (LKMs)

     http://www.securitywriters.org/texts/internetsecurity/Virtual_HoneyNet_files/LKM.php

   Appendix B: Kernel patch for detecting and logging LKM loading

     http://www.securitywriters.org/texts/internetsecurity/Virtual_HoneyNet_files/module.patch

   Appendix C: Modified rc.firewall to block outgoing DDoS attacks

     http://www.securitywriters.org/texts/internetsecurity/Virtual_HoneyNet_files/rc.firewall

   Appendix D: Port-Scand

     http://www.securitywriters.org/texts/internetsecurity/Virtual_HoneyNet_files/detect1.txt

繼續閱讀