荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: hellsolaris (qq), 信区: Security
标  题: Virtual Honeynet
发信站: 荔园晨风BBS站 (Sun Oct 19 19:59:20 2003), 站内信件



http://xfocus.net/honeynet/papers/virtual/virtualhoneynet.html


Virtual Honeynet
by Michael Clark
最后更新于2001年11月7日
译:scn<安全焦点>
honeynets
honeynet是用于研究网络入侵者在入侵系统时是如何选择目标、采用什么样的方法和工
具入侵的一个工具。honeynet是由多个网络产品组成的、故意设计存在一定的安全缺陷
。honeynet与上面所提到的honeypot不同。honeypot通常是在一台机器上实现,一般的
实现方法是通过在普通主机上安装特殊的软件如The Deception Toolkit(DTK)或者是Sp
ecter。honeynet是由多个计算机组成的网络,通常组成honeypot的有:
一台安装了防火墙的计算机,用于将所有网络上的进出连接记如日志,并提供NAT服务以
及提供对某些拒绝服务攻击的保护。
一台安装了入侵检测系统的计算机,但入侵检测系统应该是一台完全独立的计算机并且
能检测到网络上的所有流量。入侵检测系统用于记录所有网络传输的数据并寻找其中是
否有已知的攻击或者发生。
一台远程日志计算机,对honeypot来说,攻击者如果能控制系统就能通过命令删除系统
日志,而honeynet将系统日志发送到远端服务器上保存,加强了对日志的保护。
honeypot本身,我们的honeypot可以是任何缺省安装的系统,例如一个缺省安装的红帽
6.2操作系统。设置好honeypot之后,我们尽可能对系统进行修改,以确保系统不会被入
侵者发现这是一个honeynet.
honeynet是一个很有价值的研究工具,能增长我们的见识和知识。通过对入侵者采用的
方法的研究和分析,我们能更好的为将来服务。从honeynet上收集到的信息能很分析出
攻击的趋势,从honeynet收集来的信息也可以用来教育人们。实际上,有了从honeynet
上收集到信息的分析结果,其他系统的管理员才知道在它在自己的系统上的信息中需要
找什么。honeynet能告诉用户那种攻击正进入他们的网络。
图一 典型的honeynet环境
VMware
VMware是一个允许你在一台计算机上安装其他"虚拟机器"的软件,所以,如果你有一个
安装了linux系统的计算机,你不仅能在这个计算机上运行linux系统,也能在linux系统
上运行windows NT系统。与多重启动的方式相比,你可以在一台计算机上同时运行两个
不同的操作系统。安装VMware的操作系统被称为HostOS,安装在虚拟计算机上的操作系
统被称为GuestOS,你可以同时运行多个虚拟计算机。
这种方式与网络有几点不同,首先这是桥状网络,桥状网络允许GuestOS直接连接到网络
中。这就意味着GuestOS看起来就和网络中其他的计算机一样,没有区别。使用这个这种
方式构建一个honeynet当然有不利的条件。使用GuestOS,用户无法很容易或者很简单的
对网络中传输的流量进行过滤和记录。按照honeypot project的论文Know Your Enemy:
 Honeynets 中的说法,对流量进行过滤和记录是非常重要的。
其次,这个网络上只有一个主机,使用一个主机来构建一个honeynet是一个好的选择,
它强制GuestOS必须通过HostOS来连接到网络,而安装一个主机上防火墙的防火墙非常简
单,这个在本文后面会有相应的讨论。
非常重要的一点是必须配置VMware不允许GuestOS访问HostOS的文件系统。这样作的目的
是为了确保安全,即使我们的honeypot被攻击者成功控制,也不会威胁了HostOS的安全
。如果HostOS都已经处在危险中,就有可能威胁到整个honeynet的完整性了。
对于一个私有网络。我总是喜欢使用192.168.224.0这样的网段。没有什么特殊原因这只
是你的选择而已。这时一个私有地址空间,你不过是用来安装你的GuestOS而已。
在安装VMware时,往往使用配置向导来安装你的虚拟计算机。当安装向导问应该使用什
么类型的磁盘系统时,我总是选择使用虚拟磁盘。这种方法对我来说比较简单,你需要
让VMs连接到你的软盘驱动器让你能从软盘启动,如果你需要从一个CD来安装你的操作系
统,那就让你的VMs连接访问你的CD-rom驱动器吧。如果你象我一样从网络安装,那么你
就根本不需要让它连接到你的CD驱动器。
当你安装你的虚拟计算机时,内存分配也是非常重要的,如果你打算安装超过一个以上
的虚拟计算机,我建议你的机器有256MB以上的内存。分配尽可能多的物理内存给VMs使
用,我通常给VM使用的内存是2GB .
当问你网络如何设置的问题时,你一定要选择host-only网络这种模式。安装完VMware,
就该安装GuestOS了。
我现在安装的是VMware 2.0.4 linux工作站版,我的HostOS是Redhat7.1。我在VM上的还
运行了一个redhar7.1来作为我的honeypot,因为我只有一台机器,所以我没有传统hon
eynet那样用于记录honeypot日志的远程日志主机。至于防火墙,我起初使用IPtables,
最近我开始实验一个新工具叫Hogwash。
GuestOS-honeypot
在前面已经说到,我选择redhat 7.1来构建我得honeypot因为这是一个新的发现版并且
能很好的捕获一些新的攻击。在安装时,我选择的时"SERVER"安装模式,这样会安装很
多的普通服务程序。
安装的过程中,honeypot需要配置网络,IP地址应该是静态的,不要使用DHCP.我给hon
eypot使用的IP是192.168.224.2。配置完后,你的/etc/sysconfig/network-scripts/i
fcfg-eth0中应该可以看到下面这样的内容。
BOOTPROTO=static
IPADDR=192.168.224.2
NETMASK=255.255.255.0
网络配置完成后,BASH(一个常用的shell程序)应该用我们修改后的新版本文件替换旧
文件以确保所有运行的命令都被记入系统日志。这个补丁可在这里找到。这个补丁安装
比较麻烦。它只能在bash 2.03以上的版本中工作。所以你必须在rpm的源文件中找到这
个版本。大部分的你所能找到的rpms都有一些其他的补丁。(你可以在SPEC文件中找到
)。不用安装这些其他的补丁。我会很快放上这些rpm(二进制文件或源程序)。
用新的bash替换旧的bash后,利用symlinks将其他的shell替换成bash.我们并不希望入
侵者更换shell使我们丢失大量的数据。接着,安装系统记帐以实现远程日志的功能。这
个工作可通过编辑/etc/syslog.conf 并添加下面的内容来实现。
*.info;mail.none;authpriv.none;cron.none @<IP of remote syslog server>
authpriv.* @<IP of remote syslog server>
为了使修改起作用,重新启动syslog。
这对一个honeypot是非常好的做法。其他的都一样,但记得启动你在honeynet需要的软
件。在redhat 7.1zhong ,很多的这些应用程序都被关闭了。我推荐启动SSH以使得你在
需要时能连接到远程计算机。
GuestOS-Remote Syslog Server
当安装一个远程日志服务器时,你应该需要一个定制安装。这是因为你安装这个计算机
只是为实现一个功能,能接收到你的honeynet的发送的远程系统日志消息并让它远程连
接的系统,注意选择你需要安装的包,我想你应该不需要安装一个X。
其他部分,网络设置和honeypot一样,只是IP不同。(例如使用192.168.224.3这样的IP
)
安装完系统日志,为了能听到发送过来的系统记帐消息,用下面的命令重新启动系统记
帐服务:
syslogd -m 0 -r 你可以检查一下它是否正常工作,利用honeypot进行测试,确认它是
否在监听514端口。(netstat -tupan)
如果服务收到了从honeypot过来的消息,就会尝试查找消息的来源名称。这可能导致比
较严重的问题。我们可以将下面的内容添加到
/etc/hosts
192.168.224.2 Honeypot
这就会使它不需要查询名字服务器就可以知道消息的来源。
在远程记帐服务器上需要开启的端口使22(SSH)和514(syslog).
IDS应该能听到从honeypot到syslog的通讯,这就使得你在syslog服务器处于危险的时候
能获得syslog信息。对远程日志如果器来说这个方案也是比较不错的。
图二 一个honeynet示例
IPtables
Iptables 是延续自IPchains,用IPtables构建honeynet有IPchains不具备的几点好处。
一、这是一个正式的防火墙,它能让我们在连接建立时设置警报。这样,当有人建立起
连接。我们就可以建立一个规则去标记这个一个新的连接。IPtables也支持限制,这意
味着我们可以每小时只允许5个连接从honeypor连出去。这是一个很好的应付拒绝服务攻
击和扫描的方法。
在选择VMware使用host-only网络选项后,我就打算安装网络地址解析(NAT)这样GuestO
S也能连接倒internet上。首先我们必须在HostOS上进行IP别名映射。
Ifconfig eth0:1 <public IP> netmask <netmask> up
接着我们需要设置我们的防火墙脚本,我之所以这么作的原因是为了使HostOS有自己的
IP,这样,我就可以与HostOS进行沟通而不需要通过什么其他的端口了。必须注意倒,
远程日志服务器不需要通过NAT来连接倒HostOS而是通过一个ssh端口来连接。既然这样
,我就使用端口24连接倒远程日志服务器。其实根本没有必要能与internet通讯,下面
就是一个设置NAT的例子。
#!/bin/sh
#Flush the tables
/sbin/iptables -F
/sbin/iptables -F -t nat
#1 to 1 NAT
/sbin/iptables -t nat -A PREROUTING -d <IP alias IP> -j DNAT --to-destinatio
n <HONEYPOT IP>
/sbin/iptables -t nat -A POSTROUTING -s <HONEYPOT IP> -j SNAT --to-source <I
P alias IP>
#Forward ssh to the remote syslog server
/sbin/iptables -t nat -A PREROUTING -I eth0 -p tcp -dport 24 -j DNAT -to-des
tination <IP of remote syslog server>
echo 1 > /proc/sys/net/ipv4/ip_forward
现在,NAT应该已经配置好了,如果他没有工作,你应该检查你的路由。日志是我们下一
个需要进行设置的。如果你打算对任何事都记入日志,下面的Iptables的规则就能实现

/sbin/iptables --table mangle --append PREROUTING -i eth0 --jump LOG --log-l
evel 6 --log-prefix "IN: "
/sbin/iptables --table mangle --append PREROUTING -i vmnet1 --jump LOG --log
-level 6 --log-prefix "OUT: "
为了获得更好的报警能力,我们许要标记所有新的进入的连接。下面的脚本能获得这些
标记并通知我们。下面就是Iptables标记记录新的连接的脚本:
/sbin/iptables -t mangle -A PREROUTING -i vmnet1 -m state --state NEW -jLOG
--log-level 6 --log-prefix "OUTBOUND: "
/sbin/iptables -t mangle -A PREROUTING -i eth0 -d <IP alias IP>state --state
 NEW -jLOG --log-level 6 --log-prefix
"INBOUND: "
另一个问题是,IPtables能限制流量,这使得我们能确保攻击者无法利用我们的honeyp
ot去对其他计算机发动拒绝服务攻击。这个规则虽然简单,不过很有效:
/sbin/iptables -t mangle -A PREROUTING -p tcp -m state --state ESTABLISHED,R
ELATED -i vmnet1 -s <GuestOS IP> -j ACCEPT
/sbin/iptables -t mangle -A PREROUTING -p tcp --syn -m limit --limit 20/h -i
 vmnet1 -s <GuestOS IP> -j ACCEPT
/sbin/iptables -t mangle -A PREROUTING -p tcp -i vmnet1 -s <GuestOS IP> -j D
ROP
现在,防火墙被配置好了,现在我们可以好好查看日志,看看可以在日志中发现那种类
型的通信,阻塞掉正常的无用的通信。
snort
snort是一个非常好的用在我们的honeynet上的入侵检测系统,snort有非常好的适应性
和强大的功能。一个极好的在snort配置方案可以在honeynet project的论文Know Your
 Enemy: Honeynets上找到。这也是我所使用的设置。运行snort,我用下面的命令:
snort -b -D -c /root/snort/snortconf -i vmnet1 -l /var/log/snort
Alerting
为了在有恶意的行为时能通知我,我自己写了几个perl的脚本。这时其中的三个:一个
检测进入的连接,一个检测向外的连接,最后一个监测snort的日志。当他们发现新东西
时,都会给我发e_mail。监视向外的连接的脚本在发现一些其他的东西的时候也会给我
e_mail,因为这的确值得关注。当报警来的时候,总有一些比较重要的事值得重视。
删除或者控制你收到的警报的数量。你不希望你的邮箱或者你的web消息空间被耗尽吧(
一个比较可靠的方法是打电话给服务提供商)。我设置了根据时间和数量自动删除邮件。
我总是每几分钟就收到一份警报。对于向外连接的警报,我根据时间删除并限制警报的
能发送过来的最大数量因为这时就该打一个私人电话了。
脚本必须知道到什么情况就不给我发警报了,实际上,当看到一个向外的DNS的请求时,
脚本是不会发送警报的。也许看起来有人正扫描你,可原因是honeypot正尝试解析名称
。被半夜3:00叫醒总不会让人高兴的。
VMware honeynets的优势和劣势
一个用VMware构建的honeynet与传统的honeynet相比,有着明显的优势,下面几点就是

便宜,它只需要一台计算机,并且最主要的费用是Vmware的费用
简单,它非常容易操作,对于用户来说只用管理一套硬件
灵活:用户可以同时在计算机上很 容易的运行NT和linux的honeypot
高效:能更有效的使用硬盘空间,并且只需要一根网线。
VMware honeynet也有自己的劣势
不允许有一点问题出现,如果HostOS有一个硬件出现问题,将使得整个honeynet完全无
法工作。
只允许一定数量的虚拟机器同时运行,这个数量依赖与可用内存的大小。
将来
我正在工作的项目是使用一个叫hogwash的工具来替代iptables,hogwash是一个由两部
分组成的东西,这意味着它象一个桥,它获得数据包是一个界面,然后将数据包传给另
一个部分处理。
让我感觉hogwash比较特殊的是它能在路由中丢弃和改变一个包,并且使用snort来进行
信号匹配引擎。使用honeynet的最大风险是honeypot可能会被用来攻击外部的计算机。
阻断所有的向外的连接是一种解决方法,但是这会使得攻击这无法从外部获得他需要的
工具。而hogwash,如果攻击者打算向外部主机发送一个exploit代码,hogwash能发现并
丢弃一些特殊的包。一个例子就是IIS的unicode漏洞。hogwash能使用无害的字符替换u
nicode字符。使得exploit失效。一旦我将hogwash安装完成,我会写一篇关于使用hogw
ash构建honeynet的文章。
结论
VMware是一个很强大的工具,能用于开发出一个有影响力的honeynet.过去需要使用三个
或2四个单独的机器来组成一个honeynet,现在只需要一台就行了。在VMware上运行一个
honeynet比使用四个单独的机器要廉价的多。并且能节省空间。你需要记住,这样做的
风险就是将你的所有鸡蛋放在一个篮里,不过这样做是值得的。
最后,我还没有发现有任何人突破一个虚拟honeynet进入HostOS,同样,在VNware hon
eynet上使用另一层来监视也是一个好办法。因为有人提出了如何实现这样的轮廓。我很
期望能记录下他是如何做的。
相关连接
The Value of Honeypots by Lance Spitzner, SecurityFocus
Securing an Unpatchable Web Server…Hogwash! by Jed Haile and Jason Larsen,
SecurityFocus
Honeynet Project
VMware
Snort
译者注:由于译者英语水平和对honeynet理解都存在问题,文中用不少地方意思的不是
理解的很清楚,译者的理解与原文的意思可能存在出入,如果想深刻理解文中精髓,请
从这里看原文。

--
       梦里不知身是客


※ 来源:·交大兵马俑BBS站 bbs.xjtu.edu.cn·[FROM: pupil]

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.44.223]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店